当前位置:   article > 正文

Matplotlib数据可视化

matplotlib数据可视化

1.Matplotlib介绍:

1.1Matplotlib 是 Python 的绘图库,它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。

1.2Matplotlib 可以用来绘制各种静态,动态,交互式的图表。

1.3Matplotlib 是一个非常强大的 Python 画图工具,我们可以使用该工具将很多数据通过图表的形式更直观的呈现出来。

1.4Matplotlib 可以绘制线图、散点图、等高线图、条形图、柱状图、3D 图形、甚至是图形动画等等。

2.Matplotlib 应用

Matplotlib 通常与 NumPy 和 SciPy(Scientific Python)一起使用, 这种组合广泛用于替代 MatLab,是一个强大的科学计算环境,有助于我们通过 Python 学习数据科学或者机器学习。SciPy 是一个开源的 Python 算法库和数学工具包。SciPy 包含的模块有最优化、线性代数、积分、插值、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算。

3.常见的图形及其绘制方法

3.1Matplotlib 柱形图

我们可以使用 pyplot 中的 bar() 方法来绘制柱形图。

bar() 方法语法格式如下:

plt.bar(x,height,width='',bottom=None,*,align'',data=None)

参数说明:

参数作用
x浮点型数组,柱形图的 x 轴数据。
height浮点型数组,柱形图的高度。
width浮点型数组,柱形图的宽度。
bottom浮点型数组,底座的 y 坐标,默认 0。
align柱形图与 x 坐标的对齐方式,'center' 以 x 位置为中心,这是默认值。 'edge':将柱形图的左边缘与 x 位置对齐。要对齐右边缘的条形,可以传递负数的宽度值及 align='edge'。

以下实例我们简单实用 bar() 来创建一个柱形图:

案例:统计明日科技的python类的图书销量,画柱形图

  1. import pandas as pd
  2. import matplotlib.pyplot as plt
  3. # 导入数据
  4. df_bar = pd.read_excel('../dataset/明日科技图书销量.xlsx')
  5. df_bar
  6. # 筛选python类图书
  7. df_python = df_bar[df_bar['商品名称'].str.contains('Python')]
  8. df_python
  9. # 汇总所有天中各python书籍的总销量
  10. # 代码:data_bar = df_python.groupby('')
  11. # 汇总所有天中各python书籍的总销量
  12. data_bar = df_python.groupby('商品名称')['成交商品件数'].sum()
  13. data_bar
  14. # 画图
  15. plt.rcParams['font.family'] = 'SimHei' #显示中文
  16. x = data_bar.index # 分组聚合结果的索引
  17. y = data_bar.values # 分组聚合结果的值
  18. plt.bar( #柱形图函数
  19. x, # x轴的数据
  20. y, # y轴的数据
  21. width=0.5, # 柱子宽度,最大值是1
  22. color = 'pink' # 颜色
  23. )
  24. plt.title('明日科技python图书销量') # 标题
  25. # 在图中显示文本标签
  26. for x0,y0 in zip(x,y):
  27. plt.text(x0,y0+500,f'(y0)',ha='center')
  28. plt.xticks(rotation=15) # x轴刻度旋转15度
  29. plt.show()#显示图形

效果图如下:

3.2Matplotlib 饼图

饼图(Pie Chart)是一种常用的数据可视化图形,用来展示各类别在总体中所占的比例。

我们可以使用 pyplot 中的 pie() 方法来绘制饼图。

pie() 方法语法格式如下:

plt.pie(x,explode,labels,colors,radius,autopct...)

参数说明:

参数作用
x浮点型数组或列表,用于绘制饼图的数据,表示每个扇形的面积。
explode数组,表示各个扇形之间的间隔,默认值为0。
labels列表,各个扇形的标签,默认值为 None。
colors数组,表示各个扇形的颜色,默认值为 None。
autopct设置饼图内各个扇形百分比显示格式,%d%% 整数百分比,%0.1f 一位小数, %0.1f%% 一位小数百分比, %0.2f%% 两位小数百分比。
radius设置饼图的半径,默认为 1。
...(更多参数参考:https://www.runoob.com/matplotlib/matplotlib-pie.html)

以下实例我们简单实用 pie() 来创建一个饼图:

案列:统计超市销售数据中男生和女生各自的支付方式占比情况

  1. # 导入数据
  2. df_pie = pd.read_excel('../dataset/超市销售数据.xlsx')
  3. df_pie
  4. # 对性别、支付方式做分组,统计每组的笔数(计数)
  5. data_pie = df_pie.groupby(['性别','支付方式'])['发票编号'].count()
  6. data_pie
  7. # 画图,女性的图
  8. data_woman = data_pie['女']
  9. plt.pie(
  10. data_woman.values,
  11. labels=data_woman.index,# 数据项,即数据对应的含义
  12. autopct='%1.2f%%', # 控制小数点位数
  13. )
  14. plt.show()

效果图如下:

3.3Matplotlib 折线图

绘图过程如果我们可以自定义线的样式,包括线的类型、颜色和大小等。

我们可以使用 pyplot 中的 plot() 方法来绘制饼图。

plot() 方法语法格式如下:

plt.plot(x,y,color,linestyle,marker,format_string...)

参数说明:

参数作用
x

x轴数据,传入参数值时不来要写参数名x。

yy轴数据,传入参数值时不来要写参数名y。
color图形颜色,接受颜色英文名首字母、十六进制颜色代码等。
linestyle线条样式,'-是实线'、'--'是虚线,...
marker点的样式,'*'是星号,'o'是圆点,...
format_string可以通过一串字符控制图形样式,如'r--o'表示红色、虚线、圆点。
...

...(更多参数参考:https://www.runoob.com/matplotlib/matplotlib-line.html)

以下实例我们简单实用 plot() 来创建一个折线图:

案例:画某只股票的收盘价(close)和20日均线(ma20)的折线图

  1. # 导入数据
  2. df_plot = pd.read_excel('../dataset/股价数据.xlsx')
  3. df_plot
  4. # 对时间做顺序排序
  5. df_plot2 = df_plot.sort_values(by='date').reset_index(drop=True)
  6. df_plot2
  7. # 画图
  8. n = 100 # 取前n个数据画图
  9. x = df_plot2['date'][:n]
  10. y1 = df_plot2['close'][:n]
  11. y2 = df_plot2['ma20'][:n]
  12. plt.plot(
  13. x,
  14. y1,'m-', # 通过字符串配置线条样式
  15. y2,'b--'
  16. )
  17. plt.title('股票的收盘价和20日居均线折线图')# 标题
  18. plt.legend(['收盘价','20日均线']) # 图示
  19. plt.xticks([i for i in range(0,n,int(n/7))],rotation=15) # 选择7个等距x刻度显示
  20. plt.show()

效果图如下:

3.4Matplotlib 散点图

我们可以使用 pyplot 中的 scatter() 方法来绘制散点图。

scatter() 方法语法格式如下:

plt.scatter(x,y,s,c,marker,alpha,linewidths,...)

参数说明:

参数作用
x,y长度相同的数组,也就是我们即将绘制散点图的数据点,输入数据。
s点的大小,默认 20,也可以是个数组,数组每个参数为对应点的大小。
c点的颜色,默认蓝色 'b',也可以是个 RGB 或 RGBA 二维行数组。
marker点的样式,默认小圆圈 'o'。
alpha透明度设置,0-1 之间,默认 None,即不透明。
linewidths

标记点的长度。

......(更多参数参考:https://www.runoob.com/matplotlib/matplotlib-scatter.html

以下实例我们简单实用 scatter() 来创建一个散点图:

案例:图书浏览量和

  1. # 导入数据
  2. df_scatter = pd.read_excel('../dataset/明日科技图书销量.xlsx')
  3. df_scatter
  4. plt.scatter(
  5. df_scatter['浏览量'],
  6. df_scatter['成交商品件数'],
  7. s = 20, # 点的大小
  8. c = 'r', # 颜色
  9. marker='+' # 点的样式
  10. )
  11. plt.xlim(0,5000) # x轴的范围
  12. plt.ylim(0,400)# y轴的范围
  13. plt.xlabel('浏览量',loc='right')# x轴名称
  14. plt.ylabel('成交数量',loc='top')# y轴名称
  15. plt.show()

效果图如下:

3.5Matplotlib 直方图

我们可以使用 pyplot 中的 hist() 方法来绘制直方图。

hist() 方法可以用于可视化数据的分布情况,例如观察数据的中心趋势、偏态和异常值等。

hist() 方法语法格式如下:

plt.hist(x,bins,align,orientation,rwidth,color,...)

参数说明:

参数作用
x表示要绘制直方图的数据,可以是一个一维数组或列表。
bins可选参数,表示直方图的箱数。默认为10。
align可选参数,表示直方图箱子的对齐方式,可以是'left'、'mid'、'right'。默认为'mid'。
orientation可选参数,表示直方图的方向,可以是'vertical'、'horizontal'。默认为'vertical'。
rwidth可选参数,表示每个箱子的宽度。默认为None。
color可选参数,表示直方图的颜色。

...

...(更多参数参考:https://www.runoob.com/matplotlib/matplotlib-hist.html)

以下实例我们简单实用 hist() 来创建一个直方图:

案例:航空公司用户的年龄分布直方图

  1. # 导入数据
  2. df_hist = pd.read_excel('../dataset/航空公司数据.xlsx')
  3. df_hist
  4. plt.hist(
  5. df_hist['年龄'],
  6. bins = [i for i in range(int(df_hist['年龄'].min()),int(df_hist['年龄'].max()),1)]
  7. )
  8. plt.title('航空公司用户年龄分布直方图')# 标题
  9. plt.xlabel('年龄区间')# x轴名称
  10. plt.ylabel('人数')# y轴名称
  11. plt.show()

效果图如下:

3.6Matplotlib 箱型图

箱型图也称为须状图,显示包含最小值,第一四分位数,中位数,第三四分位数和最大值的一组数据的摘要。在方块图中,绘制从第一个四分位数到第三个四分位数的方框。垂直线穿过中间的框。须状从每个四分位数到最小值或最大值。

我们可以使用 pyplot 中的 boxplot() 方法来绘制直方图。

boxplot() 方法语法格式如下:

plt.boxplot(x,labels,wert,whis,...)

参数说明:

参数作用
x列表,序列数据,可以接收多个序列。
labels序列数据的标签,接受字符串的列表。
vert控制箱型图的方向,接收布尔值
whis控制上下限和下位分数之间的距离,默认为1.5。
......(更多参数参考:https://www.cainiaojc.com/matplotlib/matplotlib-box-plot.html

以下实例我们简单实用 boxplot() 来创建一个箱型图:

案例:航空公司用户的年龄分布箱型图

  1. # 导入数据
  2. df_boxplot = pd.read_excel('../dataset/航空公司数据.xlsx')
  3. df_boxplot
  4. plt.boxplot(
  5. df_boxplot['年龄'].dropna(),# 输入序列,但是不能有空值
  6. vert=False, # 横向显示
  7. labels= ['年龄']
  8. )
  9. plt.show()

效果图如下:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/963790
推荐阅读
相关标签
  

闽ICP备14008679号