我正在尝试优化可视化效果,而这种可视化方式过于满足以下每年的年度数据。
以下是我usa_signup_age
数据框的剪切:
gender age
signup
2002-10-29 m 31.0
2002-10-29 m 23.0
2002-10-29 m 23.0
2002-11-22 m 29.0
2002-11-28 m 25.0
2002-12-02 m 31.0
2003-02-06 m 29.0
2003-02-06 m 25.0
2003-02-06 m 25.0
2003-02-06 m 42.0
我的目标是以六个月的间隔计算男性与女性的平均年龄,以减少过度绘图。
usa_signup_age.groupby('gender')['age'].plot(legend=True)
plt.xlabel('years')
plt.ylabel('age by gender')
plt.title('total signup ages per gender per year')
plt.show()
'6M'
方法有resample()
参数吗?
答案 0 :(得分:0)
您可以使用pd.Grouper()
进行自定义分组,然后使用.apply()
进行更多分组。这对于datetime对象非常方便。使用signup
将pd.to_datetime()
变量转换为日期时间后,您可以执行以下操作:
usa_signup_age.groupby(pd.TimeGrouper(key="signup", freq="6M")).apply(lambda x: x.groupby('gender').mean())
这将返回:
age
signup gender
2002-10-31 m 25.666667
2003-04-30 m 29.428571