09-python-pandas-plot
9. Pandas高级教程之:plot画图详解
简介
python中matplotlib是非常重要并且方便的图形化工具,使用matplotlib可以可视化的进行数据分析,今天本文将会详细讲解Pandas中的matplotlib应用。
基础画图
要想使用matplotlib,我们需要引用它:
In [1]: import matplotlib.pyplot as plt假如我们要从2020年1月1日开始,随机生成365天的数据,然后作图表示应该这样写:
ts = pd.Series(np.random.randn(365), index=pd.date_range("1/1/2020", periods=365))
ts.plot()
使用DF可以同时画多个Series的图像:

可以指定行和列使用的数据:

其他图像
plot() 支持很多图像类型,包括bar, hist, box, density, area, scatter, hexbin, pie等,下面我们分别举例子来看下怎么使用。
bar

多个列的bar:

stacked bar

barh
barh 表示横向的bar图:

Histograms

box

box可以自定义颜色:

可以转成横向的:

除了box,还可以使用DataFrame.boxplot来画box图:

boxplot可以使用by来进行分组:

现在给df加一列:

Area
使用 Series.plot.area() 或者 DataFrame.plot.area() 可以画出area图。

如果不想叠加,可以指定stacked=False

Scatter
DataFrame.plot.scatter() 可以创建点图。

scatter图还可以带第三个轴:

可以将第三个参数变为散点的大小:

Hexagonal bin
使用 DataFrame.plot.hexbin() 可以创建蜂窝图:

默认情况下颜色深度表示的是(x,y)中元素的个数,可以通过reduce_C_function来指定不同的聚合方法:比如 mean, max, sum, std.

Pie
使用 DataFrame.plot.pie() 或者 Series.plot.pie()来构建饼图:

可以按照列的个数分别作图:

更多定制化的内容:

如果传入的value值加起来不是1,那么会画出一个伞形:

在画图中处理NaN数据
下面是默认画图方式中处理NaN数据的方式:
Line
Leave gaps at NaNs
Line (stacked)
Fill 0’s
Bar
Fill 0’s
Scatter
Drop NaNs
Histogram
Drop NaNs (column-wise)
Box
Drop NaNs (column-wise)
Area
Fill 0’s
KDE
Drop NaNs (column-wise)
Hexbin
Drop NaNs
Pie
Fill 0’s
其他作图工具
散点矩阵图Scatter matrix
可以使用pandas.plotting中的scatter_matrix来画散点矩阵图:

密度图Density plot
使用 Series.plot.kde() 和 DataFrame.plot.kde() 可以画出密度图:

安德鲁斯曲线Andrews curves
安德鲁斯曲线允许将多元数据绘制为大量曲线,这些曲线是使用样本的属性作为傅里叶级数的系数创建的. 通过为每个类对这些曲线进行不同的着色,可以可视化数据聚类。 属于同一类别的样本的曲线通常会更靠近在一起并形成较大的结构。

平行坐标Parallel coordinates
平行坐标是一种用于绘制多元数据的绘制技术。 平行坐标允许人们查看数据中的聚类,并直观地估计其他统计信息。 使用平行坐标点表示为连接的线段。 每条垂直线代表一个属性。 一组连接的线段代表一个数据点。 趋于聚集的点将显得更靠近。

滞后图lag plot
滞后图是用时间序列和相应的滞后阶数序列做出的散点图。可以用于观测自相关性。

自相关图Autocorrelation plot
自相关图通常用于检查时间序列中的随机性。 自相关图是一个平面二维坐标悬垂线图。横坐标表示延迟阶数,纵坐标表示自相关系数。

Bootstrap plot
bootstrap plot用于直观地评估统计数据的不确定性,例如均值,中位数,中间范围等。从数据集中选择指定大小的随机子集,为该子集计算出相关统计信息, 重复指定的次数。 生成的图和直方图构成了引导图。

RadViz
他是基于弹簧张力最小化算法。它把数据集的特征映射成二维目标空间单位圆中的一个点,点的位置由系在点上的特征决定。把实例投入圆的中心,特征会朝圆中此实例位置(实例对应的归一化数值)“拉”实例。

图像的格式
matplotlib 1.5版本之后,提供了很多默认的画图设置,可以通过matplotlib.style.use(my_plot_style)来进行设置。
可以通过使用matplotlib.style.available来列出所有可用的style类型:
去掉小图标
默认情况下画出来的图会有一个表示列类型的图标,可以使用legend=False禁用:

设置label的名字

缩放
画图中如果X轴或者Y轴的数据差异过大,可能会导致图像展示不友好,数值小的部分基本上无法展示,可以传入logy=True进行Y轴的缩放:

多个Y轴
使用secondary_y=True 可以绘制多个Y轴数据:

小图标上面默认会添加right字样,想要去掉的话可以设置mark_right=False:
坐标文字调整
使用时间做坐标的时候,因为时间太长,导致x轴的坐标值显示不完整,可以使用x_compat=True 来进行调整:

如果有多个图像需要调整,可以使用with:

子图
绘制DF的时候,可以将多个Series分开作为子图显示:

可以修改子图的layout:

上面等价于:
一个更复杂的例子:

画表格
如果设置table=True , 可以直接将表格数据一并显示在图中:

table还可以显示在图片上面:

使用Colormaps
如果Y轴的数据太多的话,使用默认的线的颜色可能不好分辨。这种情况下可以传入colormap 。

最后更新于
这有帮助吗?