数据框的条形图
Posted
技术标签:
【中文标题】数据框的条形图【英文标题】:Bar Chart from Dataframe 【发布时间】:2017-10-24 14:08:02 【问题描述】:我正在处理具有以下示例数据的熊猫数据框 (df):
0 Dec-16 N
1 Jan-17 N
2 Feb-17 Y
3 Feb-17 N
4 Jan-17 N
5 Mar-17 Y
6 Mar-17 Y
7 Jan-17 N
8 Jan-17 Y
使用
df_group = df.groupby(['MMM-YY', 'Valid'])
我得到以下输出:
MMM-YY Valid
Dec-16 N 1
Feb-17 N 1
Y 1
Jan-17 N 3
Y 1
Mar-17 Y 2
我想使用这些数据创建一个条形图(以百分比显示 Y 和 N 的条形),但遗憾的是无法实现。我尝试将上述输出转换为新的数据帧,但没有成功。
任何解决此问题的指针将不胜感激。
【问题讨论】:
该输出有什么问题?我知道这是一个简单的问题,但我们需要知道出了什么问题才能给你一个明确的答案。您遇到了什么错误,或者这与您的期望有何不同?看How to Ask。 我想将从 groupby 收到的输出转换为数据框,以便生成条形图。这就是我认为对我有用的方法。如果有任何替代方法可以帮助我直接生成条形图就足够了。 @aryamccarthy 感谢您的链接,我的要求与您分享的非常相似。让我解决。不幸的是,我找不到这个。 【参考方案1】:我认为你需要crosstab
和normalize
每行+ DataFrame.plot.bar
:
df_group = df = pd.crosstab(df['MMM-YY'], df['Valid'], normalize=0)
print (df_group)
Valid N Y
MMM-YY
Dec-16 1.00 0.00
Feb-17 0.50 0.50
Jan-17 0.75 0.25
Mar-17 0.00 1.00
df_group.plot.bar()
如果需要每列标准化:
df_group1 = df = pd.crosstab(df['MMM-YY'], df['Valid'], normalize=1)
print (df_group1)
Valid N Y
MMM-YY
Dec-16 0.2 0.00
Feb-17 0.2 0.25
Jan-17 0.6 0.25
Mar-17 0.0 0.50
df_group1.plot.bar()
如果只需要计数值:
df1 = df = pd.crosstab(df['MMM-YY'], df['Valid'])
print (df1)
Valid N Y
MMM-YY
Dec-16 1 0
Feb-17 1 1
Jan-17 3 1
Mar-17 0 2
df1.plot.bar()
【讨论】:
以上是关于数据框的条形图的主要内容,如果未能解决你的问题,请参考以下文章