pandas中的绘图函数

pandas提供了一系列高级绘图方法,简化了利用matplotlib创建图表的过程。文章介绍了如何使用pandas绘制线型图、柱状图、直方图、密度图和散布图,并讨论了如何结合matplotlib进行更复杂的图表定制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

摘自《利用python进行数据分析》——Wes McKinney
在pandas中,我们有行标签、列标签以及分组信息(可能有)。也就是说,要制作一张完整的图表,原本需要一大堆的matplotlib代码,现在只需一两条简洁的语句就可以了。pandas有许多能够利用DataFrame对象数据组织特点来创建标准图标的高级绘图方法(这些函数的数量还在不断增加1)。

线型图

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
s = pd.Series(np.random.randn(10).cumsum(), index=np.arange(0, 100, 10))
s.plot()
plt.show()

简单的Series图表示例

pandas的大部分绘图方法都有一个可选的ax参数,它可以是一个matplotlib的subplot对象。这是你能够在网络布局中更为灵活地处理subplot的位置。DataFrame的plot方法会在一个subplot中为各列绘制一条线,并自动创建图例

df = pd.DataFrame(np.random.randn(10, 4).cumsum(0), columns=list('ABCD'), index=np.arange(0, 100, 10))
df.plot()
plt.show()

简单的DataFrame图表示例

Series.plot方法的函数:

参数说明
label用于图例的标签
ax要在其上进行绘制的matplotlib subplot对象。如果没有设置,则使用当前matplotlib subplot
style将要传给matplotlib的风格字符串(for example: ‘ko–’)
alpha图表的填充不透明(0-1)
kind可以是’line’, ‘bar’, ‘barh’, ‘kde’
logy在Y轴上使用对数标尺
use_index将对象的索引用作刻度标签
rot旋转刻度标签(0-360)
xticks用作X轴刻度的值
yticks用作Y轴刻度的值
xlimX轴的界限
ylimY轴的界限
grid显示轴网格线

DataFrame还有一些用于对列进行灵活处理的选项,例如,要将所有列都绘制到一个subplot中还是创建各自的subplot。参数如下表:

参数说明
subplots将各个DataFrame列绘制到单独的subplot中
sharex如果subplots=True,则共用同一个X轴,包括刻度和界限
sharey类似于上
figsize表示图像大小的元组
title表示图像标题的字符串
legend添加一个subplot图例(默认为True)
sort_columns以字母表顺序绘制各列,默认使用前列顺序

柱状图

fig, axes = plt.subplots(2, 1)
data = pd.Series(np.random.randn(16), index=list('abcdefghijklmnop'))
data.plot(kind='bar', ax=axes[0], color='k', alpha=0.7)
data.plot(kind='barh', ax=axes[1], color='k', alpha=0.7)
plt.show()

水平和垂直柱形图示例

对于DataFrame, 柱形图会将每一行的值分为一组。DataFrame的各列名称都被用作了图例的标题。设置stacked=True即可为DataFrame生成堆积柱形图,这样每行的值就会被堆积在一起。df.plot(kind='barh', stacked=True, alpha=0.5)

直方图和密度图

直方图(histogram)是一种可以对值频率进行离散化显示的柱状图。数据点被拆分到离散的、间隔均匀的面元中,绘制的是各面元中数据点的数量。Series.hist()。在之后调用plot时加上参数kind='kde'即可生成一张密度图。

散布图

散布图(scatter plot)是观察两个一维数据序列之间的关系的有效手段。matplotlib的scatter方法是绘制散布图的主要方法。利用plt.scatter()即可轻松绘制一张简单的直方图。而且,pandas提供了下一个能从DataFrame创建散步图矩阵的scatter_matrix函数。它还支持在对角线上放置个变量的直方图或密度图。

pandas中的绘图与matplotlib的联系

很多时候,我们想用方便的集成的绘图方式,比如df.plot(),但是,我们又想加上matplotlib的很多操作来增强图片的表现力,该怎么办。
示例

关键就是通过坐标系ax在两种作图方式之间建立联系

  1. 所以,本文中的部分代码可能马上就过时了
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值