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使用simplejson模块解析JSON的方法
Mar 24 Python
Python实现抓取HTML网页并以PDF文件形式保存的方法
May 08 Python
python利用smtplib实现QQ邮箱发送邮件
May 20 Python
解决Tensorflow使用pip安装后没有model目录的问题
Jun 13 Python
Python爬虫实现简单的爬取有道翻译功能示例
Jul 13 Python
Python Pandas数据结构简单介绍
Jul 03 Python
关于Python 的简单栅格图像边界提取方法
Jul 05 Python
python随机模块random使用方法详解
Feb 14 Python
Python流程控制语句的深入讲解
Jun 15 Python
最新Python idle下载、安装与使用教程图文详解
Nov 28 Python
Python实现网络聊天室的示例代码(支持多人聊天与私聊)
Jan 27 Python
opencv 分类白天与夜景视频的方法
Jun 05 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
php4的session功能评述(二)
2006/10/09 PHP
php数组键值用法实例分析
2015/02/27 PHP
PHP将MySQL的查询结果转换为数组并用where拼接的示例
2016/05/13 PHP
PHP的mysqli_rollback()函数讲解
2019/01/23 PHP
phpmyadmin在宝塔面板里进不去的解决方案
2020/07/06 PHP
用jscript实现新建word文档
2007/06/15 Javascript
50个比较实用jQuery代码段
2011/09/18 Javascript
javascript一元操作符(递增、递减)使用示例
2013/08/07 Javascript
简单的Jquery遮罩层代码实例
2013/11/14 Javascript
JS去掉第一个字符和最后一个字符的实现代码
2014/02/20 Javascript
jQuery实现监控页面所有ajax请求的方法
2015/12/10 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(一)
2015/12/10 Javascript
js实现拖拽效果(构造函数)
2015/12/14 Javascript
jQuery检测滚动条是否到达底部
2015/12/15 Javascript
用js控件div的滚动条,让它在内容更新时自动滚到底部的实现方法
2016/10/27 Javascript
JavaScript闭包的简单应用
2017/09/01 Javascript
Koa项目搭建过程详细记录
2018/04/12 Javascript
微信小程序保存多张图片的实现方法
2019/03/05 Javascript
Vue表单绑定的实例代码(单选按钮,选择框(单选时,多选时,用 v-for 渲染的动态选项)
2019/05/13 Javascript
使用vscode快速建立vue模板过程详解
2019/10/10 Javascript
详解阿里Node.js技术文档之process模块学习指南
2021/01/04 Javascript
ajax jquery实现页面某一个div的刷新效果
2021/03/04 jQuery
[00:20]TI9不朽观赛名额抽取
2019/08/05 DOTA
[46:23]完美世界DOTA2联赛PWL S2 FTD vs Magma 第一场 11.20
2020/11/23 DOTA
从Python程序中访问Java类的简单示例
2015/04/20 Python
简单介绍Python中的decode()方法的使用
2015/05/18 Python
python中找出numpy array数组的最值及其索引方法
2018/04/17 Python
Python 实现OpenCV格式和PIL.Image格式互转
2020/01/09 Python
纯CSS3实现3D旋转书本效果
2016/03/21 HTML / CSS
CSS3中使用RGBA设置透明度的示例
2015/08/04 HTML / CSS
幼儿教师自我鉴定
2013/11/02 职场文书
教师对照四风自我剖析材料
2014/09/30 职场文书
2015年车间主任工作总结
2015/05/21 职场文书
解决Jenkins集成SonarQube遇到的报错问题
2021/07/15 Java/Android
python基础之错误和异常处理
2021/10/24 Python
详解Flutter和Dart取消Future的三种方法
2022/04/07 Java/Android