Вычисление средневзвешенного значения из моего фрейма данных - PullRequest
0 голосов
/ 16 января 2019

Я пытаюсь подсчитать средневзвешенное количество раз, когда публикация в социальных сетях производилась в определенный день недели с 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 голосов
/ 16 января 2019

Используйте .value_counts() с аргументом нормализации, группируя только по году.

Пример данных

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...