python - 每个用户使用 pandas 的事件总数
问题描述
有两个时间序列: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()
我认为不仅我错误地解释了所需的直方图,而且还因为制作/绘制它而过度自杀。
解决方案
除了这个,一切看起来都不错。要获取每个用户的事件计数,您需要对值进行分组。
从
x = d2m['TOTAL-EVENTS']
至
x = d2m['TOTAL-EVENTS'].groupby(['USER-ID'])
推荐阅读
- ios - 如何将 UIimage 视图旋转到您触摸屏幕的位置?
- json - 如何在 Ui.Vision 中使用 csvread 将数据输入文本框
- python - PyTorch torchvision 数据集下载速度很慢
- node.js - 无法在 mongoDB 上搜索所有三个属性
- python - 有没有办法改变所有 QMessageBox 的 OK 按钮的样式表?
- javascript - 根据vue js中的选项选择在不同的div中显示数据
- django - Django - Textchoices 和 admin.site.register
- java - 尝试使用 Spring Boot 和 React JS 将 CSV 文件下载为实际文件
- for-loop - 在html r-markdown中使用for循环绘制多个rpivotTable
- c# - 关于我的电报机器人的动态键盘的问题。如何获取回调数据?C#