Pandas - 绘图操作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pandas - 绘图操作相关的知识,希望对你有一定的参考价值。

参考技术A

Jupyter Notebook 中执行 %matplotlib inline 魔法指令,可以方便地在 Jupyter Notebook 中绘制 matplot 图形。

pandas 中绘图非常方便,只需要一个简单的 plot 方法,即可绘制出折线图。下面,我们首先构造一个 Series

构造出的 Series 内容如下:

绘图:

会指出来的图形就是 X**2 了:

对于 DataFrame 也可以直接调用 .plot() 方法来绘制折线图。首先,构造一个 DataFrame

由于 DataFrame 中相当于包含了多个索引相同的 Series ,因此将会绘制出 x x*2 x*3 3 条不同的折线:

除了默认的折线图之外,我们可以指定 kind 属性,来绘制不同的统计图形,比如柱形图、散点图等。首先,构造一个 Series

下面,我们分别 kind=\'bar\' kind=\'barh\' 来将上面的 Series 绘制成柱状图和条形图:

对于 DataFrame 也可以绘制柱形图,首先构造一个 DataFrame

绘制柱形图:

下面,再构造一个新的 DataFrame ,用于绘制散点图:

散点图需要指定 x y 变量, alpha 表示透明度,可以通过透明度看出落在某个坐标上的点的多少:

上述所有绘图方式,可以不传入 kind ,直接使用 df.plot.scatter 来绘制相应的图形:

pandas之绘图

pandas绘图


pandas绘图是基于matplotlib的上层封装 正常工作一般先用pandas绘图,再辅以matplotlib修改组件


Pandas绘图的优势:

  • 代码简洁
  • 针对pandas数据结构专门优化过(series/DataFrame) 劣势:
  • pandas绘图自定义程度较差
  • matplotlib自定义程度高

 

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams[‘font.family‘] = [‘Artial Unicode MS‘,‘Microsoft Yahei‘, ‘SimHei‘, ‘sans-serif‘] # 解决中文乱码问题
# plt.rcParams[‘axes.unicode_minus‘] = False # simhei黑体字 符号乱码 解决
# plt.style.use(‘seaborn‘)  # 改变图像风格
# series绘图
ts = pd.Series(np.random.randn(1000),index=pd.date_range(‘1/1/2000‘,periods=1000))
ts.plot(figsize=(18,8),title=‘股票价格‘)
# DataFrame绘图
df = pd.DataFrame(
    np.random.randn(10,4).cumsum(0),
    columns=[‘A‘,‘B‘,‘C‘,‘D‘],
    index=np.arange(0,100,10)
)
df.plot()

 

pandas绘图常见的参数

  • 核密度估计图比直方图的优势
    • 线条表现数据分布,可以对比多组数据的分布情况
    • 分布情况平滑,更容易观看
df.plot()
df.plot(kind=‘bar‘)  # 柱状图
df.plot(kind=‘hist‘, alpha=0.5)
df.plot(kind=‘kde‘,figsize=(18,5),alpha=0.5,grid=True,legend=True) # 核密度估计
# 修改网格粗细和透明度
plt.grid(linewidth=0.2, alpha=0.5)

 

matplotlib子图和pandas结合  

fig,axis = plt.subplots(2,1)  # 2,1 2行1列
df.plot.bar(ax=axis[0],alpha=0.5)
df.plot.line(ax=axis[1],color=‘red‘,alpha=0.5)

堆积柱状图

df  = pd.DataFrame(
    np.random.rand(6,4),
    index=[‘one‘,‘two‘,‘three‘,‘four‘,‘five‘,‘six‘],
    columns=pd.Index([‘A‘,‘B‘,‘C‘,‘D‘],name=‘Genus‘)
    )
df

df.plot.bar(stacked=True,alpha=0.5,legend=False)
s = pd.Series([1,1,2,3,4,4,4,4,5,6,6])
s.value_counts().plot.bar()
s.value_counts().plot.barh()

  

  

  

  

  

以上是关于Pandas - 绘图操作的主要内容,如果未能解决你的问题,请参考以下文章

pandas学习以及matplotlib绘图

pandas之绘图

Pandas内置绘图大全

从 Pandas DataFrame 绘图时注释数据点

绘图与可视化--pandas中的绘图函数

Python Pandas 绘图警告