使用Python Pandas按月年统计出现频率

3
假设我有以下数据系列:
Date      Category
2014-8    Facebook
2014-8    Vimeo
2014-8    Facebook
2014-8    Facebook
2014-9    Facebook
2014-9    Orkut
2014-9    Facebook
2014-9    Facebook
2014-9    Facebook
...
2014-10    Youtube
2014-10    DailyMotion
2014-10    Facebook
2014-10    Vimeo
2014-10    Facebook
2014-10    Facebook

我希望能按照每个月和年份分类计算每个类别(时间序列中的唯一值/因子)的数量。
Category     Date        Count
Facebook     2014-01     5
             2014-02     6
             2014-03     8
Vimeo        2014-01     3
             2014-02     10
             2014-03     9
youtube      2014-01     13
             2014-02     61
             2014-03     8

所以,当我调用Facebook时,我可以看到每个月Facebook出现的次数。

我尝试的方法是:

df['Date'] = df['Date'].map(lambda x: '{year}-{month}'.format(year=x.year,
                                                              month=x.month,
                                                              day=x.day))
a = df.groupby(['Category','year-month']).size()
1个回答

3
您需要按类别和日期进行分组,然后对日期进行计数:
>>> df.groupby(['Category', 'Date']).Date.count()
Category     Date   
DailyMotion  2014-10    1
Facebook     2014-10    3
             2014-8     3
             2014-9     4
Orkut        2014-9     1
Vimeo        2014-10    1
             2014-8     1
Youtube      2014-10    1
Name: Date, dtype: int64

要获取特定类别(例如“Facebook”)的每月总数,您首先需要在该类别上进行过滤:
>>> df[df.Category == 'Facebook'].groupby(['Category', 'Date']).Date.count()
Category  Date   
Facebook  2014-10    3
          2014-8     3
          2014-9     4
Name: Date, dtype: int6

非常感谢,我正在做这件事,但是如何获取Facebook或其他变量的信息呢?我的意思是,我想调用a ['Facebook'],以便获得他们的每月频率。 - Mohammad Saifullah
@VessilliZaytsev 请参见上面的详细回复。 - Alexander
我认为这会帮助我解决这个情况。谢谢。 - Mohammad Saifullah

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接