DataFrame类型数据——统计每年每月销量

DataFrame类型数据——统计每年每月销量

1. 统计每一年每个月的销售量

从Excel中导入数据,为DataFrame格式

import pandas as pd
df = pd.DataFrame(pd.read_excel(filename))  # 导入数据表
print(df)

我的数据内容如下:日期和销量(销售量2014-08到2015-09的记录)

            日期      销量
0   2014-08-02  2261.7
1   2014-08-03  3436.4
2   2014-08-04  2993.0
3   2014-08-05  2618.1
4   2014-08-06  2915.8
5   2014-08-07  2759.1
6   2014-08-08  2900.6
..         ...     ...
408 2015-09-25  4854.0
409 2015-09-26  4088.0
410 2015-09-27  3183.0
411 2015-09-28  2976.0
412 2015-09-29  2130.0
413 2015-09-30  2622.0

这里单个日期的类型为Timestamp

<class 'pandas._libs.tslibs.timestamps.Timestamp'>

想要统计月销售量,因为涉及到不同的年份(2015、2014年)直接用groupby(),会出现将所有年份的相同月份的销量相加起来(比如2015年9月的销量和2014年9月的销量是叠加在一起了)。

print(df.groupby(df['日期'].apply(lambda x:x.month)).sum())

本应该计算出14个月的销量,最后只有12个月的。

2. 解决办法

  1. 将日期由年月日的格式通过strftime(’%Y/%m’)设置为年月,方便计算
    • 注意是对DataFrame中日期的每一个值重新设置格式
df['日期'].apply(lambda x:x.strftime('%Y/%m'))
  1. 在1的基础上,对DataFrame类型的数据使用groupby()进行分组,分组依据是年月
df.groupby(df['日期'].apply(lambda x:x.strftime('%Y/%m')))
  1. 在2的基础上对分组后的数据用 sum() 进行统计
df.groupby(df['日期'].apply(lambda x:x.strftime('%Y/%m'))).sum()

得到的结果是

                销量
日期                
2014/08   86102.20
2014/09   87786.04
2014/10   79425.30
2014/11   72704.50
2014/12   72073.30
2015/01   74912.70
2015/02   77987.90
2015/03  110946.00
2015/04  107800.00
2015/05  109991.00
2015/06   94120.00
2015/07  102977.00
2015/08   98079.00
2015/09  118306.00

3. 总结

含有年月日具体日期的的日销售量,将其统计为月销售量,可以通过strftime(’%Y/%m’) 将其设置为年月,这样更方便统计

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值