分散绘制由2列分组并具有聚合的DataFrame

时间:2017-06-08 08:11:20

标签: python pandas matplotlib plot

我正在尝试对每个日期/时间组合的DataFrame中的项目数进行散点图。我已按以下方式对数据进行分组:

dff = pd.DataFrame(df.groupby(['date', 'time']).size().rename('count'))

它看起来像这样:

                           count
date         time       
2017-05-19   15:00         1
             15:30         1
             16:00         1
             16:30         1
             17:00         1
2017-05-23   10:00         2
             10:30         2
             11:00         2
...

现在,我如何分散绘制X轴上date和Y轴上time s的计数? plt.scatter(x, y, s=area, c=colors)是签名,但是我尝试从x选择ydff,但无法找到密钥。此外,scatter期望轴上有浮点数,而我有字符串。

1 个答案:

答案 0 :(得分:2)

这需要访问MultiIndex值,如下所示:

# replicating sample data (foo is just dummy data for the count)
grouped = df.groupby(['date', 'time'])['foo'].count()
date        time    
2015-01-01  15:00:00    1
            15:30:00    1
2015-01-02  16:00:00    2
Name: foo, dtype: int64

plt.scatter(x=grouped.index.get_level_values(0), y=grouped.index.get_level_values(1), s=[20*4**n for n in grouped.values])
plt.show()

您需要使用s中的scatter()参数,这是我用于此的文档 - pyplot scatter plot marker size

enter image description here