Pandas数据可视化实战:从基础绘图到线性拟合
本文详解Pandas在数据可视化中的应用,涵盖从创建包含正态分布与对数分布的DataFrame开始,演示如何结合Matplotlib自定义坐标轴、绘制平均线与垂线。进一步展示多子图布局、直方图对比及折线图生成,最后通过最小二乘法实现线性拟合,提供完整代码示例与参数说明。
Pandas数据处理基础与绘图原理
Pandas作为Python生态中核心的数据处理库,以其便捷的操作接口著称。其底层架构基于NumPy数组,大量核心功能由NumPy或Pandas内置扩展模块实现。这些模块通过Cython编译为C代码并在C层面执行,从而确保了高效的数据处理速度。
接下来,我们将通过具体实例展示Pandas在数据处理与可视化方面的强大功能。
1. 数据构建
构建示例数据集
利用Pandas可以高效地构建数据集。以下示例演示如何创建一个包含5列、1000行的DataFrame对象:
mu1, sigma1 = 0, 0.1
mu2, sigma2 = 0.2, 0.2
n = 1000df = pd.DataFrame(
{
"a1": pd.np.random.normal(mu1, sigma1, n),
"a2": pd.np.random.normal(mu2, sigma2, n),
"a3": pd.np.random.randint(0, 5, n),
"y1": pd.np.logspace(0, 1, num=n),
"y2": pd.np.random.randint(0, 2, n),
}
)
- 其中,a1和a2列的数据分别来自正态(高斯)分布的随机抽样。
- a3列的数据为0至4范围内的随机整数。
- y1列的数据遵循0到1之间的对数均匀分布。
- y2列的数据为0到1范围内的随机整数。
生成的数据结构如下所示:

自定义坐标轴与辅助线绘制
2. 图像绘制
Pandas的绘图函数返回一个matplotlib的Axes对象,这允许我们在该对象上进行深度自定义,例如添加垂线和平行线。这种灵活性对于以下场景非常有用:
1. 绘制平均参考线
2. 标记关键数据点
import matplotlib.pyplot as plt
ax = df.y1.plot()
ax.axhline(6, color="red", linestyle="--")
ax.axvline(775, color="red", linestyle="--")
plt.show()

此外,我们还可以自定义单个图形中显示的子图数量:
fig, ax = plt.subplots(2, 2, figsize=(14,7))
df.plot(x="index", y="y1", ax=ax[0, 0])
df.plot.scatter(x="index", y="y2", ax=ax[0, 1])
df.plot.scatter(x="index", y="a3", ax=ax[1, 0])
df.plot(x="index", y="a1", ax=ax[1, 1])
plt.show()

直方图与多子图布局
3. 绘制直方图
Pandas提供了简洁的方法来实现两个图形形状的对比分析:
df[["a1", "a2"]].plot(bins=30, kind="hist")
plt.show()

同时支持多子图绘制功能:
df[["a1", "a2"]].plot(bins=30, kind="hist", subplots=True)
plt.show()

生成折线图同样简单直观:
df[['a1', 'a2']].plot(by=df.y2, subplots=True)
plt.show()

线性回归拟合实现
4. 线性拟合分析
Pandas还可用于数据拟合,下面演示如何使用Pandas寻找与下图最接近的直线:

利用最小二乘法计算该直线与数据点的最短距离:
df['ones'] = pd.np.ones(len(df))
m, c = pd.np.linalg.lstsq(df[['index', 'ones']], df['y1'], rcond=None)[0]
基于最小二乘法的计算结果,绘制y值与拟合直线的关系:
df['y'] = df['index'].apply(lambda x: x * m + c)
df[['y', 'y1']].plot()
plt.show()

至此,关于Pandas数据处理及绘图实现的介绍已完成。如需了解更多Pandas绘图相关内容,建议查阅本站过往文章或继续浏览后续章节。感谢大家的支持!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













