pandas 对日期类型数据的处理方法详解


Posted in Python onAugust 08, 2019

pandas 的日期/时间类型有如下几种:

Concept Scalar Class Array Class pandas Data Type Primary Creation Method
Date times Timestamp DatetimeIndex datetime64[ns] or datetime64[ns, tz] to_datetime or date_range
Time deltas Timedelta TimedeltaIndex timedelta64[ns] to_timedelta or timedelta_range
Time spans Period PeriodIndex period[freq] Period or period_range
Date offsets DateOffset None None DateOffset

本文介绍在处理时点数 (point in time) 一些常用的处理方法,仍然以上一篇的示例数据为例进行讲解。pandas 用 Timestamp 表示时点数,在大多数情况下和 python 的 datetime 类型的使用方法是通用的。

首先获取数据,并且将 DataFrame 的 date 列转换成 datetime 类型:

df1 = pd.read_csv('https://raw.githubusercontent.com/stonewm/python-practice-projects/master/pandas%20sample%20data/sample-salesv3.csv')
df1['date'] = pd.to_datetime(df1['date']) # convert date column to datetime
df1.head()

pandas 对日期类型数据的处理方法详解

也可以在 read_csv() 方法中,通过 parse_dates 参数直接将某些列转换成 datetime64 类型:

df1 = pd.read_csv('sample-salesv3.csv', parse_dates=['date'])

我们据此销售数据,按月份、按季度统计 sku 的销售金额。
pandas 的 pandas.Series.dt 可以获得日期/时间类型的相关信息。比如

df1['date'].dt.year
df1['date'].dt.month
df1['date'].dt.quarter

但这些类型返回值为 int 类型,作为统计的字段,我们更希望是 2014-04 这样的格式,有两个方法:

# 方法 1
df1['year_month'] = df1['date'].apply(lambda x : x.strftime('%Y-%m'))

pandas 对日期类型数据的处理方法详解

第二种方法:

df1['period'] = df1['date'].dt.to_period('M')

pandas 对日期类型数据的处理方法详解

第二种方法使用起来更加简单,参数 M 表示月份,Q 表示季度,A 表示年度,D 表示按天,这几个参数比较常用。
新增了一列之后,做出数据透视表:

import numpy as np
pivot = pd.pivot_table(df1, index=['sku'], columns=['period'], values=['ext price'], aggfunc=np.sum)
pivot.head()

pandas 对日期类型数据的处理方法详解

再做一个按季度统计的数据透视表:

df1['quarter'] = df1['date'].dt.to_period('Q')
quarter_pivot = pd.pivot_table(df1, index=['sku'], columns=['quarter'], values=['ext price'], aggfunc=np.sum)

pandas 对日期类型数据的处理方法详解

参考

Time Series / Date functionality

Extracting just Month and Year from Pandas Datetime column

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python发送邮件接收邮件示例分享
Jan 21 Python
归纳整理Python中的控制流语句的知识点
Apr 14 Python
python中正则表达式的使用方法
Feb 25 Python
基于pytorch的保存和加载模型参数的方法
Aug 17 Python
python模拟实现分发扑克牌
Apr 22 Python
解决tensorflow/keras时出现数组维度不匹配问题
Jun 29 Python
python自动从arxiv下载paper的示例代码
Dec 05 Python
用python对excel查重
Dec 07 Python
python openpyxl模块的使用详解
Feb 25 Python
Python中相见恨晚的技巧
Apr 13 Python
Python GUI编程之tkinter 关于 ttkbootstrap 的使用详解
Mar 03 Python
如何使用python包中的sched事件调度器
Apr 30 Python
解决Python设置函数调用超时,进程卡住的问题
Aug 08 #Python
Python 根据日志级别打印不同颜色的日志的方法示例
Aug 08 #Python
Python学习笔记之错误和异常及访问错误消息详解
Aug 08 #Python
Python实现直方图均衡基本原理解析
Aug 08 #Python
python获取指定日期范围内的每一天,每个月,每季度的方法
Aug 08 #Python
Python 调用 Outlook 发送邮件过程解析
Aug 08 #Python
python判断自身是否正在运行的方法
Aug 08 #Python
You might like
德生PL330的评价与改造
2021/03/02 无线电
DedeCMS 核心类TypeLink.class.php摘要笔记
2010/04/07 PHP
PHP闭包(Closure)使用详解
2013/05/02 PHP
PHP开发中解决并发问题的几种实现方法分析
2017/11/13 PHP
Javascript 入门基础学习
2010/03/10 Javascript
javascript innerHTML使用分析
2010/12/03 Javascript
主页面中的两个iframe实现鼠标拖动改变其大小
2013/04/16 Javascript
JavaScript保留关键字汇总
2015/12/01 Javascript
EasyUI加载完Html内容样式渲染完成后显示
2016/07/25 Javascript
js运动事件函数详解
2016/10/21 Javascript
Node.js 实现简单小说爬虫实例
2016/11/18 Javascript
详解vue 模版组件的三种用法
2017/07/21 Javascript
基于JavaScript实现前端数据多条件筛选功能
2020/08/19 Javascript
浅谈Webpack下多环境配置的思路
2018/06/27 Javascript
让axios发送表单请求形式的键值对post数据的实例
2018/08/11 Javascript
vue实现输入一位数字转汉字功能
2019/12/13 Javascript
[01:09]DOTA2次级职业联赛 - 99战队宣传片
2014/12/01 DOTA
[37:23]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第二局
2016/03/04 DOTA
Python 条件判断的缩写方法
2008/09/06 Python
Python双精度浮点数运算并分行显示操作示例
2017/07/21 Python
python自动循环定时开关机(非重启)测试
2019/08/26 Python
pycharm Tab键设置成4个空格的操作
2021/02/26 Python
Application Cache未缓存文件无法访问无法加载问题
2014/05/31 HTML / CSS
马来西亚太阳镜、眼镜和隐形眼镜网上商店:Focus Point
2018/12/13 全球购物
SEPHORA丝芙兰德国官方购物网站:化妆品、护肤品和香水
2020/01/21 全球购物
shell变量的作用空间是什么
2013/08/17 面试题
配件采购员岗位职责
2013/12/03 职场文书
小学生家长评语大全
2014/02/10 职场文书
挂牌仪式策划方案
2014/05/18 职场文书
个人投资合作协议书
2014/10/12 职场文书
先进个人评语大全
2015/01/04 职场文书
教学督导岗位职责
2015/04/10 职场文书
2015年副班长工作总结
2015/05/15 职场文书
公司转让协议书
2016/03/19 职场文书
PHP 时间处理类Carbon
2022/05/20 PHP
python实现双链表
2022/05/25 Python