有两个时间序列:a.csv和b.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()
我认为,不仅我在解释所需的直方图时错了,而且还因为制作/绘图而自杀。
答案 0 :(得分:0)
除此以外,一切看起来都不错。为了获取每个用户的事件计数,您需要对这些值进行分组。
来自
x = d2m['TOTAL-EVENTS']
收件人
x = d2m['TOTAL-EVENTS'].groupby(['USER-ID'])
答案 1 :(得分:0)