Pandas数据分析之Matplotlib数据可视化库函数详解运用

1,515 阅读7分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

前言

Pandas数据可视化十分的好用,相对于Excel我们可以使用的更加灵活。而Pandas的可视化是依赖于Matplotlib库和seaborn库,Matplotlib自身也是一个功能十分丰富的库,可以构建出很多直观简洁多样的图片。而利用Pandas中DataFrame或是series数据集构建的可视化也在一些实际的数据分析也特别实用。本篇文章将详细介绍各个不同绘图函数的功能和作用以及带来的展示效果。

一、查看Pandas版本

引入pandas后通过pandas.__version__就可看到版本:

print(pd.__version__)

二、图片展示设置

由于Pandas是依赖Matplotlib库和seaborn库来实现绘图的,所以设置字体也就是设置Matplotlib和seaborn绘图时的字体。在没有设置中文字体的情况下,显示中文的时候会出现方块形状。

matplotlib的配置文件即 .rc 文件,为 matplotlib 输出图形的几乎所有属性指定了永久的默认值。(图形属性包括包括窗体大小、每英寸的点数、线条宽度、颜色、样式、坐标轴、坐标和网络属性、文本、字体等)

输入:

plt.rcParams.keys()

图片.png 可查看rcParams参数设置,这里列出几个非常常用的rc参数函数: # 显示图像的最大范围

lt.rcParams['figure.figsize']

#分辨率

matplotlib.rcParams[‘savefig.dpi']

# 差值方式

plt.rcParams['image.interpolation'] 

    //最邻近插值
    resize(src, dst, Size(0, 0), 0.5, 0.5, INTER_NEAREST);//如果Size(0,0),则图像大小为Size(width*fx height*fy)
    imshow("NEAREST", dst);
    //双线性插值
    resize(src, dst, Size(width * 2, height * 2), fx, fy, INTER_LINEAR);
    imshow("LineNear", dst);
    //双立方插值
    resize(src, dst, Size(width * 2, height * 2), fx, fy, INTER_CUBIC);
    imshow("CUBIC", dst);
    //LANCZOS插值
    resize(src, dst, Size(width * 2, height * 2), fx, fy, INTER_LANCZOS4);
    imshow("LANCZOS", dst);

灰度空间

plt.rcParams['image.cmap']

//perceptual uniform sequential colormaps:感知均匀的序列化 colormap

sequential colormaps:序列化(连续化)色图 colormap;

gray:0-255 级灰度,0:黑色,1:白色,黑底白字;
gray_r:翻转 gray 的显示,如果 gray 将图像显示为黑底白字,gray_r 会将其显示为白底黑字;
binary

diverging colormaps:两端发散的色图 colormaps;

seismic

qualitative colormaps:量化(离散化)色图;

miscellaneous colormaps:其他色图;

rainbow

#设置字体和样式

plt.rcParams['font.sans-serif']

//字体为SimHei显示中文

plt.rcParams['font.sans-serif'] = 'SimHei'

样式

plt.rcParams['font.family']

plt.rcParams['font.stretch'] = 'normal'

plt.rcParams['font.style'] = 'normal'

plt.rcParams['font.variant'] = 'normal'

plt.rcParams['font.weight'] = 'normal'

设置字体大小

plt.rcParams['font.size']

#设置显示字符

plt.rcParams['axes.unicode_minus']

#设置线条样式

plt.rcParams['lines.linestyle']

#设置线条宽度

plt.rcParams['lines.linewidth']

想设置其他的参数可使用plt.rcParams.keys()自行寻找。

中文展示常用设置为:

 
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['KaiTi']
mpl.rcParams['font.serif'] = ['KaiTi']
mpl.rcParams['axes.unicode_minus'] = False 
 
import seaborn as sns
sns.set_style("darkgrid",{"font.sans-serif":['KaiTi', 'Arial']})   

三、 常用图例

首先是绘图时函数的各个参数说明:

class SeriesPlotMethods(BasePlotMethods):
    """Series plotting accessor and method
    Examples
    --------
    >>> s.plot.line()
    >>> s.plot.bar()
    >>> s.plot.hist()
    Plotting methods can also be accessed by calling the accessor as a method
    with the ``kind`` argument:
    ``s.plot(kind='line')`` is equivalent to ``s.plot.line()``
    """
 
    def __call__(self, kind='line', ax=None,
                 figsize=None, use_index=True, title=None, grid=None,
                 legend=False, style=None, logx=False, logy=False,
                 loglog=False, xticks=None, yticks=None,
                 xlim=None, ylim=None,
                 rot=None, fontsize=None, colormap=None, table=False,
                 yerr=None, xerr=None,
                 label=None, secondary_y=False, **kwds):
        return plot_series(self._data, kind=kind, ax=ax, figsize=figsize,
                           use_index=use_index, title=title, grid=grid,
                           legend=legend, style=style, logx=logx, logy=logy,
                           loglog=loglog, xticks=xticks, yticks=yticks,
                           xlim=xlim, ylim=ylim, rot=rot, fontsize=fontsize,
                           colormap=colormap, table=table, yerr=yerr,
                           xerr=xerr, label=label, secondary_y=secondary_y,
                           **kwds)
           --------
 
kind:种类 line(默认)
ax:要在其上进行绘制的matplotlib.subplot对象,如果没有,则使用默认的subplot对象。 
figsize:图像尺寸
use_index:True(默认),False。表示默认情况下,会将series和dataframe的index传给matplotlib,用已绘制X轴。
title:标题
grid:网格
legend:图例
style,绘图的风格,如‘ko--’
logx:在X轴上使用对数标尺
logy: 在Y轴上使用对数标尺
loglog:
xticks=None,用做x刻度的值
yticks=None,用做Y轴刻度的值
xlim=None, X轴的界限如【0,10】
ylim=None,Y轴的界限
rot=None,  旋转刻度标签 0-360

图片.png

一、线形图

显示数据的变化趋势,反映事物的变化情况。

可用于衔接收盘价而形成的图形,仅记录收盘价,至於开盘价、当日最高价、当日最高的变动及波动幅度则欠缺 Dataframe.plot.line()

图片.png

图片.png 画一般的线图推荐使用:DataFrame.plot.line(self, x=None, y=None, **kwargs).

二、条形图

能够使人们一眼看出各个数据的大小,易于比较数据之间的差别。

Dataframe.plot.bar()

图片.png

堆积条形图

Dataframe.plot.bar(stacked=True)

水平条形图

Dataframe.plot.barh()

图片.png

三、饼形图

饼图可以用来将 数据点(在图表中绘制的单个值,这些值由条形、柱形、折线、饼图或圆环图的扇面、圆点和其他被称为数据标记的图形表示。相同颜色的数据标记组成一个数据系列) 显示为数据总额的百分比。

当多个数据点的数据值都小于饼图的 5% 时,区分各个扇区将十分困难。

扇形统计图可以比较清楚地反映出部分与部分、部分与整体之间的数量关系。易于显示每组数据相对于总数的大小。

饼图必须设定y轴或者

subplots=True
  • subplots 为必要参数设置为True,当然也可以指定y的值。
  • figsize 图片的大小。
  • autopct 显示百分比。
  • radius 圆的半径。
  • startangle 旋转角度。
  • legend 图例。
  • colormap 颜色。

图片.png

四 、散点图

散点图表示因变量随自变量而变化的大致趋势,据此可以选择合适的函数对数据点进行拟合。

用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联或总结坐标点的分布模式。散点图将序列显示为一组点。值由点在图表中的位置表示。类别由图表中的不同标记表示。散点图通常用于比较跨类别的聚合数据。

图片.png

在使用scatter数据必须是DataFrame,需要指明x和y值。

DataFrame.plot.scatter('x','y')

五、面积图

应用场景:范围面积图用来展示持续性数据,可很好地表示趋势、累积、减少以及变化。堆积面积图还可以显示部分与整体的关系。折线图和面积图都可以用来帮助我们对趋势进行分析,当数据集有合计关系或者你想要展示局部与整体关系的时候,使用面积图为更好的选择。

评价:大多用来展示差值变化

DataFrame.plot.area(stacked=False)

图片.png

生成堆积图

df2.plot.area()

图片.png

六、箱线图

箱线图是一种用作显示一组数据分散情况资料的统计图。因形状如箱子而得名。在各种领域也经常被使用,常见于品质管理。它主要用于反映原始数据分布的特征,还可以进行多组数据分布特征的比较。箱线图的绘制方法是:先找出一组数据的上边缘、下边缘、中位数和两个四分位数;然后, 连接两个四分位数画出箱体;再将上边缘和下边缘与箱体相连接,中位数在箱体中间。

图片.png

图片.png

这组数据显示出:

  • 最小值(minimum)=5
  • 下四分位数(Q1)=7
  • 中位数(Med--也就是Q2)=8.5
  • 上四分位数(Q3)=9
  • 最大值(maximum)=10
  • 平均值=8
  • 四分位间距(interquartile range)={\displaystyle Q3-Q1}=2 (即ΔQ)

在区间 Q3+1.5ΔQ, Q1-1.5ΔQ 之外的值被视为应忽略(farout)。

  • farout: 在图上不予显示,仅标注一个符号∇。
  • 最大值区间: Q3+1.5ΔQ
  • 最小值区间: Q1-1.5ΔQ

最大值与最小值产生于这个区间。区间外的值被视为outlier显示在图上.

  • mild outlier = 3.5
  • extreme outlier = 0.5

图形参数:

DataFrame.boxplot(self, column=None, by=None, ax=None, fontsize=None, rot=0, grid=True, figsize=None, layout=None, return_type=None, **kwds)
df3.iloc[1:15].plot.box()

图片.png

点关注,防走丢,如有纰漏之处,请留言指教,非常感谢

以上就是本期全部内容。我是fanstuck ,有问题大家随时留言讨论 ,我们下期见。