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解析xml文件实例分析
May 27 Python
python 网络编程详解及简单实例
Apr 25 Python
Python基于回溯法子集树模板解决0-1背包问题实例
Sep 02 Python
python列表生成式与列表生成器的使用
Feb 23 Python
高效使用Python字典的清单
Apr 04 Python
解决vscode python print 输出窗口中文乱码的问题
Dec 03 Python
对python函数签名的方法详解
Jan 22 Python
对python使用telnet实现弱密码登录的方法详解
Jan 26 Python
python调用并链接MATLAB脚本详解
Jul 05 Python
Python字符串大小写转换拼接删除空白
Sep 19 Python
使用豆瓣源来安装python中的第三方库方法
Jan 26 Python
Python获取指定日期是"星期几"的6种方法
Mar 13 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
自动把纯文本转换成Web页面的php代码
2009/08/27 PHP
php的list()的一步操作给一组变量进行赋值的使用
2011/05/18 PHP
php中使用接口实现工厂设计模式的代码
2012/06/17 PHP
PHP获取栏目的所有子级和孙级栏目的ID号示例
2014/04/01 PHP
PHP中使用localhost连接Mysql不成功的解决方法
2014/08/20 PHP
php仿微信红包分配算法的实现方法
2016/05/13 PHP
PHP 中 DOMDocument保存xml时中文出现乱码问题的解决方案
2016/09/19 PHP
一个tab标签切换效果代码
2009/03/27 Javascript
JQuery中对Select的option项的添加、删除、取值
2013/08/25 Javascript
jquery常用操作小结
2014/07/21 Javascript
js操作XML文件的实现方法兼容IE与FireFox
2016/06/25 Javascript
Angular ng-class详解及实例代码
2016/09/19 Javascript
Echarts基本用法_动力节点Java学院整理
2017/08/11 Javascript
ES6解构赋值的功能与用途实例分析
2017/10/31 Javascript
如何从头实现一个node.js的koa框架
2019/06/17 Javascript
[48:31]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第一场 2月2日
2021/03/11 DOTA
python开启多个子进程并行运行的方法
2015/04/18 Python
Python合并字典键值并去除重复元素的实例
2016/12/18 Python
Django 浅谈根据配置生成SQL语句的问题
2018/05/29 Python
python实现单链表中删除倒数第K个节点的方法
2018/09/28 Python
python爬取内容存入Excel实例
2019/02/20 Python
使用apiDoc实现python接口文档编写
2019/11/19 Python
TensorFlow2.1.0安装过程中setuptools、wrapt等相关错误指南
2020/04/08 Python
python3 使用openpyxl将mysql数据写入xlsx的操作
2020/05/15 Python
浅谈html5标签css3的常用样式
2016/10/20 HTML / CSS
销售辞职报告范文
2014/01/12 职场文书
生日寄语大全
2014/04/08 职场文书
北京故宫导游词
2015/01/31 职场文书
学习保证书怎么写
2015/02/26 职场文书
幼儿园教师师德师风承诺书
2015/04/28 职场文书
2015年售票员工作总结
2015/04/29 职场文书
环境保护宣传标语大全!
2019/06/28 职场文书
导游词之蜀山胜景瓦屋山
2019/11/29 职场文书
SpringBoot整合MongoDB的实现步骤
2021/06/23 MongoDB
关于CentOS 8 搭建MongoDB4.4分片集群的问题
2021/10/24 MongoDB
一次项目中Thinkphp绕过禁用函数的实战记录
2021/11/17 PHP