Pandas绘图教程——《Python数据分析库Pandas》

Pandas教程介绍了如何使用Pandas进行数据可视化,包括折线图、柱状图、散点图、直方图、箱线图、面积图、饼图等多种图表类型,并详细阐述了自定义样式、保存图形、设置图表样式、添加图例和标题等进阶功能。
摘要由CSDN通过智能技术生成

Pandas绘图教程——《Python数据分析库Pandas》

Pandas绘图教程

引言

Pandas是一个强大的Python数据分析库,除了提供丰富的数据处理功能外,还集成了绘图功能,使得数据可视化变得简单而直观。在本教程中,我们将介绍如何使用Pandas进行数据绘图,并通过实例展示其用法。

Pandas绘图基础

Pandas提供了多种绘图方法,可以直接在DataFrame或Series对象上调用。这些方法基于Matplotlib库进行封装,因此其绘图风格与Matplotlib相似,但使用起来更加便捷。

折线图

折线图常用于展示时间序列数据的变化趋势。在Pandas中,可以使用plot.line()方法绘制折线图。

import pandas as pd
import numpy as np

# 创建一个示例数据
data = {'date': pd.date_range(start='2024-05-01', periods=10),
        'value': np.random.rand(10)}
df = pd.DataFrame(data)

# 绘制折线图
df.set_index('date').plot.line(y='value')

柱状图bar() 或 barh()

柱状图常用于比较不同类别的数据大小。在Pandas中,可以使用plot.bar()方法绘制柱状图。

import pandas as pd
import numpy as np

# 创建一个示例数据
data = {'category': ['A', 'B', 'C', 'D'],
        'value': [10, 15, 7, 12]}
df = pd.DataFrame(data)

# 绘制柱状图
df.plot.bar(x='category', y='value')

散点图scatter()

散点图用于展示两个变量之间的关系。在Pandas中,可以使用plot.scatter()方法绘制散点图。

import pandas as pd
import numpy as np

# 创建一个示例数据
data = {'x': np.random.rand(50),
        'y': np.random.rand(50)}
df = pd.DataFrame(data)

# 绘制散点图
df.plot.scatter(x='x', y='y')

直方图:hist()

直方图用于展示数据的分布情况,能够直观地看出数据的集中、分散程度以及可能的偏态。在Pandas中,我们可以使用plot.hist()方法绘制直方图。

import pandas as pd
import numpy as np

# 创建一个示例数据
data = np.random.randn(1000)
df = pd.DataFrame(data, columns=['values'])

# 绘制直方图
df['values'].plot.hist(bins=20, edgecolor='black')

在上面的代码中,我们首先创建了一个包含1000个随机数的DataFrame。然后,我们使用plot.hist()方法绘制了直方图,并通过bins参数指定了直方图的柱子数量,edgecolor参数用于设置柱子的边框颜色。

箱状图:box()

箱状图(Box Plot),又称为箱线图、盒须图或盒状图,是一种用作显示一组数据分散情况资料的统计图。因形状如箱子而得名。在各种领域也经常被使用,常见于品质管理。它主要用于反映原始数据分布的特征,还可以进行多组数据分布特征的比 较。在Pandas中,可以使用plot.box()方法绘制箱状图。

箱状图主要包含六个数据节点,将一组数据从大到小排列,分别计算出最大值、上四分位数(Q3)、中位数(Q2)、下四分位数(Q1)、最小值,然后绘制图形。箱状图的主要绘制步骤包括:

  1. 画一个矩形盒,两端边的位置分别对应数据的上下四分位数(Q3和Q1),矩形盒的宽度可根据需要调整,矩形盒内的中线位置为数据的中位数(Q2)。
  2. 在矩形盒上下边缘处画两条线段,分别到数据的最大值和最小值,形成箱体的“须”。
  3. 如果数据中有异常值(即超出1.5倍IQR的值,IQR为上下四分位数的差),则在箱体的“须”之外单独用圆圈或小方块表示。

以下是使用Pandas绘制箱状图的示例代码:

import pandas as pd
import numpy as np

# 创建一个示例数据
np.random.seed(10)  # 设置随机种子以保证结果可复现
data = pd.DataFrame(np.random.randn(100, 4), columns=['A', 'B', 'C', 'D'])

# 绘制箱状图
data.plot.box()

在上述代码中,我们首先设置了一个随机种子,然后创建了一个包含100行4列的DataFrame,其中数据是随机生成的。接着,我们使用plot.box()方法直接对DataFrame进行绘图,这将为每一列数据绘制一个箱状图。

通过箱状图,我们可以直观地看出每一组数据的分布情况,包括中位数、四分位数、最大值、最小值以及可能存在的异常值。这使得箱状图在数据探索、异常值检测以及不同数据集之间的比较等方面具有广泛的应用。

箱线图:boxplot()

箱线图(Box Plot)是一种用作显示一组数据分散情况资料的统计图。包含一组数据的最大值、最小值、中位数、及上下四分位数。在Pandas中,我们可以使用plot.box()或者boxplot()方法绘制箱线图。

import pandas as pd
import numpy as np

# 创建一个示例数据
np.random.seed(10)
data = {'category': ['A', 'B', 'C', 'D', 'E'],
        'value1': np.random.normal(100, 20, 100),
        'value2': np.random.normal(90, 30, 100)}
df = pd.DataFrame(data)

# 绘制箱线图
df.plot.box(by='category', figsize=(10, 5))

在上面的代码中,我们首先创建了一个包含两个数值列和一个分类列的DataFrame。然后,我们使用plot.box()方法绘制了箱线图,并通过by参数指定了按照哪个分类列进行分组。figsize参数用于设置图形的大小。

面积图:area()

面积图又称区域图,是在折线图的基础上,将自变量的每一段和因变量的部分和用颜色或者纹理填充,主要用于显示随时间而变化的数量。在Pandas中,我们可以使用plot.area()方法绘制面积图。

import pandas as pd
import numpy as np

# 创建一个示例数据
data = {'date': pd.date_range(start='2023-01-01', periods=5),
        'value1': np.random.rand(5),
        'value2': np.random.rand(5)}
df = pd.DataFrame(data).set_index('date')

# 绘制面积图
df.plot.area()

在上面的代码中,我们首先创建了一个包含日期和两个数值列的DataFrame,并将日期列设置为索引。然后,我们使用plot.area()方法绘制了面积图。

饼图:pie()

饼图是一种用于展示不同类别占比的图形。在Pandas中,我们可以使用plot.pie()方法绘制饼图。

import pandas as pd
import numpy as np

# 创建一个示例数据
data = {'category': ['A', 'B', 'C', 'D', 'E'],
        'value': [10, 20, 30, 25, 15]}
df = pd.DataFrame(data)

# 绘制饼图
df.plot.pie(y='value', labels=df['category'], autopct='%1.1f%%', legend=False)

在上面的代码中,我们首先创建了一个包含分类列和数值列的DataFrame。然后,我们使用plot.pie()方法绘制了饼图,并通过y参数指定了用于计算占比的列,labels参数用于设置每个部分的标签,autopct参数用于设置显示百分比的格式,legend参数用于控制是否显示图例。

自定义样式和保存图形

Pandas的绘图功能是基于Matplotlib进行封装的,因此我们可以使用Matplotlib的相关方法和参数来自定义图形的样式。例如,我们可以设置图形的标题、坐标轴标签、图例等。此外,我们还可以使用Matplotlib的保存功能将图形保存为图片文件。

import pandas as pd
import numpy as np

import matplotlib.pyplot as plt

# 绘制折线图并设置样式
df.set_index('date').plot.line(y='value', title='Value Over Time', xlabel='Date', ylabel='Value')
plt.legend(loc='upper left')  # 设置图例位置

# 自定义图形的样式
plt.rcParams['figure.figsize'] = (10, 6)  # 设置图形大小
plt.rcParams['lines.linewidth'] = 2  # 设置线条粗细
plt.rcParams['font.size'] = 12  # 设置字体大小

# 添加网格和网格样式
plt.grid(True, linestyle='--', color='lightgrey')

# 自定义坐标轴刻度标签格式
plt.gca().xaxis.set_major_formatter(plt.FuncFormatter(lambda x, loc: pd.to_datetime(df.index[int(x)]).strftime('%Y-%m-%d')))

# 保存图形为图片文件
plt.savefig('line_plot_customized.png', dpi=300, bbox_inches='tight')  # 保存图形并设置DPI和边界

# 显示图形
plt.show()

在上面的代码中,我们首先使用df.set_index('date').plot.line()方法绘制了折线图,并设置了标题、坐标轴标签和图例位置。然后,我们使用了Matplotlib的rcParams字典来自定义图形的样式,包括图形大小、线条粗细和字体大小。接着,我们添加了网格并设置了网格的样式。为了自定义坐标轴刻度标签的格式,我们使用了FuncFormatter来将日期转换为特定的字符串格式。最后,我们使用plt.savefig()方法将图形保存为PNG图片文件,并设置了DPI和边界。最后,通过plt.show()显示图形。

通过这种方式,我们可以灵活地自定义Pandas绘制的图形样式,并将其保存为图片文件以供后续使用。

进阶功能

除了基础的绘图方法外,Pandas还提供了许多进阶功能,用于定制和优化图表。

设置图表样式

Pandas支持多种图表样式,可以通过style参数进行设置。例如,可以设置为'seaborn''whitegrid'等。

df.plot.bar(x='category', y='value', style='seaborn')

添加图例和标题

通过legendtitle等参数,可以为图表添加图例和标题,增强图表的可读性。

df.plot.line(y='value', legend=True, title='Line Chart Example')

自定义坐标轴标签和刻度

使用xlabelylabelxticksyticks等参数,可以自定义坐标轴的标签和刻度。

df.plot.bar(x='category', y='value', xlabel='Category', ylabel='Value')

进阶定制与交互

除了基本的图表绘制和样式调整,Pandas还允许我们进行更深入的定制和交互操作。

图表保存与导出

完成绘图后,我们可能需要将图表保存为图片文件,或导出为交互式图表以供他人查看。Pandas的绘图方法可以与Matplotlib无缝集成,利用Matplotlib的保存和导出功能。

# 绘制图表
ax = df.plot.bar(x='category', y='value', title='Bar Chart Example')

# 保存为图片文件
fig = ax.get_figure()
fig.savefig('bar_chart.png')

交互式图表

为了创建交互式图表,我们可以使用Pandas结合其他库,如Plotly。虽然Pandas本身不提供交互功能,但结合Plotly可以轻松实现。

import plotly.express as px

# 转换DataFrame为Plotly可接受的格式
fig = px.bar(df, x='category', y='value', title='Interactive Bar Chart')

# 显示交互式图表
fig.show()

多子图与网格布局

当需要同时展示多个图表时,可以使用Pandas结合Matplotlib的子图功能。

import matplotlib.pyplot as plt

# 创建子图网格
fig, axs = plt.subplots(nrows=1, ncols=2, figsize=(10, 5))

# 在第一个子图上绘制折线图
df.set_index('date').plot.line(y='value', ax=axs[0])
axs[0].set_title('Line Chart')

# 在第二个子图上绘制柱状图
df.plot.bar(x='category', y='value', ax=axs[1])
axs[1].set_title('Bar Chart')

# 显示整个图表
plt.tight_layout()
plt.show()

注意事项与常见问题

在使用Pandas绘图时,有一些注意事项和常见问题需要注意。

数据清洗与预处理

在绘图前,确保数据已经过清洗和预处理,以避免因数据问题导致的图表错误或误导。

图表可读性与美观性

在定制图表时,要注意图表的可读性和美观性。避免过于复杂的图表和过多的元素,确保图表能够清晰地传达信息。

兼容性与版本问题

不同版本的Pandas和Matplotlib可能存在一些兼容性问题。在使用时,建议查阅官方文档,确保使用的版本之间没有冲突。

总结与展望

通过本教程的介绍,我们详细探讨了Pandas的绘图功能,包括基础绘图方法、进阶定制与交互操作以及注意事项和常见问题。Pandas作为数据分析的利器,其绘图功能为我们提供了便捷的数据可视化手段。在实际应用中,我们可以根据具体需求灵活运用这些功能,以展示数据的特征和趋势。

未来,随着数据可视化技术的不断发展,我们期待Pandas在绘图功能上能够持续更新和完善,提供更多高级功能和选项,以满足更广泛的数据分析需求。同时,也建议读者在学习Pandas绘图的同时,积极探索其他可视化库和工具,以丰富自己的数据可视化技能。




👨‍💻博主Python老吕说:如果您觉得本文有帮助,辛苦您🙏帮忙点赞、收藏、评论,您的举手之劳将对我提供了无限的写作动力!🤞


🔥精品付费专栏:《Python全栈工程师》《跟老吕学MySQL》《Python游戏开发实战讲解》


🌞精品免费专栏:《Python全栈工程师·附录资料》《Pillow库·附录资料》《Pygame·附录资料》《Tkinter·附录资料》《Django·附录资料》《NumPy·附录资料》《Pandas·附录资料》《Matplotlib·附录资料》《Python爬虫·附录资料》


🌐前端免费专栏:《HTML》《CSS》《JavaScript》《Vue》


💻后端免费专栏:《C语言》《C++语言》《Java语言》《R语言》《Ruby语言》《PHP语言》《Go语言》《C#语言》《Swift语言》《跟老吕学Python编程·附录资料》


💾数据库免费专栏:《Oracle》《MYSQL》《SQL》《PostgreSQL》《MongoDB》


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Python老吕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值