ope电竞投注_ope体育首页_ope体育赞助西甲
ope电竞投注

最熟悉的陌生人,张若昀-ope电竞投注_ope体育首页_ope体育赞助西甲

admin admin ⋅ 2019-05-21 07:19:13


图片来历:https://pixabay帅哥撒尿.com/

作为一个简直每天与时刻序列数据打交道的人员,我发现panda Python包在时刻序列的操作和剖析方面有强壮优势。

这篇关于panda时刻序列数据处理的根本介绍能够带你入门时刻序列剖析。本文将首要介绍以下操作:

  • 创立一个日期规模
  • 处理时刻戳最了解的陌生人,张若昀-ope电竞投注_ope体育主页_ope体育资助西甲数据
  • 将字符串数据转化为时刻戳
  • 在数据框中索引和切片时刻序列数据
  • 从头采样不同时刻段的时刻序列汇总/汇总核算数据
  • 核算翻滚核算数据,如翻滚均匀值
  • 处理丢掉数据
  • 了解unix/epoch时刻的基础知识
  • 了解时刻序列数据剖析的常见圈套

接下来咱们一同步入正题。假如想要处理已有的实践数据,你或许考虑从运用panda read_csv将文件读入数据框开端,可是在这里,咱们将直接从处理生成的数据开端。

首要导入咱们将会运用到的库,然后用它们创立日期规模

import pandas as pd
from datetime import datetime
import nu吴小晖和陈小鲁的联系mpy as np
date_rng = pd.date_range(start='1/1/2018', end='1/08/2018', freq='H')

这个日期规模的时刻戳为每小时一次。假如咱们调用d范浩明ate_rng,咱们会看到如下所示:

DatetimeIndex(['2018-01-01 00:00:00', '2018-01-01 01:00:00',
'2018-01-01 02:00:00', '2018-01-01 03:00:00',
'2018-01-01 04:00:00', '2018-01-01 05:00:00',
'2018-01-01 06:00:00', '2018-01-01 07:00:00',
'2018-01-01 08:00:00', '2018-01-01 09:00:00',
...
'2018-01-07 15:00:00', '2018-01-07 16:00:00',
'2018-01-07 17:00:00', '2018-01-07 18:00:00',
'2018-01-07 19:00:00', '2018-01-07 20:00:00',
'2018-01-07 21:00:00', '2018-01-07 22:00:00',
'2018-01-07 23:00:00'最了解的陌生人,张若昀-ope电竞投注_ope体育主页_ope体育资助西甲, '2018-01-08 00:00:00'],
dt最了解的陌生人,张若昀-ope电竞投注_ope体育主页_ope体育资助西甲ype='datetime64[ns]', length=169, freq='H')

咱们能够查看第一个元素的类型:

type(date_rng[0])
#returns
pandas._libs.tslib.Timestamp

让咱们用时刻戳数据的创立一个示例数据框,并查看前15个元素:

df = pd.DataFrame(date_rng, columns=['date'])
df['data'] = np.random.randint(0,100,size=(lesw036n(date_rng)))
df.head(15)

示例数据框

假如想进行时刻序列操作,咱们需求一个日期时刻索引。这样一来,数据框便能够在时刻戳上树立索引。

将数据框索引转化为datet最了解的陌生人,张若昀-ope电竞投注_ope体育主页_ope体育资助西甲ime索引,然后显现第一个元素:

df['datetime'] = pd.to_datetime(df['date'])
df = df.set_index('datetime')
df.drop(['date'], axis=1, inplace=True)
df.head()

假如数据中的“时刻”戳实践上柏寒儿子韩青是字符串类型和数值类型相比较,该怎么办呢?咱们能够将date_rng转化为字符串列表,然后将字符串转化为时刻戳。

string_date_rng = [str(x) for x in date_rng]
string_date_rng
#returns
['2018-01-01 00:00:00',
'2018-01-01 01:00:00',
'2018-01-01 02:00:诺诗玛官网00',
'2018-01-01 03:00:00',
'2同性恋老头018-01-01 04:00:00',
'2018-01-01 05:00:00',
'2018-01-01 06:00:00',
'2018-01-01 07:00:00',
'2018-01-01 08:00:00',
'2018-01-01 09:00:00',...

能够经过揣度字符串的格局将其转化为时刻戳,然后查看这些值:

timestamp_date_rng = pd.to_datetime(string_date_rng, infer_datetime_format=True)
timestamp_date_rng
#returns
DatetimeIndex(['2018-01-01 00:00:00', '2018-01-01 01:00:00',
'20最了解的陌生人,张若昀-ope电竞投注_ope体育主页_ope体育资助西甲18-01-01 02:00:00', '2018-01-01 03:00:00',
'2018-01-01 04:00:00', '2018-01-01 05:00:00',
'2018-01-01 06:00:00', '2018-01-01 07:00:00',
'2018-01-01bbfuli 08:00:00', '2018-01-01 09:00:00',
...
'2018-01-07 15:00:00', '2018-01-07 16:00:00晓声长谈在线直播',
'2018-01-07 17:00:00', '2018-01-07 18:00:00',
'2018-01-07 19:00:00', '2018-01-07 20:00:00',
'2018-01-07 21:00:00', '2018-01-07 22:00:00',
'2018-01-07 23:00:00', '2018-01-08 00:00:00'],
dtype='datetime64[ns]', length=169, freq=None)

可是假如需求转化一个仅有的字符串格局呢?

咱们能够创立一个恣意的字符串方法的日期列表,并将它们转化为时刻戳:

string_date_rng_2 = ['June-01-2018', 'June-02-2018', 'June-03-2018']
timestamp_date_rng_2 = [datetime.strptime(x,'%B-%d-%Y') for x in string_姜志光date_rng_2]
timestamp_date_rng_2
#returns
[datetime.datetime(2018, 6, 1, 0, 0),
datetime.datetime(2018, 6, 2, 0, 0),
datetime.datetime(2018, 6, 3, 0,黄釲莹 0)]

假如把它放到数据框中,将会怎么?

df2 = pd.DataFrame(timestamp_date_rng_2, columns=['date'])
df2

回到开端的数据结构,让咱们经过解析时刻戳索引来查看数据:

假定只想查看本月2号的数据,能够运用如下索引。

df[df.index.兴辉圈day == 2]

顶部如图所示:

也能够经过数据框索引直接调用想查看的日期:

df['2018-01-03']

怎么在特定日期之间挑选数据?

df['2018-01-04':'2018-01-06']

咱们填充的根本数据框供给了频率以小时计的数刘也行女友王诺诺据,但相同能够以不同的频率从头采样数据,并中国武术散打功夫王争霸赛指定怎么核算新样本频率的汇总核算信息。咱们能够取每天频率下数据的最小值、最大值、均匀值、总和等,而不是每小时的频率,如下面的比如,核算每天数据的均匀值:

df.resample('D').mean()

那么比如翻滚均匀值或翻滚和之类的窗口核算信息呢?

让咱们在本来的df中创立一个新列,核算3个窗口周期内的翻滚和,然后查看数据框的顶部:

df ['rolling_sum'] = df.rolling(3).sum()
df.head(10)

能够看到,在这个正确的核算中,只有当存在三个周期能够回忆时,它才开端具有有用值。

这能够有用地帮咱们了解到,当处理丢掉的数据值时,怎么向前或向后“翻滚”数据。

这是咱们的df,但有一个新的列,采纳翻滚求和并向后“翻滚”数据:

df['rolling_sum'] = df.rolling(3).sum()
df.head(10)

选用比如均匀时刻之类的实南怀瑾50句人生精言际值用于添补丢掉的数据,这种办法一般来说是有用的。但必定谨记,假如你正处理一个时刻序列的问题,而且期望数据是切合实践的,那么你不应该向后“翻滚”数据。由于这样一来,你需求的关于未来的信息就永久不或许在那个时刻获取到。你或许更期望频频地向前“翻滚”数据,而不是向后“翻滚”。

在处理时刻序列数据时,或许会遇到Unix时刻中的时刻值。Unix时刻,也称为Epoch时刻,是自和谐世界时(UTC) 1970年1月1日周四00:00:00今后经过的秒数。运用Unix时刻有助于消除时刻戳的歧义,这样咱们就不会被时区、夏令时等混杂。

下面是一个时刻t在Epoch时刻的比如,它将Unix/Epoch时刻转化为UTC中的惯例时刻戳:

epoch_t = 1529272655
real_t = pd.to_datetime(epoch_t, unit='s')
real_t
#returns
Timestamp('2018-06-17 21:57:3雷天同5')

假如我想母妖剂把UTC中的时刻转化为自己的时区,能够简略地做以下操作:

real_t.tz_localize('UTC').tz_conve最了解的陌生人,张若昀-ope电竞投注_ope体育主页_ope体育资助西甲rt('US/Pacific')
#returns
Timestamp('2018-06-17 14:57:35-0700', tz='US/Pacific')

把握了这些基础知识后,就能够开端处理时刻序列数据了。

以下是一男人自学风水盗墓些处理时刻序列数据时要记住的技巧和常见的圈套:

  • 查看数据中或许由区域特守时最了解的陌生人,张若昀-ope电竞投注_ope体育主页_ope体育资助西甲间改变(如夏令时)引起的差异。
  • 精心盯梢时区 - 让别人经过代码了解你的数据地点的时区,并考虑转化为UTC或标准化值以坚持数据标准化。
  • 丢掉的数据或许常常发作 - 请保证记载清洁规矩并考虑不回填在采样时无法取得的信息。
  • 请记住,当从头采样数据或填写缺失值时,将丢掉有关原始数据集的必定数量的信息。主张盯梢一切数据转化并盯梢数据问题本源。
  • 从头采样数据时,最佳办法(均匀值,最小值,最大值,总和等)取决于具有的数据类型以及采样方法。请细心考虑怎么从头采样数据以进行剖析。
  • Programming

https://towardsdatasci伦理片搜搜ence.com/tagged/programming

  • Python

https://towardsdatascience.com/tagged/python

  • Pandas

https://towardsdatascience.com/tagged/pandas

  • Timeseries

https://towardsdatascience.com/tagged/timeseries

  • Data Science

https://towardsdatascience.com/tagged/data-science

以上为译文

本文由阿里云云栖社区安排翻译。

文章原标题《Basic Time Series Manipulation with Pandas》,译者:狮子家的袋鼠,审校:么凹。

相关新闻

admin

admin

TA太懒了...暂时没有任何简介

精彩新闻