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类的图书销量,画柱形图

import pandas as pd
import matplotlib.pyplot as plt
# 导入数据
df_bar = pd.read_excel('../dataset/明日科技图书销量.xlsx')
df_bar

# 筛选python类图书
df_python = df_bar[df_bar['商品名称'].str.contains('Python')]
df_python
# 汇总所有天中各python书籍的总销量
# 代码:data_bar = df_python.groupby('')

# 汇总所有天中各python书籍的总销量
data_bar = df_python.groupby('商品名称')['成交商品件数'].sum()
data_bar

# 画图
plt.rcParams['font.family'] = 'SimHei' #显示中文
x = data_bar.index # 分组聚合结果的索引
y = data_bar.values # 分组聚合结果的值
plt.bar( #柱形图函数
    x, # x轴的数据
    y,  # y轴的数据
    width=0.5, # 柱子宽度,最大值是1
    color = 'pink' # 颜色
)
plt.title('明日科技python图书销量') # 标题
# 在图中显示文本标签
for x0,y0 in zip(x,y):
    plt.text(x0,y0+500,f'(y0)',ha='center')
plt.xticks(rotation=15) # x轴刻度旋转15度
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() 来创建一个饼图:

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

# 导入数据
df_pie = pd.read_excel('../dataset/超市销售数据.xlsx')
df_pie

# 对性别、支付方式做分组,统计每组的笔数(计数)
data_pie = df_pie.groupby(['性别','支付方式'])['发票编号'].count()
data_pie

# 画图,女性的图
data_woman = data_pie['女']
plt.pie(
    data_woman.values,
    labels=data_woman.index,# 数据项,即数据对应的含义
    autopct='%1.2f%%', # 控制小数点位数
)
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)的折线图

# 导入数据
df_plot = pd.read_excel('../dataset/股价数据.xlsx')
df_plot

# 对时间做顺序排序
df_plot2 = df_plot.sort_values(by='date').reset_index(drop=True)
df_plot2

# 画图
n = 100 # 取前n个数据画图
x = df_plot2['date'][:n]
y1 = df_plot2['close'][:n]
y2 = df_plot2['ma20'][:n]
plt.plot(
    x,
    y1,'m-',   # 通过字符串配置线条样式
    y2,'b--'
)
plt.title('股票的收盘价和20日居均线折线图')# 标题
plt.legend(['收盘价','20日均线']) # 图示
plt.xticks([i for i in range(0,n,int(n/7))],rotation=15) # 选择7个等距x刻度显示
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() 来创建一个散点图:

案例:图书浏览量和

# 导入数据
df_scatter = pd.read_excel('../dataset/明日科技图书销量.xlsx')
df_scatter

plt.scatter(
    df_scatter['浏览量'],
    df_scatter['成交商品件数'],
    s = 20, # 点的大小
    c = 'r', # 颜色
    marker='+' # 点的样式
)
plt.xlim(0,5000) # x轴的范围
plt.ylim(0,400)# y轴的范围
plt.xlabel('浏览量',loc='right')# x轴名称
plt.ylabel('成交数量',loc='top')# y轴名称
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() 来创建一个直方图:

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

# 导入数据
df_hist = pd.read_excel('../dataset/航空公司数据.xlsx')
df_hist

plt.hist(
    df_hist['年龄'],
    bins = [i for i in range(int(df_hist['年龄'].min()),int(df_hist['年龄'].max()),1)]
)
plt.title('航空公司用户年龄分布直方图')# 标题
plt.xlabel('年龄区间')# x轴名称
plt.ylabel('人数')# y轴名称
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() 来创建一个箱型图:

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

# 导入数据
df_boxplot = pd.read_excel('../dataset/航空公司数据.xlsx')
df_boxplot

plt.boxplot(
    df_boxplot['年龄'].dropna(),# 输入序列,但是不能有空值
    vert=False, # 横向显示
    labels= ['年龄']
)
plt.show()

效果图如下:

  • 30
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值