Python Pandas-分组,然后按类别绘制

问题描述 投票:-1回答:1

非常简单的熊猫问题,我是初学者。

我有一个数据框'df',例如:

import pandas as pd
df = pd.DataFrame({'time': ['2019-04-23 10:21:00', '2019-04-23 11:14:00', '2019-04-24 11:30'], 
                   'category': ['A', 'B', 'A'],
                   'text': ['njrnfrjn','fmrjfmrfmr','mjrnfjrnmi']})

我只想:

  • 按类别和日期分组(每天)
  • 按类别和日期计算短信数量
  • 绘制几天中的所有时间序列(同一图中每个类别的一个时间序列)

谢谢

python pandas matplotlib group-by counting
1个回答
0
投票

您可以尝试以下操作:

df.groupby([df.time.dt.floor('d'), "category"]).size().unstack().plot()

说明

  • 第一步是您提到的grouby。为此,我们使用groupby
  • groupby中,因为我们需要按天对groupby进行分组,所以一种解决方案是在times列上使用dt.floor。我们为dt.floor传递参数time

    • 此外,为确保可访问"d"days列必须为floor。如果不是,请使用timetime series进行转换。
  • 现在我们有了组,可以使用pd.to_datetime方法轻松计算size

  • 下一步是将pd.to_datetime列(在此步骤中作为索引)转换为列。因为我们用两个键groupby,所以我们可以使用pd.to_datetime(df.time)

  • 最后,将size称为数据帧。由于数据框结构良好,因此无需任何参数即可工作(每列绘制一行,索引列(size)用作x轴


完整代码+插图

category

输出

unstack

© www.soinside.com 2019 - 2024. All rights reserved.