概述
基本概念
数据分析
1.为什么要学习数据分析
1. 岗位需求
2. 是python数据科学的基础
3. 是机器学习的基础
2.什么是数据分析
数据分析是用适当的方法对收集来的大量数据进行分析,帮助人们作出判断,以便采取适当行动。
3.数据分析流程
matplotlib
1.简介
matplotlib主要用于画图:
1. 能将数据进行可视化,更直观的呈现
2. 使数据更加客观、更具说服力
3. matplotlib: 最流行的Python底层绘图库,主要做数据可视化图表,名字取材于MATLAB,模仿MATLAB构建。
2.基本函数
注意:需要导入包matplorlib。
如:
from matplotlib import pyplot
x = range(2, 26, 2)
y = [15, 13, 14.5, 17, 20, 25, 26, 26, 27, 22, 18, 15]
pyplot.plot(x, y)
pyplot.show()
绘图分类
折线图—plot()
- 特点:以折线的上升或下降来表示统计数量的增减变化的统计图,能够显示数据的变化趋势,反映事物的变化情况。(变化)
- 设置折线图
设置线的样式
pyplot.plot(x,[1,2,3,4,5],"3")
marker属性样式:
样式 | 描述 | 样式 | 描述 |
---|---|---|---|
‘-’ | 实线样式 | ‘–’ | 短横线样式 |
‘-.’ | 点划线样式 | ‘:’ | 虚线样式 |
‘.’ | 点标记 | ‘,’ | 像素标记 |
‘o’ | 圆标记 | ‘v’ | 倒三角标记 |
‘^’ | 正三角标记 | ‘<’ | 左三角标记 |
‘>’ | 右三角标记 | ‘1’ | 下箭头标记 |
‘2’ | 上箭头标记 | ‘3’ | 左箭头标记 |
‘4’ | 右箭头标记 | ‘s’ | 正方形标记 |
‘p’ | 五边形标记 | ‘*’ | 星形标记 |
‘h’ | 六边形标记 1 | ‘H’ | 六边形标记 2 |
‘+’ | 加号标记 | ‘x’ | X 标记 |
‘D’ | 菱形标记 | ‘d’ | 窄菱形标记 |
‘|’ | 竖直线标记 | ‘_’ | 水平线标记 |
设置颜色
pyplot.plot(x,[1,2,3,4,5],"--",color='c')
颜色(设置颜色该颜色表中适用于matplotlib的大部分函数的color参数):
参数值 | 含义 |
---|---|
‘b’ | 蓝色 |
‘g’ | 绿色 |
‘r’ | 红色 |
‘c’ | 青色 |
‘m’ | 品红色 |
‘y’ | 黄色 |
‘k’ | 黑色 |
‘w’ | 白色 |
设置线的宽度
pyplot.plot(x,[1,2,3,4,5],"--",color='c',linewidth=5)
设置线的透明度
pyplot.plot(x,[1,2,3,4,5],"--",color='c',linewidth=5,alpha=0.5)
设置图表标题
pyplot.title("haha")
设置XY轴的标题
pyplot.xlabel("X轴", color="m")
设置旋转角度
pyplot.ylabel("℃", color="blue", fontproperties=font, rotation=30)
设置图片大小
pyplot.figure(figsize=(20, 80), dpi=80)
重新设置X轴刻度
pyplot.xticks(x)
保存图片
pyplot.savefig("./img.png")
查看系统支持的字体
print(font_manager.findSystemFonts())
设置中文字体
font = font_manager.FontProperties(fname="C:\Windows\Fonts\simfang.ttf")
pyplot.xlabel("时间", fontproperties=font)
pyplot.ylabel("温度", fontproperties=font)
在同一张里有多条数据
font = font_manager.FontProperties(fname="C:\Windows\Fonts\simfang.ttf")
x = range(0, 4)
y = [55, 58, 22, 66]
xTitle = ["1号", "2号", "3号", "4号"]
pyplot.xticks(x, xTitle, fontproperties=font,color="m")
pyplot.plot(x, y)
# 在同一张表里 有多条数据
y = [20, 40, 60, 50]
pyplot.plot(x, y)
pyplot.show()
设置同一个图中回值两个表
x = [1,2,4,5,7]
pyplot.subplot(2,1,1)
pyplot.plot(x,[1,2,3,4,5],"--",color='c',linewidth=5,alpha=0.5)
pyplot.title("haha")
pyplot.subplot(2,1,2)
pyplot.plot(x,[1,2,3,4,5],"--",color='c',linewidth=5,alpha=0.5)
pyplot.title("haha")
# pyplot.xlabel("X", color="m")
pyplot.show()
设置全局中文和负号
pyplot.rcParams['font.sans-serif']=['SimHei']
pyplot.rcParams['axes.unicode_minus']=False
from matplotlib import rcParams
rcParams.update({'font.size': 10, 'font.family': 'SimHei',“axes.unicode_minus”:False})
设置图例
pyplot.legend({"12号","13号"},loc="lower right",edgecolor="m",shadow=True,fancybox=False,facecolor="red",borderpad=5,labelspacing=2,handlelength=3,handleheight=5,handletextpad=3,borderaxespad=2,title="hhh")
参数与描述:
参数 | 描述 |
---|---|
loc | Location code string, or tuple (see below).图例所有figure位置。可选参数值为:0: ‘best’;1: ‘upper right’;2: ‘upper left’;3: ‘lower left’;4: ‘lower right’;5: ‘right’;6: ‘center left’;7: ‘center right’;8: ‘lower center’;9: ‘upper center’;10: ‘center’ |
prop | the font property字体参数 |
fontsize | the font size (used only if prop is not specified),可选参数值为: int or float or {‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’} |
numpoints | 为线条图图例条目创建的标记点数 |
scatterpoints | 为散点图图例条目创建的标记点数 |
scatteryoffsets | 为散点图图例条目创建的标记的垂直偏移量 |
frameon | 控制是否应在图例周围绘制框架 |
fancybox | 控制是否应在构成图例背景的FancyBboxPatch周围启用圆边 |
shadow | 控制是否在图例后面画一个阴影 |
framealpha | 控制图例框架的 Alpha 透明度 |
edgecolor | 边框颜色 |
facecolor | Frame facecolor. frameon不能设置为False |
borderpad | 图例边框的内边距 |
labelspacing | 图例条目之间的垂直间距 |
handletextpad | 图例句柄和文本之间的间距 |
handlelength | 图例句柄的长度 |
handleheight | 图例句柄的高度 |
borderaxespad | 轴与图例边框之间的距离 |
title | the legend title |
添加网格
pyplot.grid(axis="x",alpha=0.5,color="r",linestyle="--",linewidth=0.8)
参数及描述:
参数 | 描述 |
---|---|
axis | 取值为‘both’, ‘x’,‘y’。就是想绘制哪个方向的网格线 |
alpha | 透明度 |
color | 设置网格线的颜色。或者用c来代替color |
linestyle | 也可以用ls来代替linestyle |
linewidth | 设置网格线的宽度 |
散点图—scatter()
- 特点:用两组数据构成多个坐标点,考察坐标点的分布,判断两变量。之间是否存在某种关联或总结坐标点的分布模式。判断变量之间是否存在数量关联趋势,展示离群点(分布规律)
- 示例:
sc=pyplot.scatter(x, y,s=50,marker="o",c=y,edgecolors=["red","m","g","b"],alpha=0.5)
pyplot.colorbar(sc)
- 参数及描述:
def scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts=None, edgecolors=None, hold=None, data=None, **kwargs)
参数 | 解释 | 描述 |
---|---|---|
x,y | 设定位置 | 都是向量,而且必须长度相等。 |
s | 设置大小 | 标量或形如shape[n,]数组,可选,默认为20。 |
c | 设置颜色 | ,可选,默认:‘b’,注意c可以是单个颜色格式的字符串,也可以是一系列颜色的二维数组,即可以是一个RGB或RGBA二维数组,参数值可参考上文的颜色表 |
marker: | 设置样式 | 来源为matplotlib.markers.MarkerStyle ,可选,默认值:‘o’,参数值为上文的marker的属性样式表 |
cmap | 设置色彩盘 | 原型为Colormap,可选,默认为None。参数值为Colormap实例 |
norm | 标准化 | 原型为Normalize,可选,默认为None。参数值为:数据亮度0-1,float数据。解释:规格化实例用于将亮度数据缩放为0、1。仅当c是一个浮点数组时才使用norm。如果没有,则使用默认颜色。正常化。 |
vmin,vmax | 亮度设置 | 标量,可选,默认为None。若norm设置了,该参数就无效。 |
alpha | 透明度设置 | 标量,可选,默认值:None,alpha混合值,介于0(透明)和1(不透明)之间,即值为0-1 |
linewidths | 线宽设置 | 标量或array_like,可选,默认值:无。如果无,则默认为(lines.linewidth,)。linewidth 是对线条的宽度设置,绘图时候像素点大小是不变的。s 是设置表示图形的尺寸 |
edgecolors | 设置轮廓颜色 | 颜色或颜色顺序,可选,默认值:无。edgecolors=[“red”,“m”,“g”,“b”] |
条形图—bar()
- 特点:排列在工作表的列或行中的数据可以绘制到条形图中。绘制连离散的数据,能够一眼看出各个数据的大小,比较数据之间的差别。(统计)
- 示例:
a = [44,56,77,23,99,40]
pyplot.bar(range(len(a)),a,width=0.8,color="y",edgecolor="b"
lable=[])
pyplot.show()
- 参数及描述:
bar(left, height, width, color,alpha, align, yerr)
left | x轴的位置序列,一般采用range函数产生一个序列,但是有时候可以是字符串 |
height | y轴的数值序列,也就是柱形图的高度,一般就是我们需要展示的数据; |
alpha | 透明度,值越小越透明 |
align | 设置plt.xticks()函数中的标签的位置,一般是center |
width | 为柱形图的宽度,一般这是为0.8即可; |
color或facecolor | 柱形图填充的颜色; |
edgecolor | 图形边缘颜色 |
label | 解释每个图像代表的含义 |
yerr | 让柱形图的顶端空出一部分。 |
- 例子:
a = ["战狼2","速度与激情8","功夫瑜伽","西游伏妖篇","变形金刚5:最后的骑士","摔跤吧!爸爸","加勒比海盗5:死无对证","金刚:骷髅岛","极限特工:终极回归","生化危机6:终章","乘风破浪","神偷奶爸3","智取威虎山","大闹天竺","金刚狼3:殊死一战","蜘蛛侠:英雄归来","悟空传","银河护卫队2","情圣","新木乃伊",]
b=[56.01,26.94,17.53,16.49,15.45,12.96,11.8,11.61,11.28,11.12,10.49,10.3,8.75,7.55,7.32,6.99,6.88,6.86,6.58,6.23]
font = font_manager.FontProperties(fname="C:\Windows\Fonts\simfang.ttf")
pyplot.figure(figsize=(20,10))
pyplot.bar(range(len(a)),b,color="blue")
pyplot.xticks(range(len(a)),a,fontproperties=font)
pyplot.show()
直方图—hist()
- 特点:
由一系列高度不等的纵向条纹或线段表示数据分布的情况。 一般用横轴表示数据范围,纵轴表示分布情况。绘制连续性的数据,展示一组或者多组数据的分布状况(统计) - 示例:
x = range(10)
data=[131, 98, 125, 131, 124, 139, 131, 117, 128, 108, 135, 138, 131, 102, 107, 114, 119]
pyplot.hist(data,bins=10,histtype="bar",color="m",edgecolor="r")
pyplot.grid()
#bins是把图平均分成几份
pyplot.show()
- 参数及描述:
matplotlib.pyplot.hist(x,bins=None,range=None, density=None, bottom=None, histtype='bar', align='mid', log=False, color=None, label=None, stacked=False, normed=None)
参数 | 解释 | 描述 |
---|---|---|
x | x轴数据 | 这个参数是指定每个bin(箱子)分布的数据,对应x轴 |
bins | 设置条数 | 这个参数指定bin(箱子)的个数,也就是总共有几条条状图 |
normed | 标准化 | 是否将直方图的频数转换成频率 |
histtype | 设置类型 | 指定直方图的类型,默认为bar,还有barstacked/sted/stepfilled |
orientation | 设置方向 | 水平还是垂直【‘horizontal’,‘vertical’】默认为垂直方向 |
align | 设置对齐方式 | 设置条形边界值的对其方式,默认为mid,还有’left’,‘right’ |
color | 设置颜色 | 设置直方图颜色 |
label | 设置标签 | 设置直方图的标签,可通过legend展示其图例 |
stacked | 是否堆叠 | 当有多个数据时,是否需要将直方图呈堆叠摆放,默认水平摆放 |
log | 是否log变化 | 是否需要对绘图数据进行log变换 |
rwidth | 设置宽度 | 设置直方图条形宽度的百分比 |
bottom | 设置基准线 | 可以为直方图的每个条形添加基准线,默认为0 |
- 例子:
假设你获取了250部电影的时长(列表a中),希望统计出这些电影时长的分布状态(比如时长为100分钟到120分钟电影的数量,出现的频率)等信息,你应该如何呈现这些数据?
a=[131, 98, 125, 131, 124, 139, 131, 117, 128, 108, 135, 138, 131, 102, 107, 114, 119, 128, 121, 142, 127, 130, 124, 101, 110, 116, 117, 110, 128, 128, 115, 99, 136, 126, 134, 95, 138, 117, 111,78, 132, 124, 113, 150, 110, 117, 86, 95, 144, 105, 126, 130,126, 130, 126, 116, 123, 106, 112, 138, 123, 86, 101, 99, 136,123, 117, 119, 105, 137, 123, 128, 125, 104, 109, 134, 125, 127,105, 120, 107, 129, 116, 108, 132, 103, 136, 118, 102, 120, 114,105, 115, 132, 145, 119, 121, 112, 139, 125, 138, 109, 132, 134,156, 106, 117, 127, 144, 139, 139, 119, 140, 83, 110, 102,123,107, 143, 115, 136, 118, 139, 123, 112, 118, 125, 109, 119, 133,112, 114, 122, 109, 106, 123, 116, 131, 127, 115, 118, 112, 135,115, 146, 137, 116, 103, 144, 83, 123, 111, 110, 111, 100, 154,136, 100, 118, 119, 133, 134, 106, 129, 126, 110, 111, 109, 141,120, 117, 106, 149, 122, 122, 110, 118, 127, 121, 114, 125, 126,114, 140, 103, 130, 141, 117, 106, 114, 121, 114, 133, 137, 92,121, 112, 146, 97, 137, 105, 98, 117, 112, 81, 97, 139, 113,134, 106, 144, 110, 137, 137, 111, 104, 117, 100, 111, 101, 110,105, 129, 137, 112, 120, 113, 133, 112, 83, 94, 146, 133, 101,131, 116, 111, 84, 137, 115, 122, 106, 144, 109, 123, 116, 111,111, 133, 150]
binWidth = 3
groupNum = int((max(a)-min(a))/binWidth)
pyplot.hist(a,[min(a)+i*binWidth for i in range(groupNum)],color="orange")
pyplot.grid(True)
pyplot.show()
饼图
- 特点:
饼图广泛得应用在各个领域,用于表示不同分类的占比情况,通过弧度大小来对比各种分类。饼图通过将一个圆饼按照分类的占比划分成多个区块,整个圆饼代表数据的总量,每个区块(圆弧)表示该分类占总体的比例大小,所有区块(圆弧)的加和等于 100%。 - 示例:
labels=["Python","Java","C","JavaScript"]
sizes=[40,20,10,30]
colors='yellowgreen','gold','lightskyblue','lightcoral'
explode=[0.1,0,0,0]
pyplot.pie(sizes,explode=explode,labels=labels,colors=colors,autopct='%.1f%%',shadow=True,startangle=50,labeldistance=1.1,radius=0.7)
pyplot.show()
- 参数及特点:
pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=None, radius=None, counterclock=True, wedgeprops=None, textprops=None, center=(0, 0), frame=False, rotatelabels=False, hold=None, data=None)
参数 | 解释 | 描述 |
---|---|---|
x | 设置数量 | 自动算百分比为一个存放各部分占比的向量 |
labels | 设置标签 | 设置每部分的名称,设置各类的标签,元素一一对应 |
autopct | 设置百分比标签 | 默认为:None,字符串,函数,百分比标签,可选,pct其实就是percent的缩写,保留小数点后一位:%.1f%% |
colors | 设置颜色 | 每部分的颜色,需一一对应于标签 |
explode | 计算距离 | 每一部分离开中心点的距离 ,元素数目与x相同且一一对应 |
startangle | 绘制角度 | 起始绘制角度,默认图是从x轴正方向逆时针画起,如设定=90则从y轴正方向画起 |
shadow | 显示阴影 | 默认为False,即不显示阴影 |
labeldistance | 设置标签位置 | 相对于半径的比例,默认值为1.1, 如<1则绘制在饼图内侧 |
pctdistance | 设置标签位置 | 类似于labeldistance,指定autopct的位置刻度,默认值为0.6; |
radius | 设置半径 | 控制饼图半径,默认值为1; |
counterclock | 指定指针方向 | 布尔值,可选参数,默认为:True,即逆时针。将值改为False即可改为顺时针。 |
wedgeprops | 参数传递 | 字典类型,可选参数,默认值:None。参数字典传递给wedge对象用来画一个饼图。例如:wedgeprops={‘linewidth’:3}设置wedge线宽为3。 |
textprops | 设置格式 | 设置标签(labels)和比例文字的格式;字典类型,可选参数,默认值为:None。传递给text对象的字典参数。 |
center | 设置位置 | 浮点类型的列表,可选参数,默认值:(0,0)。图标中心位置。 |
frame | 设置轴框架 | 布尔类型,可选参数,默认值:False。如果是true,绘制带有表的轴框架。 |
rotatelabels | 指定角度 | 布尔类型,可选参数,默认为:False。如果为True,旋转每个label到指定的角度。 |
- 例子:
饼图的详细解析:
https://www.cnblogs.com/biyoulin/p/9565350.html
最后
以上就是高贵咖啡为你收集整理的python基础学习--数据分析的概念及绘图基本概念的全部内容,希望文章能够帮你解决python基础学习--数据分析的概念及绘图基本概念所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复