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脚本来删除指定容量以上的文件的教程
May 04 Python
Python编写生成验证码的脚本的教程
May 04 Python
python 3.5实现检测路由器流量并写入txt的方法实例
Dec 17 Python
Python使用requests及BeautifulSoup构建爬虫实例代码
Jan 24 Python
python向已存在的excel中新增表,不覆盖原数据的实例
May 02 Python
Pycharm+Scrapy安装并且初始化项目的方法
Jan 15 Python
浅析Python 读取图像文件的性能对比
Mar 07 Python
Python爬虫 scrapy框架爬取某招聘网存入mongodb解析
Jul 31 Python
Win10下python 2.7与python 3.7双环境安装教程图解
Oct 12 Python
Python2及Python3如何实现兼容切换
Sep 01 Python
详解Python flask的前后端交互
Mar 31 Python
Python中npy和mat文件的保存与读取
Apr 24 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
php中的数组操作函数整理
2008/08/18 PHP
PHP数据库操作之基于Mysqli的数据库操作类库
2014/04/19 PHP
PHP curl 抓取AJAX异步内容示例
2014/09/09 PHP
laravel实现Auth认证,登录、注册后的页面回跳方法
2019/09/30 PHP
Extjs中的GridPanel隐藏列会显示在menuDisabled中解决方法
2013/01/27 Javascript
window.location.href = window.location.href 跳转无反应 a超链接onclick事件写法
2013/08/21 Javascript
Jquery+ajax+JAVA(servlet)实现下拉菜单异步取值
2016/03/23 Javascript
网页前端登录js按Enter回车键实现登陆的两种方法
2016/05/10 Javascript
BootStrap点击下拉菜单项后显示一个新的输入框实现代码
2016/05/16 Javascript
详述 Sublime Text 打开 GBK 格式中文乱码的解决方法
2017/10/26 Javascript
小程序清理本地缓存的方法
2018/08/17 Javascript
对vue事件的延迟执行实例讲解
2018/08/28 Javascript
图解NodeJS实现登录注册功能
2019/09/16 NodeJs
React中Ref 的使用方法详解
2020/04/28 Javascript
vue项目中使用多选框的实例代码
2020/07/22 Javascript
VUE实现吸底按钮
2021/03/04 Vue.js
[20:30]职业巡回赛回顾
2018/08/09 DOTA
黑科技 Python脚本帮你找出微信上删除你好友的人
2016/01/07 Python
Python正则替换字符串函数re.sub用法示例
2017/01/19 Python
Tensorflow实现卷积神经网络用于人脸关键点识别
2018/03/05 Python
查看django版本的方法分享
2018/05/14 Python
详解python异步编程之asyncio(百万并发)
2018/07/07 Python
解决pycharm 误删掉项目文件的处理方法
2018/10/22 Python
python抓取多种类型的页面方法实例
2019/11/20 Python
Python接口开发实现步骤详解
2020/04/26 Python
利用纯css3实现的文字亮光特效的代码演示
2014/11/27 HTML / CSS
html5新增的定时器requestAnimationFrame实现进度条功能
2018/12/13 HTML / CSS
大学生最常用的自我评价
2013/12/07 职场文书
四年大学生活的个人自我评价
2013/12/11 职场文书
教师简历自我评价
2014/02/03 职场文书
计算机专业求职信
2014/06/02 职场文书
学校教师读书活动总结
2014/07/08 职场文书
2015年爱国卫生工作总结
2015/04/22 职场文书
小学生勤俭节约倡议书
2015/04/29 职场文书
2015年中秋晚会主持词
2015/07/01 职场文书
Golang之sync.Pool使用详解
2021/05/06 Golang