17 Matplotlib与Pandas结合

17 Matplotlib与Pandas结合

在数据分析过程中,数据的可视化是至关重要的。利用 MatplotlibPandas 的结合,可以轻松生成丰富多样的图表。接下来,我们将通过几个实际案例来展示如何实现这一目标。

基本框架

首先,你需要安装 MatplotlibPandas。如果还没有安装,可以使用以下命令:

1
pip install matplotlib pandas

接下来,我们导入这两个库:

1
2
import pandas as pd
import matplotlib.pyplot as plt

创建示例数据

为了进行可视化示例,我们首先创建一个简单的 DataFrame

1
2
3
4
5
6
7
data = {
'年份': [2018, 2019, 2020, 2021, 2022],
'销售额': [200, 300, 400, 500, 600],
'利润': [50, 80, 120, 180, 250]
}

df = pd.DataFrame(data)

简单折线图

我们可以使用 Matplotlib 绘制一个折线图来显示销售额和利润随年份的变化趋势:

1
2
3
4
5
6
7
8
9
plt.plot(df['年份'], df['销售额'], marker='o', label='销售额')
plt.plot(df['年份'], df['利润'], marker='o', label='利润')

plt.title('销售额与利润随年份变化图')
plt.xlabel('年份')
plt.ylabel('金额(单位:元)')
plt.legend()
plt.grid()
plt.show()

在这个例子中,marker='o' 用于在数据点处添加圆形标记。通过 plt.legend() 来显示图例。

柱状图

接下来,我们可以使用柱状图来更直观地比较销售额和利润:

1
2
3
4
5
6
7
8
9
10
11
12
bar_width = 0.35
index = range(len(df))

plt.bar(index, df['销售额'], bar_width, label='销售额', color='b')
plt.bar([i + bar_width for i in index], df['利润'], bar_width, label='利润', color='g')

plt.title('销售额与利润对比')
plt.xlabel('年份')
plt.ylabel('金额(单位:元)')
plt.xticks([i + bar_width / 2 for i in index], df['年份'])
plt.legend()
plt.show()

在这里,我们使用 plt.bar() 创建两个相邻的柱状图,bar_width 控制柱子的宽度,使它们看起来更整齐。

饼图

如果我们想要查看不同年份销售额在总销售额中的占比,可以使用饼图:

1
2
3
4
plt.pie(df['销售额'], labels=df['年份'], autopct='%1.1f%%', startangle=140)
plt.title('不同年份销售额占比')
plt.axis('equal') # 确保饼图为圆形
plt.show()

这里,autopct='%1.1f%%' 用于显示百分比,startangle=140 旋转饼图以更好地显示。

组合图

最后,我们可以将折线图和柱状图组合在一起,以便对比更为直观:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
fig, ax1 = plt.subplots()

color = 'tab:blue'
ax1.set_xlabel('年份')
ax1.set_ylabel('销售额', color=color)
ax1.bar(df['年份'], df['销售额'], color=color, alpha=0.6, label='销售额')
ax1.tick_params(axis='y', labelcolor=color)

ax2 = ax1.twinx() # instantiate a second axes that shares the same x-axis
color = 'tab:red'
ax2.set_ylabel('利润', color=color)
ax2.plot(df['年份'], df['利润'], color=color, marker='o', label='利润')
ax2.tick_params(axis='y', labelcolor=color)

plt.title('销售额与利润组合图')
plt.show()

通过 ax1.twinx() 来创建一个共享 x 轴的第二个 y 轴,可以在同一张图上同时显示柱状图和折线图。

总结

通过 MatplotlibPandas 的结合,我们能够快速而灵活地进行数据可视化,从简单的折线图到复杂的组合图表,帮助我们更好地理解数据。掌握这些技能,将显著提升你的数据分析能力。

17 Matplotlib与Pandas结合

https://zglg.work/pandas-zero/17/

作者

AI教程网

发布于

2024-08-08

更新于

2024-08-10

许可协议