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

A convenient way to plot bar-plot in Python pandas

我有一个 DataFrame 包含如下,其中第一行是 "columns":

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  
...

我想画两个图,第一个像

第二个像

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

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

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

1。导入 pandas 库并加载数据

import pandas as pd

data = pd.read_csv('filename.csv')

你现在有一个 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

2。绘制 "sale" 与 "type"

这很容易实现:

data.plot('type', 'sale', kind='bar')

这导致

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

3。绘制 "sale" 与 "year"

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

data.groupby('year').sum().plot(y='sale', kind='bar')

这将导致

编辑:

4 每年拆开不同类型

您还可以通过在 2 个变量上使用 groupby

来为每个条形拆分每年不同的 'type'
data.groupby(['year', 'type']).sum().unstack().plot(y='sale', kind='bar', stacked=True)

注:

有关实现所需布局的详细信息,请参阅 Pandas Documentation on visualization