从我的数据帧计算加权平均值

时间:2019-01-16 19:05:00

标签: python pandas group-by data-science

我正在尝试计算2009年至2018年某个工作日在社交媒体上发布帖子的次数的加权平均值。

这是我的代码:

weight = fb_posts2[fb_posts2['title']=='status'].groupby('year',as_index=False).apply(lambda x: (x.count())/x.sum())

我想做的是按年份和工作日分组,计算一年中每个工作日发生的时间,然后将其除以每年的职位总数。想法是返回一个数据框,该数据框的加权平均值为2009年至2018年之间每个工作日发生了多少次。

这是我正在与之交互的数据框的示例: Dataframe

1 个答案:

答案 0 :(得分:1)

.value_counts()与normalize参数一起使用,仅按年份分组。

样本数据

import pandas as pd
import numpy as np

np.random.seed(123)
df = pd.DataFrame({'year': np.random.choice([2010, 2011], 1000),
                   'weekday': np.random.choice(list('abcdefg'), 1000),
                   'val': np.random.normal(1, 10, 1000)})

代码:

df.groupby('year').weekday.value_counts(normalize=True)

输出:

year  weekday
2010  d          0.152083
      f          0.147917
      g          0.147917
      c          0.143750
      e          0.139583
      b          0.137500
      a          0.131250
2011  d          0.182692
      a          0.163462
      e          0.153846
      b          0.148077
      c          0.128846
      f          0.111538
      g          0.111538
Name: weekday, dtype: float64