首页 > 解决方案 > 每个用户使用 pandas 的事件总数

问题描述

有两个时间序列:a.csvb.csv,我很难解释和生成:“所有 30 岁以上男性用户的每个用户事件总数的直方图”(在 Python 中使用 Pandas,matplotlib)

这是我到目前为止的工作:

df = pd.read_csv("a.csv") ## 
df1 = pd.read_csv("b.csv") ##
event_date = df['event_date'].astype('datetime64[ns]')
s1 = pd.merge(df, df1, how ='left', on=['user_id'])  ## merge casedf and demodf 
s2 = s1[['user_id', 'event_date', 'age', 'gender']].groupby(['user_id', 'event_date']).agg(['mean', 'count'])
counts = s1.groupby('user_id').size()
counts
d1f = counts.to_frame().reset_index()
d1f.head()
d1f = d1f.rename(columns={'user_id': 'USER-ID', 0: 'TOTAL-EVENTS'})
d1f.head() 
d2f = pd.read_csv("users.csv") 
# df2.head()
d2f = d2f.rename(columns={'age': 'AGE', 'gender': 'GENDER', 'user_id': 'USER-ID'})
d2f.head()
d1 = pd.merge(d1f, d2f, how ='left', on=['USER-ID'])  
d1.head()
d2m = d1[(d1["AGE"] > 30) & (d1["GENDER"] == 'm')]
d2m
x = d2m['TOTAL-EVENTS']
num_bins = 30
n, bins, patches = plt.hist(x, num_bins, facecolor='blue', alpha=0.5)
plt.show()

我认为不仅我错误地解释了所需的直方图,而且还因为制作/绘制它而过度自杀。

在此处输入图像描述

标签: pythonpandasdataframematplotlib

解决方案


除了这个,一切看起来都不错。要获取每个用户的事件计数,您需要对值进行分组。

x = d2m['TOTAL-EVENTS']

x = d2m['TOTAL-EVENTS'].groupby(['USER-ID'])

推荐阅读