Python Pandas-从dataframe按类别绘制多个条形图

Python Pandas-从dataframe按类别绘制多个条形图,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,我有一个看起来像 df = pd.DataFrame(data={'ID':[1,1,1,2,2,2], 'Value':[13, 12, 15, 4, 2, 3]}) Index ID Value 0 1 13 1 1 12 2 1 15 3 2 4 4 2 2 5 2 3 我想按IDs类别绘制,这样每个类别都有不同的条形图, 所以在这种情况下,我有两个数字, 一个ID=1的条形图, 以及ID=2的第二个单独的图形条形图 我是否可以不使用df

我有一个看起来像

df = pd.DataFrame(data={'ID':[1,1,1,2,2,2], 'Value':[13, 12, 15, 4, 2, 3]})

Index ID Value
0   1   13
1   1   12
2   1   15
3   2   4
4   2   2
5   2   3
我想按IDs类别绘制,这样每个类别都有不同的条形图, 所以在这种情况下,我有两个数字, 一个ID=1的条形图, 以及ID=2的第二个单独的图形条形图


我是否可以不使用df.ploty='Value',kind='bar'之类的循环更好地执行此操作?

2个选项是可能的,一个使用matplotlib,另一个使用seaborn,您现在应该完全可以,因为它与Pandas配合得很好

大熊猫 您必须创建一个子地块,其中包含设置的许多列和行。如果nrows或ncols设置为1,则在1-D中给出数组轴,否则在2-D中给出数组轴。然后,将此对象指定给Pandas plot方法

如果类别数未知或不高,则需要使用循环

import pandas as pd
import matplotlib.pyplot as plt

fig, axes = plt.subplots( nrows=1, ncols=2, sharey=True )

df.loc[ df["ID"] == 1, 'Value' ].plot.bar( ax=axes[0] )
df.loc[ df["ID"] == 2, 'Value' ].plot.bar( ax=axes[1] )

plt.show()
海生大熊猫 是我所知道的最神奇的图形工具。设置参数col时,该函数可根据列的值绘制一系列图形。您可以使用kind选择打印类型

为了与df.plot.bar进行比较,我添加了一个列索引。如果不想,请删除x='index',它将显示一个带有错误的唯一条

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

sns.set_style('white')

df['index'] = [1,2,3] * 2
sns.catplot(kind='bar', data=df, x='index', y='Value', col='ID')
plt.show()