当前位置:首页 > 旅游指南

FREQ Pandas库基础分析——详解时间序列的处理

在使用Python进行数据分析时,经常会遇到时间和日期格式的处理和转换,尤其是时间相关数据的分析和挖掘。比如量化交易就是从历史数据中寻找股价的变化规律。Python自带的处理时间的模块包括datetime,NumPy库也提供了相应的方法。熊猫作为Python环境下的数据分析库,提供了强大的数据处理功能,是处理时间序列的利器。

1.生成日期系列

主要提供pd.data_range()和pd.period_range()两种方法。给定的参数包括开始时间、结束时间、生成周期数和时间频率(频率=‘M’个月,‘D’天,‘w’,周,‘Y’年)等。

两个主要区别是pd.date_range()以DatetimeIndex格式生成日期序列。Pd.period_range()以periodindexformat生成日期序列。

下面通过生成每月时间序列和每周时间序列进行比较:

date _ RNG = PD . date _ range(' 2019-01-01 ',freq='M ',句点=12)

打印(f ' month date _ range(): n { date _ RNG } ')

date_range():

DatetimeIndex(['2019-01-31 ',' 2019-02-28 ',' 2019-03-31 ',' 2019-04-30 ',

'2019-05-31', '2019-06-30', '2019-07-31', '2019-08-31',

'2019-09-30', '2019-10-31', '2019-11-30', '2019-12-31'],

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

period _ RNG = PD . period _ range(' 2019/01/01 ',freq='M ',periods=12)

打印(f ' month period _ range(): n { period _ RNG } ')

period_range():

PeriodIndex(['2019-01 ',' 2019-02 ',' 2019-03 ',' 2019-04 ',' 2019-05 ',' 2019-06 ',

'2019-07', '2019-08', '2019-09', '2019-10', '2019-11', '2019-12'],

dtype='period[M]',freq='M ')

date _ RNG = PD . date _ range(' 2019-01-01 ',freq='W-SUN ',句点=12)

打印(f ' week date _ range(): n { date _ RNG } ')

周日期范围():

DatetimeIndex(['2019-01-06 ',' 2019-01-13 ',' 2019-01-20 ',' 2019-01-27 ',

'2019-02-03', '2019-02-10', '2019-02-17', '2019-02-24',

'2019-03-03', '2019-03-10', '2019-03-17', '2019-03-24'],

dtype='datetime64[ns]',freq='W-SUN ')

period _ RNG = PD . period _ range(' 2019-01-01 ',freq='W-SUN ',periods=12)

打印(f ' week period _ range(): n { period _ RNG } ')

周期间_范围():

period index([' 2018-12-31/2019-01-06 ',' 2019-01-07/2019-01-13 ',

'2019-01-14/2019-01-20', '2019-01-21/2019-01-27',

'2019-01-28/2019-02-03', '2019-02-04/2019-02-10',

'2019-02-11/2019-02-17', '2019-02-18/2019-02-24',

'2019-02-25/2019-03-03', '2019-03-04/2019-03-10',

'2019-03-11/2019-03-17', '2019-03-18/2019-03-24'],

数据类型= '句点[W-SUN]',频率='W-SUN ')

date _ RNG = PD . date _ range(' 2019-01-01 00:00:00 ',freq='H ',句点=12)

打印(f ' hour date _ range(): n { date _ RNG } ')

小时日期范围():

datetime index([' 2019-01-01 00:00:00 ',' 2019-01-01 01:00:00 ',

'2019-01-01 02:00:00', '2019-01-01 03:00:00',

'2019-01-01 04:00:00', '2019-01-01 05:00:00',

'2019-01-01 06:00:00', '2019-01-01 07:00:00',

'2019-01-01 08:00:00', '2019-01-01 09:00:00',

'2019-01-01 10:00:00', '2019-01-01 11:00:00'],

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

period _ RNG = PD . period _ range(' 2019-01-01 00:00:00 ',freq='H ',periods=12)

打印(f ' hour period _ range(): n { period _ RNG } ')

小时周期_范围():

PeriodIndex(['2019-01-01 00:00 ',' 2019-01-01 01:00 ',' 2019-01-01 02:00 ',

'2019-01-01 03:00', '2019-01-01 04:00', '2019-01-01 05:00',

'2019-01-01 06:00', '2019-01-01 07:00', '2019-01-01 08:00',

'2019-01-01 09:00', '2019-01-01 10:00', '2019-01-01 11:00'],

dtype='period[H]',freq='H ')

2.生成时间戳对象并转换它们

有PD。Timestamp()方法和pd.to_datetime()方法来创建时间戳对象。如下所示:

ts=pd。时间戳(2019,1,1)

print(f'pd.Timestamp()-1:{ts} ')

#警察。timestamp()-1:2019-01-01 00:00:00

ts=pd。时间戳(dt(2019,1,1,小时=0,分钟=1,秒=1))

print(f'pd.Timestamp()-2:{ts} ')

#警察。timestamp()-2:2019-01-01 00:01:01

ts=pd。时间戳(2019-1-1 0:1:1)

print(f'pd.Timestamp()-3:{ts} ')

#警察。timestamp()-3:2019-01-01 00:01:01

print(f ' PD . timestamp()-类型:{type(ts)} ')

#警察。timestamp()-类型:

不支持#dt=pd.to_datetime(2019,1,1)

dt=pd.to_datetime(dt(2019,1,1,小时=0,分钟=1,秒=1))

print(f ' PD . to _ datetime()-1:{ dt } ')

# PD . to _ datetime()-1:2019-01-01 00:01:01

dt = PD . to _ datetime(2019-1-10:1:1)

print(f ' PD . to _ datetime()-2:{ dt } ')

# PD . to _ datetime()-2:2019-01-01 00:01:01

print(f ' PD . to _ datetime()-类型:{type(dt)} ')

# PD . to _ datetime()-类型:

#pd.to_datetime生成自定义时间序列

dtlist = PD . to _ datetime([2019-1-10:1:1,2019-3-1 0:1:1])

print(f ' PD . to _ datetime()-list:{ dtlist } ')

# PD . to _ datetime()-list:datetime index([' 2019-01-01 00:01:01 ',' 2019-03-01 00:01:01'],dt type = ' datetime 64[ns]',freq=None)

#时间戳转换为期间月期间

pr = ts.to_period('M ')

print(f'ts.to_period():{pr} ')

#ts.to_period():2019-01

print(f ' PD . to _ period()-type:{ type(pr)} ')

# PD . to _ period()-类型:

3.生成周期对象并对其进行转换

#定义期间

per=pd。期间(' 2019 ')

打印(f'pd.Period():{per} ')

#警察。期间():2019

per_del=pd。句号(' 2019')-pd。期间(' 2018 ')

print(f ' interval of 2019 and 2018 { per _ del } years ')#可以是+和-(表示年份)的直接整数

#2019和2018相隔一年

#时间段转换为时间戳

打印(per . to _ timestamp(how = ' end '))# 2019-12-31 00:00:00

打印(per . to _ timestamp(how = ' start '))# 2019-01-01 00:00:00

4.生成时间间隔时间增量

#生成时间间隔时间增量

打印(pd。时间增量(天数=5,分钟=50,秒=20,毫秒=10,微秒=10,纳秒=10))

#5天00:50:20.010010

#获取当前时间

now=pd.datetime.now()

#计算当前时间后50天的日期

dt=now+pd。时间增量(天数=50)

打印(f '当前时间为{now},50天后时间为{dt} ')

#当前时间为2019年6月8日17: 59: 31.726065,50天后时间为2019年7月28日17: 59: 31.726065。

#仅显示年、月和日

打印(dt . str time(' % Y-% m-% d ')# 2019-07-28

5.重采样和频率转换

#asfreq按季度显示指数值

#“DateTimeIndex”对象没有属性“asfreq”

date=pd.date_range('1/1/2018 ',periods=20,freq='D ')

tsdat_series=pd。系列(范围(20),指数=日期)

tsp _ series = ts dat _ series . to _ period(' D ')

print(tsp _ series . index . asfreq(' Q '))

date=pd.period_range('1/1/2018 ',periods=20,freq='D ')

tsper_series=pd。系列(范围(20),指数=日期)

print(ts per _ series . index . asfreq(' Q '))

PeriodIndex(['2018Q1 ',' 2018Q1 ',' 2018Q1 ',' 2018Q1 ',' 2018Q1 ',' 2018Q1 ',

2018Q1 ',' 2018Q1 ',' 2018Q1 ',' 2018Q1 ',' 2018Q1 ',' 2018Q1 ',

2018Q1 ',' 2018Q1 ',' 2018Q1 ',' 2018Q1 ',' 2018Q1 ',' 2018Q1 ',

2018年第1季度',' 2018年第1季度'],

dtype='period[Q-DEC]',freq='Q-DEC ')

#重新取样按季度计数和显示

print(tsdat_series.resample('Q '))。sum()。to_period('Q '))

2018年第1季度190

Freq: Q-DEC,数据类型:int64

#groupby汇总并按周平均

print(ts dat _ series . group by(lambda x:x . weekday)。均值())

0 7.0

1 8.0

2 9.0

3 10.0

4 11.0

5 12.0

6 9.5

dtype: float64

1.《FREQ Pandas库基础分析——详解时间序列的处理》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《FREQ Pandas库基础分析——详解时间序列的处理》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/junshi/1203873.html

上一篇

卜凡成立个人工作室 卜凡与坤音解约了

下一篇

李现杨紫为对方画像 两人剧里剧外疯狂撒糖

托福口语时间 托福口语想拿高分你必须做到这几点!

  • 托福口语时间 托福口语想拿高分你必须做到这几点!
  • 托福口语时间 托福口语想拿高分你必须做到这几点!
  • 托福口语时间 托福口语想拿高分你必须做到这几点!
注册安全工程师报名时间 2018年注册安全工程师各省报名时间

注册安全工程师报名时间 2018年注册安全工程师各省报名时间

2018年正式报名考试报名时间从8月6日开始至9月6日结束。报名时间因省而异。请关注当地省级人事考试网,以及全国统一报名地址:  http://www.cpta.com.cn/ 2018注册安全工程师考试报名时间通知摘要:浙江报名时间8月16日...

中药一般熬多长时间最好 中药一般要熬多久,药汤真的越浓效果越好吗?

  • 中药一般熬多长时间最好 中药一般要熬多久,药汤真的越浓效果越好吗?
  • 中药一般熬多长时间最好 中药一般要熬多久,药汤真的越浓效果越好吗?
  • 中药一般熬多长时间最好 中药一般要熬多久,药汤真的越浓效果越好吗?

强盗 绘本时间|《三个强盗》

周末了!爸爸妈妈,是时候给孩子们讲个故事了! 人们可能会认为强盗绝对是坏人。但是这里的强盗不知道他们为什么做坏事。直到有一次,他们抢劫的时候,遇到了一个孤儿。他们没有抢到钱,就把孩子带到藏宝的山洞。孤儿问这些闪亮的东西是干什么用的。 故事由此开...

俞敏洪北大演讲 俞敏洪北大劲爆演讲,少参加这样的论坛,对于你们来说这是一种时间的浪费

俞敏洪北大演讲 俞敏洪北大劲爆演讲,少参加这样的论坛,对于你们来说这是一种时间的浪费

“较少参与此类论坛。这对你来说是浪费时间。” 在北京大学百年讲堂举行的第19届北京大学光华新年论坛上,新东方教育科技集团创始人、董事长兼首席执行官俞向台下众多创业者发表了惊艳的讲话。  于北大作了精彩的演讲。这张嘴太厉害了  作为北大的校友,余...

绿豆水煮多长时间合适

绿豆水煮多长时间合适

绿豆一般需要开水煮30分钟左右。绿豆煮太久容易破坏其中的有效成分。绿豆汤是以绿豆和水为主要成分制成的汤,具有解渴解暑的功效。绿豆汤营养丰富,是一种经济、营养价值很高的汤。绿豆汤方法一:将绿豆洗净,控制其水分,倒入锅中,加入沸水,加入量不应超过绿...

手机银行跨行转账多久能到 各大银行跨行转账到账时间 跨行转账一般多久到账

手机银行跨行转账多久能到 各大银行跨行转账到账时间 跨行转账一般多久到账

在生活中,我们经常需要使用银行转账功能,经常会遇到银行间转账的问题。大家一定会很关心到达时间。那么各大银行互相转账需要多久呢?让我们看看! 一、工行跨行转账到达时间: 1.系统实时到帐,50W次以上; 2.跨系统按中国人民银行的时间。 二.招商...

支付宝调整还款日 具体调整到什么时间怎么调

据7月30日消息,支付宝已经开通预约,调整花蕾的支付日期和相应的还款日期。这个消息一出,很多网友沸腾了。谁手机里没有一些花蕾来欠钱?据悉,在柏华签约一年以上的用户,通过系统评估后,可以选择每月15日或20日还款,计费日期将相应调整为每月5日或1...