python pandas 日期_python+pandas+时间、日期以及时间序列处理方法

python+pandas+时间、日期以及时间序列处理方法

先简单的了解下日期和时间数据类型及工具 python标准库包含于日期(date)和时间(time)数据的数据类型,datetime、time以及calendar模块会被经常用到。 datetime以毫秒形式存储日期和时间,datetime.timedelta表示两个datetime对象之间的时间差。 给datetime对象加上或减去一个或多个timedelta,会产生一个新的对象

from datetime import datetime

from datetime import timedelta

now = datetime.now()

now

datetime.datetime(2017, 6, 27, 15, 56, 56, 167000)

datetime参数:datetime(year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]])

delta = now - datetime(2017,6,27,10,10,10,10)

delta

datetime.timedelta(0, 20806, 166990)

delta.days

0

delta.seconds

20806

delta.microseconds

166990

只有这三个参数了! datetime模块中的数据类型

类型 说明

date 以公历形式存储日历日期(年、月、日)

time 将时间存储为时、分、秒、毫秒

datetime 存储日期和时间

timedelta 表示两个datetime值之间的差(日、秒、毫秒)

字符串和datetime的相互转换

1)python标准库函数 日期转换成字符串:利用str 或strftime 字符串转换成日期:datetime.strptime

stamp = datetime(2017,6,27)

str(stamp)

'2017-06-27 00:00:00'

stamp.strftime('%y-%m-%d')#%Y是4位年,%y是2位年

'17-06-27'

#对多个时间进行解析成字符串

date = ['2017-6-26','2017-6-27']

datetime2 = [datetime.strptime(x,'%Y-%m-%d') for x in date]

datetime2

[datetime.datetime(2017, 6, 26, 0, 0), datetime.datetime(2017, 6, 27, 0, 0)]

2)第三方库dateutil.parser的时间解析函数

pandas通常用于处理成组日期,不管这些日期是DataFrame的轴索引还是列,to_datetime方法可以解析多种不同的日期表示形式。

date

['2017-6-26', '2017-6-27']

import pandas as pd

pd.to_datetime(date)

DatetimeIndex(['2017-06-26', '2017-06-27'], dtype='datetime64[ns]', freq=None)

datetime 格式定义

代码 说明

%Y 4位数的年

%y 2位数的年

%m 2位数的月[01,12]

%d 2位数的日[01,31]

%H 时(24小时制)[00,23]

%l 时(12小时制)[01,12]

%M 2位数的分[00,59]

%S 秒[00,61]有闰秒的存在

%w 用整数表示的星期几[0(星期天),6]

%F %Y-%m-%d简写形式例如,2017-06-27

%D %m/%d/%y简写形式

pandas时间序列基础以及时间、日期处理

pandas最基本的时间序列类型就是以时间戳(时间点)(通常以python字符串或datetime对象表示)为索引的Series:

dates = ['2017-06-20','2017-06-21',\

'2017-06-22','2017-06-23','2017-06-24','2017-06-25','2017-06-26','2017-06-27']

import numpy as np

ts = pd.Series(np.random.randn(8),index = pd.to_datetime(dates))

ts

2017-06-20 0.788811

2017-06-21 0.372555

2017-06-22 0.009967

2017-06-23 -1.024626

2017-06-24 0.981214

2017-06-25 0.314127

2017-06-26 -0.127258

2017-06-27 1.919773

dtype: float64

ts.index

DatetimeIndex(['2017-06-20', '2017-06-21', '2017-06-22', '2017-06-23',

'2017-06-24', '2017-06-25', '2017-06-26', '2017-06-27'],

dtype='datetime64[ns]', freq=None)

pandas不同索引的时间序列之间的算术运算会自动按日期对齐

ts[::2]#从前往后每隔两个取数据

2017-06-20 0.788811

2017-06-22 0.009967

2017-06-24 0.981214

2017-06-26 -0.127258

dtype: float64

ts[::-2]#从后往前逆序每隔两个取数据

2017-06-27 1.919773

2017-06-25 0.314127

2017-06-23 -1.024626

2017-06-21 0.372555

dtype: float64

ts + ts[::2]#自动数据对齐

2017-06-20 1.577621

2017-06-21 NaN

2017-06-22 0.019935

2017-06-23 NaN

2017-06-24 1.962429

2017-06-25 NaN

2017-06-26 -0.254516

2017-06-27 NaN

dtype: float64

索引为日期的Series和DataFrame数据的索引、选取以及子集构造

方法:

1).index[number_int]

2)[一个可以被解析为日期的字符串]

3)对于,较长的时间序列,只需传入‘年'或‘年月'可返回对应的数据切片

4)通过时间范围进行切片索引

ts

2017-06-20 0.788811

2017-06-21 0.372555

2017-06-22 0.009967

2017-06-23 -1.024626

2017-06-24 0.981214

2017-06-25 0.314127

2017-06-26 -0.127258

2017-06-27 1.919773

dtype: float64

ts[ts.index[2]]

0.0099673896063391908

ts['2017-06-21']#传入可以被解析成日期的字符串

0.37255538918121028

ts['21/06/2017']

0.37255538918121028

ts['20170621']

0.37255538918121028

ts['2017-06']#传入年或年月

2017-06-20 0.788811

2017-06-21 0.372555

2017-06-22 0.009967

2017-06-23 -1.024626

2017-06-24 0.981214

2017-06-25 0.314127

2017-06-26 -0.127258

2017-06-27 1.919773

dtype: float64

ts['2017-06-20':'2017-06-23']#时间范围进行切片

2017-06-20 0.788811

2017-06-21 0.372555

2017-06-22 0.009967

2017-06-23 -1.024626

dtype: float64

带有重复索引的时间序列

1).index.is_unique检查索引日期是否是唯一的

2)对非唯一时间戳的数据进行聚合,通过groupby,并传入level = 0(索引的唯一一层)

dates = pd.DatetimeIndex(['2017/06/01','2017/06/02','2017/06/02','2017/06/02','2017/06/03'])

dates

DatetimeIndex(['2017-06-01', '2017-06-02', '2017-06-02', '2017-06-02',

'2017-06-03'],

dtype='datetime64[ns]', freq=None)

dup_ts = pd.Series(np.arange(5),index = dates)

dup_ts

2017-06-01 0

2017-06-02 1

2017-06-02 2

2017-06-02 3

2017-06-03 4

dtype: int32

dup_ts.index.is_unique

False

dup_ts['2017-06-02']

2017-06-02 1

2017-06-02 2

2017-06-02 3

dtype: int32

grouped = dup_ts.groupby(level=0).mean()

grouped

2017-06-01 0

2017-06-02 2

2017-06-03 4

dtype: int32

dup_df = pd.DataFrame(np.arange(10).reshape((5,2)),index = dates )

dup_df

0 1

2017-06-01 0 1

2017-06-02 2 3

2017-06-02 4 5

2017-06-02 6 7

2017-06-03 8 9

grouped_df = dup_df.groupby(level=0).mean()##针对DataFrame

grouped_df

总结

1)字符串、日期的转换方法

2)日期和时间的主要python,datetime、timedelta、pandas.to_datetime等

3)以时间为索引的Series和DataFrame的索引、切片

4)带有重复时间索引时的索引,.groupby(level=0)应用

欢迎关注我的号

志学Python

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/502245.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java程序怎么都不是一个_java运行的流程-怎么运行java程序编了一个程序不知道怎么运行郁闷啊后缀文件名是 爱问知识人...

在初学java编程语言时,痛苦的事莫过于跟着示例一步步做,总是得不到想要的结果,这是很多初学者都会碰到的问题。下面详细教你运行第一个java应用程序(环境windows xp jdk 6。0):第一步:下载并安装JDK 6。0,…

调用别的方法的返回值_Spring boot如何实现异步调用

Spring boot如何实现异步调用异步调用:一个可以无需等待被调用函数的返回值就让操作继续进行的方法举个例子异步调用就是你 喊 你朋友吃饭 ,你朋友说知道了 ,待会忙完去找你 ,你就去做别的了。同步调用就是你 喊 你朋友吃饭 ,你朋…

java excel 创建按钮_通过单击Excel按钮在Catia中设计零件

我已经在用宏编辑器构建的Catia V5中编写了一些宏,但我无法弄清楚如何从Excel访问Catia命令 .我想知道如何通过仅在excel文件圆柱体的半径和长度中创建一个简单的直圆柱体 .我想在Catia中输入不同的压力容器,在Excel中输入它们的直径和高度,然…

pythonspot_python-Spotipy-列表索引超出范围

编写Spotipy脚本以从给定专辑返回专辑曲目,我偶尔会遇到错误:album_id results["albums"]["items"][0]["uri"]IndexError: list index out of range这种错误往往发生在更多的流行歌手遍历所有专辑的时候.我猜结果列表已达到极限或以…

国防科大JAVA工程师笔试题_国防科大人工智能考博题答案

【实例简介】国防科大计算机学院考博试题 人工智能11-15年试题答案A-20年33(注主:图21的日2该是想反3):61(35),610)①到日1①bs15②①9-519海:S→B>D>印k0b4763到句2(013-13e(as|0⊙(升早巧一③Cm52B877③1315④①a3s93(62833106舞决:5>B→>D>2或5A>C>D→…

python四舍五入保留小数点后三位_Python中的“正确”四舍五入到小数点后3位

我可能遗漏了一些重要的东西,但我无法找到一种方法来在Python(2.7)中将浮点/小数“适当”舍入,至少舍入到小数点后三位。我的意思是1.2225应该四舍五入到1.223,而1.2224应该四舍五入到1.222。在我知道在Python中,round不适用于flo…

java 指代对象_java-This的理解

都知道this是一个指代作用吧,但指代的是什么?一般网上搜索的this 都说是“当前对象”,但这样说和没说区别一个样,什么是“当前对象”都说不清楚。但其实,this指代得分下面4种情况来说。有的是场景展示的(如一、三)&…

python 日历查询系统_python 日历

上章总结了python中time模块的使用,这次总结日历模块 calendar>>> import calendar>>> cal calendar.month(2016,1)>>> calJanuary 2016\nMo Tu We Th Fr Sa Su\n 1 2 3\n 4 5 6 7 8 9 10\n11 12 13 14 15 16 17\n1…

在java语法中继承_java中的继承

一、继承:1.如果不使用继承,会出现以下一些问题:(1)代码重复(2)如果要修改的话,两个类都需要修改。2.继承体现的是一种is a 的关系。eg:Dog is a Pet;apple is a Fruit;Student is a Person;二、子类可以继承到父类的哪些财产呢&a…

照片识别出错_AI跨年龄人脸识别技术在跨年龄寻亲的应用简析

9月3日,央视财经《经济半小时》栏目播出了一段有关失踪儿童找回的视频新闻。在这则新闻中,跨年龄人脸识别技术是最为核心的功臣,深圳警方利用跨年龄人脸识别技术,根据一张3岁孩童的儿童照片找回了失踪了十几年的孩子,让…

python内置的数字运算函数_Python 内置函数1

abs(x)函数返回绝对值参数可以是&#xff1a;负数、正数、浮点数或者长整形print(abs(-1.2))# 结果1.2cmp(x, y)函数 (python3已删)中文说明&#xff1a;比较两个对象x和y&#xff0c;如果x < y ,返回负数&#xff1b;x y, 返回0&#xff1b;x > y,返回正数。版本&#…

java音频采样_音频重采样的坑

背景使用webrtc进行语音通话&#xff0c;网络正常的情况下&#xff0c;延迟比较大。进行过如下分析&#xff1a;(1)从socket收包到webrtc处理完音频没有耗时长的操作&#xff0c;排除了webrtc处理音频引入的延迟(2)与其他终端进行通话无延迟通过以上的分析&#xff0c;最终确认…

python stdout清空_python中stdout输出不缓存的设置方法

考虑以下python程序&#xff1a;#!/usr/bin/env pythonimport syssys.stdout.write("stdout1 ")sys.stderr.write("stderr1 ")sys.stdout.write("stdout2 ")sys.stderr.write("stderr2 ")其中的sys.stdout.write也可以换成print。运行…

分段线性判别法 java_线性判别分析(Linear Discriminant Analysis)(二)

4. 实例将3维空间上的球体样本点投影到二维上&#xff0c;W1相比W2能够获得更好的分离效果。PCA与LDA的降维对比&#xff1a;PCA选择样本点投影具有最大方差的方向&#xff0c;LDA选择分类性能最好的方向。LDA既然叫做线性判别分析&#xff0c;应该具有一定的预测功能&#xff…

软件测试用例_大话软件测试用例要素

我们经常都知道一个测试用例里面包含以下几个要素&#xff1a;1&#xff0c;用例编号2&#xff0c;模块3&#xff0c;场景4&#xff0c;用例名称5&#xff0c;前置条件6&#xff0c;测试等级7&#xff0c;操作步骤8&#xff0c;预期结果(需求要求的结果)9&#xff0c;实际结果1…

cario java_Cairo图形库 概述

参考&#xff1a;http://blog.sina.com.cn/s/blog_538732a70100p9ay.htmlCairo图形库 1. 概述欢迎来到Cairo图形教程.这个教程将教你Cairo2D矢量绘图库基本的和一些高级的主题.大部分例程我们使用GTK编程库. 这个教程是用C语言来完成的.(如果可能,我会附加上一些cairomm的东西…

python大神推荐_大神推荐!!!高评分书籍轻松带你入门Python

上次讲到了初学者阶段必看的书籍。今天给大家继续讲讲进阶者阶段当你对Python有了一定的了解&#xff0c;并在生活或者工作中使用过一段时间&#xff0c;那么你就可以考虑进阶相关的书籍&#xff0c;请看下面这3本&#xff1a;《Python深度学习》豆瓣评分&#xff1a;9.6推荐指…

java中this图解_JAVA-初步认识-第七章-this关键字的使用场景和原理图解

一.this有什么用&#xff1f;我们用例子的形式来体现一下。下面的截图说明&#xff0c;给人对象一初始化的时候&#xff0c;赋值个姓名。赋值姓名的时候&#xff0c;拿n赋值给name&#xff0c;DOS显示创建对象时&#xff0c;构造函数初始化成功。在例子中&#xff0c;我们将“旺…

python汉诺塔_汉诺塔递归算法/搬金盘的婆罗门 - Python实现

汉诺塔递归算法/搬金盘的婆罗门 - Python实现版权声明本文节选自作者本人的图书《Python编程基础及应用》&#xff0c;高等教育出版社。本文可以在互联网上自由转载&#xff0c;但必须&#xff1a;注明出处(作者&#xff1a;海洋饼干叔叔)并包含指向本页面的链接。本文不可以以…

java算程序运行时间_关于计算Java程序运行时间

第一种是以毫秒为单位计算的。Java代码//伪代码long startTimeSystem.currentTimeMillis(); //获取开始时间doSomeThing(); //测试的代码段long endTimeSystem.currentTimeMillis(); //获取结束时间System.out.println("程序运行时间&#xff1a; "(end-start)&qu…