python - 大熊猫一周中同一天的数据平均值
问题描述
我有一个从 2016 年到 2019 年的数据框,显示每天的商品生产数量。我已将时间设置为索引并将其转换为 date_time 格式。
Time #Produced products 2016-03-26 274 .... 2017-03-26 123 2017-02-27 245 .... 2018-03-26 282 .... 2019-03-23 296
现在,我想找到这些年来的平均每日产量,但以一种了解工作日的方式。因此,由于我们一年有 52 周,输出指标将是:第一个星期一,第一个星期二,....,第 52 个星期六,第 52 个星期日。对于每个指数,它应该找到 2016-2019 年产生的数字的平均值。
我想我应该使用诸如 groupby month 和 groupby dayofweek 之类的东西,我不知道如何实现它。你能指导我吗?
解决方案
您可以做的是使用apply
函数和辅助函数向数据框添加另一列 -
*此辅助函数假定Time
列中的所有条目都是 pythondatetime
格式
def helper(my_date_time):
week_list = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday','Sunday']
week_number = my_date_time.isocalendar()[1]
week_day = week_list[my_date_time.isocalendar()[2] - 1]
return (week_day + str(week_number))
一旦你有了帮助函数,你就可以修改你的数据框以在另一列中包含工作日和周数-
df['week_number_day'] = df['Time'].apply(helper)
然后你可以用它来找到你需要的平均值
grouped_df = df.groupby("week_number_day")
mean_df = grouped_df.mean()
mean_df = mean_df.reset_index()
print(mean_df)
推荐阅读
- django - 在 Django 的 html 页面上显示数据库中的数据的问题
- javascript - 避免代码重复 - reactJs - javascript
- angular - Ionic 4 ToastController 按钮没有异步功能
- clojure - 在试剂中动态渲染组件的正确方法是什么?
- javascript - 如何在 Vuejs 中从其父组件设置嵌套组件的样式?
- vue.js - 如何为 prerender-spa-plgin 正确配置 Vuetify?
- wordpress - 问号在 Wordpress 上不跟随希伯来语中的换行符
- python - 如何生成具有足够间距以容纳大量数字的曲线图
- javascript - 如何修复 TypeError: document.getElementById 在对使用 Leaflet.js 对象的文件运行单元测试时不是一个函数?
- sql - 拥有多封电子邮件的 DAX 用户