数据分析从0到1----Matplotlib篇(三)

简介: 数据分析从0到1----Matplotlib篇

直方图 hist

直方图(Histogram),又称质量分布图,它是一种条形图的一种,由一系列高度不等的纵向线段来表示数据分布的情况。直方图的横轴表示数据类型,纵轴表示分布情况。

首先,我们需要了解柱状图和直方图的区别。直方图用于概率分布,它显示了一组数值序列在给定的数值范围内出现的概率,其x轴是连续的;而柱状图则用于展示各个类别的频数。

plt. hist(x, bins=None,range=None,density=None,weights=None,cumulative=False, bottom=None,histtype=' bar',aligne'mid', orientation='vertical',rwidth=None,log=False,color=None,label=None,stacked=False,normed=None,*, data=None,**kwargs)

  • x:作直方图所要用的数据,必须是一维数组;多维数组可以先进行扁平化再作图;必选参数
  • bins:直方图的柱数,即要分的组数,默认为10;
  • weights与x形状相同的权重数组;将x中的每个元素乘以对应权重值再计数;如果normed或density取值为True,则会对权重进行归一化处理。这个参数可用于绘制已合并的数据的直方图;
  • density:布尔,可选。如果"True"”,返回元组的第一个元素将会将计数标准化以形成一个概率密度,也就是说,直方图下的面积(或积分)总和为1。这是通过将计数除以数字的数量来实现的观察乘以箱子的宽度而不是除以总数数量的观察。如果叠加也是“真实”的,那么柱状图被规范化为1。(替代normed)
  • bottom:数组,标量值或None;每个柱子底部相对于y=0的位置。如果是标量值,则每个柱子相对于y=0向上/向下的偏移量相同。如果是数组,则根据数组元素取值移动对应的柱子;即直方图上下便宜距离;
  • histtype: {‘bar’, barstacked’, ‘step’, 'stepfiled}; bar’是传统的条形直方图; ‘barstacked’是堆叠的条形直方图; ‘step’是未填充的条形直方图,只有外边框; ‘stepfilled’是有填充的直方图;当histtype取值为’step或’steprilled’,width设置失效,即不能指定柱子之间的间隔,默认连接在一起;
  • align:{‘left’, ‘mid , right}; "left’:柱子的中心位于bins的左边缘;'mid ': 柱子位于bins左右边缘之间;'right: 柱子的中心位于bins的右边缘;
  • color:具体颜色,数组(元素为颜色)或None。
  • label:字符串(序列)或None;有多个数据集时,用label参数做标注区分;
  • normed:是否将得到的直方图向量归一化,即显示占比,默认为0,不归一化;不推荐使用
    建议改用density参数;
  • edgecolor:直方图边框颜色;
  • alpha:透明度;
x = np.random.randint(50,101,100)
plt.xticks(np.arange(50,101,5))
plt.hist(x,bins=10,edgecolor='white')

同时直方图函数拥有返回值

  • n:数组或数组列表
    直方图的值
  • bins:数组
    返回各个bin的区间范围
  • patches : 返回每个bin里面包含的数据,是一个list
n,bins,patches = plt.hist(x,bins=10,edgecolor='white')
print('n是分组区间对应的频率',n,end='\n')
print('bins是分组时的间隔值',bins,end='\n')
print('patches是值直方图中列表对象',type(patches),end='\n')
for i in patches:
    print(i)
    print(i.get_x())
    print(i.get_y())
    print(i.get_height())

饼状图 pie

pyplot.pie(x,explode=None,labels=None,colors=None,autopct=None)

饼状图用来显示一个数据系列,具体来说,饼状图显示一个数据系列中各项目的占项目总和的百分比.

Matplotlib 提供了一个pie()函数,该函数可以生成数组中数据的饼状图。您可使用xlsum(x)来计算各个扇形区域占饼图总和的百分比。pie()函数的参数说明如下:

  • x:数组序列,数组元素对应扇形区域的数量大小。
  • labels:列表字符串序列,为每个扇形区域备注一个标签名字
  • colors;为每个扇形区域设置颜色,默认按照颜色周期自动设置。
  • autopct:格式化字符串"fmt%pct",使用百分比的格式设置每个扇形区的标签,并将其放置在扇形区内。
  • pctdistance:设置百分比标签与圆心的距离;
  • labeldistance:设置各扇形标签(图例)与圆心的距离;
  • explode:指定饼图某些部分的突出显示,即呈现爆炸式;
  • shadow:是否添加饼图的阴影效果
plt.rcParams['figure.figsize']=(5,5)
labels=['吃饭','睡觉','学习','打游戏'] # 数据标签
x = [100,200,300,400] # 数据占比
explode = [0.1,0,0,0] # 设置离圆心的距离
plt.pie(x,labels=labels,autopct='%.2f%%',explode=explode,labeldistance=1.2,pctdistance=1.05)
plt.axis('equal') # 设置图形为正圆
plt.legend() # 开启图例

散点图scatter

matplotlib.pyplot.scatter(x,y, s=None, c=None, marker=None,cmap=None, norm=None,

vmin=None,vmax=None, alpha=None, linewidths=None, , edgecolors=None, plotnonfinite=Falsedata=None,*kwargs)

散点图也叫X-Y图,它将所有的数据以点的形式展现在直角坐标系上,以显示变量之间的相互影响程度,点的位置由变量的数值决定。

通过观察散点图上数据点的分布情况,我们可以推断出变量间的相关性。如果变量之间不存在相互关系,那么在散点图上就会表现为随机分布的离散的点,如果存在某种相关性,那么大部分的数据点就会相对密集并以某种趋势呈现。

数据的相关关系主要分为:正相关(两个变量值同时增长)、负相关(一个变量值增加另一个变量值下降)、不相关、线性相关、指数相关等,表现在散点图上的大致分布如下图所示。那些离点集群较远的点我们称为离群点或者异常点。

  • x,y→散点的坐标
  • s→散点的面积
  • c→散点的颜色(默认值为蓝色,‘b’,其余颜色同plt.plot( ))
  • marker →散点样式(默认值为实心圆, ‘o’,其余样式同plt.plot( ))
  • alpha→散点透明度([0,1]之间的数,0表示完全透明,1则表示完全不透明)
  • linewidths→散点的边缘线宽
  • edgecolors→散点的边缘颜色
  • cmap →Colormap,默认None,标量或者是一个colormap的名字,只有c是一个浮点数数组的时才使用

cmap讲解

plt.figure(figsize=(2,2))
x = np.array([1,2,3,4,5,6])
y = [1,2,3,4,5,6]
s=np.array([1,2,3,4,5,6])
# plt.scatter(x,y,s=s**2,alpha=0.9,c=np.random.randint(90,100,6))
plt.scatter(np.random.rand(100),np.random.rand(100),cmap='Blues',c=np.random.rand(100))
# plt.plot(x,y)

箱线图boxplot

**matploti.pyplot.boxplot(x, notch=None, sym=None, ert=None, whis=None, postions=None, widths=None,patch_artist=None,bootstrap=None,usermedians=None,conf_intervals=None, meanline=None, showmeans=None, showcaps=None,showbox=None,showiers=None, boxprops=None,labels=None, fierprops=None, medianprops=None, meanprops=None, capprops=None, whiskerprops=None,** manage_ticks=Ture,autorange=False,zorder=None, *, data=None)

箱线图(Boxplot)是一种用作显示一组数据分散情况资料的统计图表

箱线图,又称箱形图(boxplot)或盒式图,不同于一般的折线图、柱状图或饼图等图表,其包含一些统计学的均值、分位数、极值等统计量,该图信息量较大,不仅能够分析不同类别数据平均水平差异,还能揭示数据间离散程度、异常值、分布差异等。

  • x:输入数据。类型为数组或向量序列。必备参数。
  • notch:控制箱体中央是否有V型凹槽。当取值为True时,箱体中央有V型凹槽,凹槽表示中位数的置信区间;取值为Fase时,箱体为矩形。类型为布尔值,默认值为False。可选参数。
  • vert: 箱体的方向,当取值为True时,绘制垂直箱体,当取值为False时,绘制水平箱体。类型为布尔值,默认值为True。可选参数
  • positions:指定箱体的位置。刻度和极值会自动匹配箱体位置。类型为类数组结构。可选参数。默认值为range(1,N+1),N方为箱线图的个数
  • widths:箱体的宽度。类型为浮点数或类数组结构。默认值为0.5或0.15*极值间的距离。
  • labels:每个数据集的标签,默认值为’None’。类型为序列。可选参数。
  • autorange:类型为布尔值,默认值为False。可选参数。当取值为True且数据分布满足上四分位数(75%)和下四分位数(25%)
  • showmeans:是否显示算术平均值。类型为布尔值,默认值为False。可选参数。
  • meanline:均值显示为线还是点。类型为布尔值,默认值为False。可选参数。当取值为True,且showmeans、
    shownotches参数均为Tue,时显示为线
  • capprops:箱须横杠的样式。类型为字典,默认值为None。可选参数。
  • boxprops:箱体的样式。类型为字典,默认值为None。可选参数
  • whiskerprops:箱须的样式。类型为字典,默认值为None。可选参数。
  • flierprops:离群点的样式。类型为字典,默认值为None。可选参数。
  • medianprops:中位数的样式。类型为字典,默认值为None。可选参数。
  • meanprops:算术平均值的样式。类型为字典,默认值为None。可选参数。

图片保存

savefig(fname,dpi=None, facecolor=' w', edgecolor='w' , orientation=’portrait’,papertype=None,format=None,transparent=False, bbox_inches=None,pad_inches=0.1,frameon=None,metadata=None)

  • fname:(字符串或者仿路径或仿文件)如果格式已经设置,这将决定输出的格式并将文件按fname来保存。如果格式没有设置,在fname有扩展名的情况下推断按此保存,没有扩展名将按照黑人格式存储为“png"格式,并将适当的扩展名添加在fname后面。
  • dpi:分辨率,每英寸的点数
  • facecolor(颜色或" auto”,默认值是“auto")︰图形表面颜色。如果是“auto”,使用当前图形的表面颜色。
  • edgecolor(颜色或" auto”,默认值: “auto"):图形边缘颜色。如果是“auto”,使用当前图形的边缘颜色。
  • format(字符串)︰文件格式,比如"png",“pdf",“svg"等,未设置的行为将被记录在fname中。
  • transparent:用于将图片背景设置为透明。图形也会是透明,除非通过关键字参数指定了表面颜色和/或边缘

特别主意:

第一个参数frame就是保存的路径,如果路径中包含未创建的文件夹就会报错,该方法只能用来创建文件,不会自动创建文件夹.同时,该方法必须要在show方法调用之前执行

plt.figure(figsize=(2,2))
x = np.array([1,2,3,4,5,6])
y = [1,2,3,4,5,6]
s=np.array([1,2,3,4,5,6])
plt.scatter(np.random.rand(100),np.random.rand(100),cmap='Blues',c=np.random.rand(100))
plt.savefig('photo.png') # savefig方法必须写在show方法前面
plt.show()

x = np.random.rand(20)
plt.boxplot(x,showmeans=True,meanline=True)
plt.grid()
plt.show()

词云图

wordcloud

wordcloud用于进行词云图的绘制

首先需要进行安装,方式为pip/conda install jieba

from wordcloud import WordCloud
with open('./learn/test.txt',encoding='utf-8') as file:
    txt = file.read()
    # 如果数据文件中包含中文,那么font_path必须指定字体,否则中文会乱码
    wordcloud = WordCloud(font_path = 'C:/Windows/Fonts/simfang.ttf',
                         collocations=False,background_color='black',
                         width=800,
                         height=600,
                         max_words=50).generate(txt)
    # 生成图片
    image = wordcloud.to_image()
    # 展示图片
    image.show()
    # 写入文件
    wordcloud.to_file('./wordcloud.jpg')

jieba

jieba用于进行分词

如果没有安装,那么可以通过pip/conda install jieba进行安装

import jieba # 导入jieba进行分词
seg_list = jieba.cut('我来自东北呀,你来自哪里',cut_all=True)
print('全模式  '+'  '.join(seg_list))
seg_list = jieba.cut('我来自东北亚,你来自哪里',cut_all=False)
print('精确模式  '+'  '.join(seg_list))

txt = '我来自东北呀,是个美丽的地方,其实我来自福建,我喜欢玩尬的'
jieba_list = jieba.cut(txt)
txt_list = "  ".join(jieba_list)
# 如果数据文件中包含中文,那么font_path必须指定字体,否则中文会乱码
wordcloud = WordCloud(font_path = 'C:/Windows/Fonts/simfang.ttf',
                     collocations=False,background_color='black',
                     width=800,
                     height=600,
                     max_words=50).generate(txt_list)
# 生成图片
image = wordcloud.to_image()
# 展示图片
image.show()
# 写入文件
wordcloud.to_file('./jieba.jpg')

jieba.analyse

作用为提取关键字

  • 第一个参数:待提取关键词的文本
  • 第二个参数 topK:返回关键词的数量,重要性从高到低排序
  • 第三个参数withWeight:是否同时返回每个关键词的权重
  • 第四个参数allowPOS=():词性过滤,为空表示不过滤,若提供则仅返回符合词性要求的关键词,查看:jieba词性表.txt
import jieba
import jieba.analyse
text = '真的编不出什么话了,但是如果你认为本文有用的话请点赞吧,球球了,好的,非常感谢你,中国软件开发社区'
set_list = jieba.analyse.extract_tags(text,allowPOS=('n'))
print(str(set_list))
txt = "  ".join(set_list)
# 如果数据文件中包含中文,那么font_path必须指定字体,否则中文会乱码
wordcloud = WordCloud(font_path = 'C:/Windows/Fonts/simfang.ttf',
                     collocations=False,background_color='black',
                     width=800,
                     height=600,
                     max_words=50).generate(txt) # 要求传入一段话
# 生成图片
image = wordcloud.to_image()
# 展示图片
image.show()
# 写入文件
wordcloud.to_file('./jieba.jpg')

报错解决

x.label调用出现TypeError: ‘str’ object is not callable

中文显示错误以及负号无法显示

考核

试用matplotlib绘制笛卡尔♥型曲线

笛卡尔♥型曲线

相关文章
|
9天前
|
数据可视化 数据挖掘 Linux
震撼发布!Python数据分析师必学,Matplotlib与Seaborn数据可视化实战全攻略!
在数据科学领域,数据可视化是连接数据与洞察的桥梁,能让复杂的关系变得直观。本文通过实战案例,介绍Python数据分析师必备的Matplotlib与Seaborn两大可视化工具。首先,通过Matplotlib绘制基本折线图;接着,使用Seaborn绘制统计分布图;最后,结合两者在同一图表中展示数据分布与趋势,帮助你提升数据可视化技能,更好地讲述数据故事。
22 1
|
2月前
|
数据采集 数据可视化 数据挖掘
数据分析大神养成记:Python+Pandas+Matplotlib助你飞跃!
在数字化时代,数据分析至关重要,而Python凭借其强大的数据处理能力和丰富的库支持,已成为该领域的首选工具。Python作为基石,提供简洁语法和全面功能,适用于从数据预处理到高级分析的各种任务。Pandas库则像是神兵利器,其DataFrame结构让表格型数据的处理变得简单高效,支持数据的增删改查及复杂变换。配合Matplotlib这一数据可视化的魔法棒,能以直观图表展现数据分析结果。掌握这三大神器,你也能成为数据分析领域的高手!
48 2
|
9天前
|
存储 数据可视化 数据挖掘
揭秘!Matplotlib与Seaborn联手,如何让Python数据分析结果一目了然,惊艳全场?
在数据驱动时代,高效直观地展示分析结果至关重要。Python中的Matplotlib与Seaborn是两大可视化工具,结合使用可生成美观且具洞察力的图表。本文通过分析某电商平台的商品销量数据集,展示了如何利用这两个库揭示商品类别与月份间的销售关系及价格对销量的影响。首先使用Matplotlib绘制月份销量分布直方图,再借助Seaborn的箱线图进一步探索不同类别和价格区间下的销量稳定性。
37 10
|
9天前
|
机器学习/深度学习 数据可视化 数据挖掘
数据可视化大不同!Python数据分析与机器学习中的Matplotlib、Seaborn应用新视角!
在数据科学与机器学习领域,数据可视化是理解数据和优化模型的关键。Python凭借其强大的可视化库Matplotlib和Seaborn成为首选语言。本文通过分析一份包含房屋面积、卧室数量等特征及售价的数据集,展示了如何使用Matplotlib绘制散点图,揭示房屋面积与售价的正相关关系;并利用Seaborn的pairplot探索多变量间的关系。在机器学习建模阶段,通过随机森林模型展示特征重要性的可视化,帮助优化模型。这两个库在数据分析与建模中展现出广泛的应用价值。
25 2
|
13天前
|
数据可视化 数据挖掘 Python
逆袭之路!Python数据分析新手如何快速掌握Matplotlib、Seaborn,让数据说话更响亮?
在数据驱动时代,掌握数据分析技能至关重要。对于Python新手而言,Matplotlib和Seaborn是数据可视化的两大利器。Matplotlib是最基本的可视化库,适合绘制基础图表;Seaborn则提供高层次接口,专注于统计图形和美观样式。建议先学Matplotlib再过渡到Seaborn。快速上手Matplotlib需多实践,示例代码展示了绘制折线图的方法。Seaborn特色功能包括分布图、关系图及分类数据可视化,并提供多种主题和颜色方案。两者结合可实现复杂数据可视化,先用Seaborn绘制统计图,再用Matplotlib进行细节调整。熟练掌握这两者,将显著提升你的数据分析能力。
39 4
|
14天前
|
数据可视化 数据挖掘 Python
惊呆了!Python数据分析师如何用Matplotlib、Seaborn秒变数据可视化大师?
在数据驱动时代,分析师们像侦探一样在数字海洋中寻找线索,揭示隐藏的故事。数据可视化则是他们的“魔法棒”,将复杂数据转化为直观图形。本文将带你探索Python数据分析师如何利用Matplotlib与Seaborn这两大神器,成为数据可视化大师。Matplotlib提供基础绘图功能,而Seaborn在此基础上增强了统计图表的绘制能力,两者结合使数据呈现更高效、美观。无论是折线图还是箱形图,这两个库都能助你一臂之力。
31 4
|
1月前
|
数据采集 数据可视化 数据挖掘
数据分析大神养成记:Python+Pandas+Matplotlib助你飞跃!
【9月更文挑战第2天】数据分析大神养成记:Python+Pandas+Matplotlib助你飞跃!
49 5
|
2月前
|
数据可视化 数据挖掘 API
Python数据分析:数据可视化(Matplotlib、Seaborn)
数据可视化是数据分析中不可或缺的一部分,通过将数据以图形的方式展示出来,可以更直观地理解数据的分布和趋势。在Python中,Matplotlib和Seaborn是两个非常流行和强大的数据可视化库。本文将详细介绍这两个库的使用方法,并附上一个综合详细的例子。
|
2月前
|
数据可视化 数据挖掘 Python
数据可视化不再难!Matplotlib带你轻松绘制精美图表,让数据分析焕发光彩!
【8月更文挑战第22天】今天分享如何用Python的Matplotlib库绘制多样图表。Matplotlib是数据可视化的强大工具,对数据分析至关重要。本文分六部分:首先介绍环境准备,包括安装和配置;随后通过四个案例演示折线图、柱状图、饼图及散点图的绘制方法;最后总结并鼓励大家进一步探索Matplotlib的丰富功能。跟着示例操作,你将学会基本图表的制作,提升数据展示技能。
28 0
|
3月前
|
数据可视化 数据挖掘 Python
数据界的颜值担当!Python数据分析遇上Matplotlib、Seaborn,可视化美出新高度!
【7月更文挑战第24天】在数据科学领域,Python的Matplotlib与Seaborn将数据可视化升华为艺术,提升报告魅力。Matplotlib作为基石,灵活性强,新手友好;代码示例展示正弦波图的绘制与美化技巧。Seaborn针对统计图表,提供直观且美观的图形,如小提琴图,增强数据表达力。两者结合,创造视觉盛宴,如分析电商平台销售数据时,Matplotlib描绘趋势,Seaborn揭示类别差异,共塑洞察力强的作品,使数据可视化成为触动人心的艺术。
51 7
下一篇
无影云桌面