python - Python:根据日期计算平均值并按月显示
问题描述
我基本上是python新手,我有以下要求我有从一月到十二月的日期和一些项目的平均值,比如
在附图中,有 5 行属于 5 月,6 行属于 6 月
我们如何迭代和计算每月的平均值,就像我想计算 5 月和 6 月的食物、饮料和浪费的平均值(每月我有 12 个月的数据)。
我需要像这样的输出
Month Food Drink wastage
May-17 2.0 3.0 2.0
June-17 2.5 2.5 3.0
解决方案
首先将您的数据放入熊猫数据框中 - 我自己制作了虚拟数据 - 您需要弄清楚如何加载您的源。(来自 csv 或 excel)。
启动框架
import pandas as pd
import datetime
df1 = pd.DataFrame({'Start_date' : ['2018-01-01','2018-01-02','2018-01-03','2018-02-
01','2018-03-10','2018-02-05'],'food' : [2, 2.5, 3, 2.4, 5, 4],'drinks' :
[1,2,3,4,5,6], 'wastage':[6,5,4,3,2,1]})
确保您的日期列上有日期格式 - 在此我的输入是字符串,所以我需要转换它(您需要在此处使用不同的格式)请参阅(日期格式文档的底部:https://docs.python。 org/2/library/datetime.html )
df1.Start_date = pd.to_datetime(df1.Start_date, format ='%Y-%m-%d')
我会添加一个月份列: 用年份编辑:
df1["period"] = df1.Start_date.apply(lambda x: datetime.datetime.strftime(x, '%b-%y'))
df1['month'] = pd.DatetimeIndex(df1.Start_date).month
应用分组和均值
df1.groupby(['month']).mean() # for only month groupings
df1.groupby(['period']).mean() # for output listed above
推荐阅读
- python - 动态覆盖 Python 文档字符串
- java - 加密期间不明确的消息填充
- mysql - MSQL & MySQL/PDO 连接是否存在冲突?
- yocto - 如何为两台不同的机器和相同的 bblayers 构建 Yocto conf 文件
- java - JUnit java.lang.NullPointerException
- python - 为什么内置的 .sort() 函数比手动编码的排序算法更有效?
- angular - kendoGrid / Kendo Angular中的行编辑问题
- reactjs - 如何在反应路由器中访问子路由参数
- asp.net-mvc - Knockout.js 数据绑定:单击,在页面加载时运行
- reactjs - 这是在 React 中使用钩子保护路由的正确方法吗?