难以绘制 Pandas 多索引 DataFrame 或系列

Posted

技术标签:

【中文标题】难以绘制 Pandas 多索引 DataFrame 或系列【英文标题】:Difficulty in plotting Pandas Multi-indexed DataFrame or series 【发布时间】:2017-03-24 03:59:30 【问题描述】:

Please see this Image

s = pd.DataFrame(combined_df.groupby(['session','age_range', 'gender']).size()) s.head(25)

​                        0
session   age_range gender        
Evening   0 - 17    female   31022
                    male     21754
          18 - 24   female   79086
                    male     71563
                    unknown     75
          25 - 29   female   29321
                    male     46125
                    unknown     44
          30 - 34   female   21480
                    male     25803
                    unknown     33
          35 - 44   female   17369
                    male     20335
                    unknown    121
          45 - 54   female    8420
                    male     12385
                    unknown     24
          55+       female    3433
                    male      9880
                    unknown    212
Mid Night 0 - 17    female   18456
                    male     12185
          18 - 24   female   50536
                    male     45829
                    unknown     62

这就是我的多索引数据框的样子。我要做的就是以这样一种方式绘制数据,以便我可以比较在不同会话期间活跃的不同年龄组的男性和女性用户(比如早上、晚上、中午和晚上)。 例如,我将在我拥有的不同会话期间绘制年龄组 0-17、18-24、25-29... 的男性和女性用户。

注意:我已经尝试了一些堆栈溢出的示例,但其他网站仍然无法获得我需要的内容。所以,我请求你们尝试解决我的问题并帮助我找到解决方案。我已经为此苦苦挣扎了很多天,甚至文档也含糊不清。所以,请对这个问题有所了解。 ]2

【问题讨论】:

【参考方案1】:

我认为您可以将unstackDataFrame.plot.bar 一起使用:

import matplotlib.pyplot as plt
df = combined_df.groupby(['session','age_range', 'gender']).size()
df.unstack(fill_value=0).plot.bar()
plt.show()

【讨论】:

感谢您的回复。这个解决方案对我有用。但是 fill_value 抛出错误。所以,我删除了 fill_value 并且它工作得非常好。通过提到关卡,我可以深入了解 unstack 方法。

以上是关于难以绘制 Pandas 多索引 DataFrame 或系列的主要内容,如果未能解决你的问题,请参考以下文章

使用 pandas 进行多索引和绘图

Pandas 多索引 DataFrame 到 Numpy Ndarray

如何在 pandas DataFrame 中恢复\展开多索引

使用多索引在 pandas DataFrame 上设置值

在 Pandas 多索引 DataFrame 上扩展指数权重,其中每一天都是一个矩阵

Pandas - 在循环中应用多索引标签