在 pandas 中绘制条形图的便捷方法

Pan*_*aaa 2 python matplotlib python-3.x pandas

我有一个 DataFrame 包含如下,其中第一行是“列”:

id,year,type,sale  
1,1998,a,5  
2,2000,b,10  
3,1999,c,20  
4,2001,b,15  
5,2001,a,25  
6,1998,b,5  
...
Run Code Online (Sandbox Code Playgroud)

我想画两个人物,第一个就像

在此输入图像描述

第二个就像

在此输入图像描述

我草稿中的数字可能比例不正确。我是 Python 的新手,我知道 Python 中的绘图功能非常强大。我相信一定很容易绘制出这样的数字。

gca*_*tes 5

Pandas 库提供了简单高效的工具来分析和绘制数据帧。

考虑到 pandas 库已安装并且数据位于.csv文件中(与您提供的示例相匹配)。

1.导入pandas库并加载数据

import pandas as pd

data = pd.read_csv('filename.csv')
Run Code Online (Sandbox Code Playgroud)

您现在拥有一个 Pandas 数据框,如下所示:

    id  year  type  sale
0   1   1998    a   5
1   2   2000    b   10
2   3   1999    c   20
3   4   2001    b   15
4   5   2001    a   25
5   6   1998    b   5
Run Code Online (Sandbox Code Playgroud)

2. 绘制“销售”与“类型”的关系图

这可以通过以下方式轻松实现:

data.plot('type', 'sale', kind='bar')
Run Code Online (Sandbox Code Playgroud)

这导致

图片1

如果您希望对每种类型的销售额进行求和,data.groupby('type').sum().plot(y='sale', kind='bar')就可以了(请参阅#3 进行解释)

3. 绘制“销售”与“年份”的图

这基本上是相同的命令,只是您必须首先使用 pandas 函数对同一年的所有销售进行求和groupby

data.groupby('year').sum().plot(y='sale', kind='bar')
Run Code Online (Sandbox Code Playgroud)

这将导致

图片2

编辑:

4 每年分解不同类型

您还可以通过对 2 个变量使用 groupby 来取消每年每个柱的不同“类型”

data.groupby(['year', 'type']).sum().unstack().plot(y='sale', kind='bar', stacked=True)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

笔记:

有关实现所需布局的更多信息,请参阅有关可视化的 Pandas 文档。