PythonPandas绘图教程(详解版)

格桑2021-10-12 14:03

    Pandas在数据分析、数据可视化方面有着较为广泛的应用,Pandas对Matplotlib绘图软件包的基础上单独封装了一个plot()接口,通过调用该接口可以实现常用的绘图操作。本节我们深入讲解一下Pandas的绘图操作。

    Pandas之所以能够实现了数据可视化,主要利用了Matplotlib库的plot()方法,它对plot()方法做了简单的封装,因此您可以直接调用该接口。下面看一组简单的示例:

import pandas as pd
import numpy as np
#创建包含时间序列的数据
df = pd.DataFrame(np.random.randn(8,4),index=pd.date_range('2/1/2020',periods=8), columns=list('ABCD'))
df.plot()

    输结果图,如下所示:

PythonPandas绘图教程(详解版)

    如上图所示,如果行索引中包含日期,Pandas会自动调用gct().autofmt_xdate()来格式化x轴。

    除了使用默认的线条绘图外,您还可以使用其他绘图方式,如下所示:

    柱状图:bar()或barh()

    直方图:hist()

    箱状箱:box()

    区域图:area()

    散点图:scatter()

    通过关键字参数kind可以把上述方法传递给plot()。

    柱状图

    创建一个柱状图,如下所示:

import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(10,4),columns=['a','b','c','d','e'])
#或使用df.plot(kind="bar")
df.plot.bar()

    输出结果:

PythonPandas绘图教程(详解版)

    通过设置参数stacked=True可以生成柱状堆叠图,示例如下:

import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(10,5),columns=['a','b','c','d','e'])
df.plot(kind="bar",stacked=True)
#或者使用df.plot.bar(stacked="True")

    输出结果:

PythonPandas绘图教程(详解版)

    如果要绘制水平柱状图,您可以使用以下方法:

import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(10,4),columns=['a','b','c','d'])
print(df)
df.plot.barh(stacked=True)

    输出结果:

PythonPandas绘图教程(详解版)

    直方图

    plot.hist()可以实现绘制直方图,并且它还可以指定bins(构成直方图的箱数)。

import pandas as pd
import numpy as np
df = pd.DataFrame({'A':np.random.randn(100)+2,'B':np.random.randn(100),'C':
np.random.randn(100)-2}, columns=['A', 'B', 'C'])
print(df)
#指定箱数为15
df.plot.hist(bins=15)

    输出结果:

PythonPandas绘图教程(详解版)

    给每一列数据都绘制一个直方图,需要使以下方法:

import pandas as pd
import numpy as np
df = pd.DataFrame({'A':np.random.randn(100)+2,'B':np.random.randn(100),'C':
np.random.randn(100)-2,'D':np.random.randn(100)+3},columns=['A', 'B', 'C','D'])
#使用diff绘制
df.diff().hist(color="r",alpha=0.5,bins=15)

    输出结果: