具有以下数据框: UserID TweetLanguage2014-08-25 21:00:00 001 english2014-08-27 21:04:00 001 arabic2014-08-29 22:07:00 001 espanish2014-08-25 22:09:00 002 english2014-08-26 22:09:00 002 espanish2014-08-25 22:09:00 003 english 我需要绘制每周使用一种以上语言发布的用户数量。例如,在上面的数据框中,用户 001 和 002 用不止一种语言发了推文。所以在情节中,这周的对应值应该是 2。其他周的故事相同。
3 回答

明月笑刀无情
TA贡献1828条经验 获得超4个赞
df.groupby([pd.Grouper(freq='W'), 'User ID'])['TweetLanguage'].nunique().unstack().plot()

炎炎设计
TA贡献1808条经验 获得超4个赞
df.groupby(pd.Grouper(key='datetime', freq='W')).apply(lambda df:\
df.groupby('UserID').apply(lambda df: len(df.TweetLanguage.value_counts())))
这是一个班轮,将在一周内分开一周并获得语言数量
df.groupby('UserID').apply(lambda df: len(df.TweetLanguage.value_counts()))
这将返回一个带有索引的系列:用户 ID 的值:每周使用的语言数..

RISEBY
TA贡献1856条经验 获得超5个赞
使用 2 groupbys。第一个查找每周以一种以上语言发布的用户,第二个计算每周有多少。
(df.groupby([df.index.year.rename('year'), df.index.week.rename('week'), 'UserID']).TweetLanguage.nunique() > 1).groupby(level=[0,1]).sum()
#year week
#2014 35 2.0
#Name: TweetLanguage, dtype: float64
添加回答
举报
0/150
提交
取消