panda提取时间戳中的日期_Pandas处理时间序列数据的20个关键知识点
时间序列数据有许多定义,它们以不同的方式表示相同的含义。一个简单的定义是时间序列数据包括附加到顺序时间点的数据点。
时间序列数据的来源是周期性的测量或观测。许多行业都存在时间序列数据。举几个例子:
- 一段时间内的股票价格
- 每天,每周,每月的销售额
- 流程中的周期性度量
- 一段时间内的电力或天然气消耗率
在这篇文章中,我将列出20个要点,帮助你全面理解如何用Pandas处理时间序列数据。
1.不同形式的时间序列数据
时间序列数据可以是特定日期、持续时间或固定的自定义间隔的形式。
时间戳可以是给定日期的一天或一秒,具体取决于精度。例如,' 2020-01-01 14:59:30 '是基于秒的时间戳。
2.时间序列数据结构
Pandas提供灵活和高效的数据结构来处理各种时间序列数据。
除了这3个结构之外,Pandas还支持日期偏移概念,这是一个与日历算法相关的相对时间持续时间。
3.创建一个时间戳
最基本的时间序列数据结构是时间戳,可以使用to_datetime或Timestamp函数创建
import pandas as pdpd.to_datetime('2020-9-13')
Timestamp('2020-09-13 00:00:00')pd.Timestamp('2020-9-13')
Timestamp('2020-09-13 00:00:00')
4.访问按时间戳保存的信息
我们可以获得存储在时间戳中的关于日、月和年的信息。
a = pd.Timestamp('2020-9-13')a.day_name()
'Sunday'
a.month_name()
'September'
a.day
13
a.month
9
a.year
2020
5. 隐藏信息访问
时间戳对象还保存有关日期算法的信息。例如,我们可以问这一年是不是闰年。以下是我们可以获得的一些更具体的信息:
b = pd.Timestamp('2020-9-30')b.is_month_end
Trueb.is_leap_year
Trueb.is_quarter_start
Falseb.weekofyear
40
6. 欧洲风格的日期
我们可以使用to_datetime函数处理欧洲风格的日期(即日期在先)。dayfirst参数被设置为True。
pd.to_datetime('10-9-2020', dayfirst=True)
Timestamp('2020-09-10 00:00:00')pd.to_datetime('10-9-2020')
Timestamp('2020-10-09 00:00:00')
注意:如果第一项大于12,Pandas会知道它不能是月。
pd.to_datetime('13-9-2020')
Timestamp('2020-09-13 00:00:00')
7. 将数据格式转换为时间序列数据
to_datetime函数可以将具有适当列的数据名称转换为时间序列。考虑以下数据格式:
pd.to_datetime(df)0 2020-04-13
1 2020-05-16
2 2019-04-11
dtype: datetime64[ns]
7.时间戳之外的时间表示
在现实生活中,我们几乎总是使用连续的时间序列数据,而不是单独的日期。而且,Pandas处理顺序时间序列数据非常简单。
我们可以将日期列表传递给to_datetime函数。
pd.to_datetime(['2020-09-13', '2020-08-12', '2020-08-04', '2020-09-05'])
DatetimeIndex(['2020-09-13', '2020-08-12', '2020-08-04', '2020-09-05'], dtype='datetime64[ns]', freq=None)
返回的对象是一个DatetimeIndex。
还有一些更实用的方法来创造一系列的时间数据。
9. 用todatetime和totimedelta创建时间序列
可以通过将TimedeltaIndex添加到时间戳中来创建DatetimeIndex。
pd.to_datetime('10-9-2020') + pd.to_timedelta(np.arange(5), 'D')
“D”用来表示“day”,但是也有很多其他的选择。你可以在这里查看整个列表。
10. date_range函数
它提供了一种更灵活的创建DatetimeIndex的方法。
pd.date_range(start='2020-01-10', periods=10, freq='M')
参数的作用是:指定索引中的项数。freq 是频率,“M”表示一个月的最后一天。
就freq参数而言,date_range非常灵活。
pd.date_range(start='2020-01-10', periods=10, freq='6D')
我们创建了一个频率为6天的数据。
11. period_range函数
它返回一个PeriodIndex。语法类似于date_range函数。
pd.period_range('2018', periods=10, freq='M')
12. timedelta_range函数
它返回一个TimedeltaIndex。
pd.timedelta_range(start='0', periods=24, freq='H')
13.时区
默认情况下,Panda的时间序列对象没有指定的时区。
dates = pd.date_range('2019-01-01','2019-01-10')
dates.tz is None
True
我们可以使用tz_localize方法为这些对象分配时区。
dates_lcz = dates.tz_localize('Europe/Berlin')
dates_lcz.tz
<DstTzInfo 'Europe/Berlin' LMT+0:53:00 STD>
14. 创建一个具有指定时区的时间序列
我们还可以使用tz关键字参数创建带有时区的时间序列对象。
pd.date_range('2020-01-01', periods = 5, freq = 'D', tz='US/Eastern')
15. 偏移量
假设我们有一个时间序列索引,并且想为所有的日期偏移一个特定的时间。
A = pd.date_range('2020-01-01', periods=10, freq='D')
A
让我们给这个数据加上一周的偏移。
A + pd.offsets.Week()
16. 移动时间序列数据
时间序列数据分析可能需要移数据点进行比较。移位函数可以移位数据。
A.shift(10, freq='M')
17. Shift vs tshift
- 移动:移动数据
- tshift:移动时间索引
让我们创建一个带有时间序列索引的dataframe,并绘制它以查看shift和tshift之间的区别。
dates = pd.date_range('2020-03-01', periods=30, freq='D')
values = np.random.randint(10, size=30)
df = pd.DataFrame({'values':values}, index=dates)df.head()
让我们把原始的时间序列和移位的时间序列一起画出来。
import matplotlib.pyplot as pltfig, axs = plt.subplots(nrows=3, figsize=(10,6), sharey=True)
plt.tight_layout(pad=4)
df.plot(ax=axs[0], legend=None)
df.shift(10).plot(ax=axs[1], legend=None)
df.tshift(10).plot(ax=axs[2], legend=None)
18. 用取样函数重新采样
时间序列数据的另一个常见操作是重采样。根据任务的不同,我们可能需要以更高或更低的频率重新采样数据。
Resample创建指定内部的组(或容器),并允许您对组进行合并。
让我们创建一个包含30个值和一个时间序列索引的Panda系列。
A = pd.date_range('2020-01-01', periods=30, freq='D')
values = np.random.randint(10, size=30)
S = pd.Series(values, index=A)
以下将返回3天时间内的平均值。
S.resample('3D').mean()
在某些情况下,我们可能对特定频率的值感兴趣。函数返回指定间隔结束时的值。例如,在上一步创建的系列中,我们可能只需要每3天(而不是平均3天)一次的值。
S.asfreq('3D')
20.滚动
滚动对于时间序列数据是一种非常有用的操作。滚动意味着创建一个具有指定大小的滚动窗口,并对该窗口中的数据执行计算,当然,该窗口将滚动数据。下图解释了滚动的概念。
值得注意的是,计算开始时整个窗口都在数据中。换句话说,如果窗口的大小为3,那么第一次合并将在第三行进行。
让我们为我们的数据应用一个3天的滚动窗口。
S.rolling(3).mean()[:10]
结论
我们已经全面介绍了用Pandas进行时间序列分析。值得注意的是,Pandas提供了更多的时间序列分析。
感谢您的阅读。如果你有任何反馈,请告诉我。
作者:Soner Yıldırım
deephub翻译组:孟翔杰
panda提取时间戳中的日期_Pandas处理时间序列数据的20个关键知识点相关推荐
- pandas rolling方法_Pandas处理时间序列数据的20个关键知识点
时间序列数据有许多定义,它们以不同的方式表示相同的含义.一个简单的定义是时间序列数据包括附加到顺序时间点的数据点. 时间序列数据的来源是周期性的测量或观测.许多行业都存在时间序列数据.举几个例子: 一 ...
- panda提取时间戳中的日期_CMIP6数据提取---Python实现方案
一个月前写了一篇"使用Arcgis处理CMIP6(netCDF)数据的流程"后,一直收到朋友们的私信,也几乎天天都有交流.说来惭愧,后来我放弃了使用Arcgis进行处理这一条路,而 ...
- panda提取时间戳中的日期_工作中常用的十个日期时间计算公式,你一定要收藏...
1.计算本月天数 在单元格输入公式:=DAY(EOMONTH(TODAY(),0)) 后将格式改为常规. 2,计算年龄 在C4单元格输入公式:=DATEDIF(B4,TODAY(),"y&q ...
- panda提取时间戳中的日期_《我在时间尽头等你》中的文案,总有一个戳中你的泪点...
1. 最好的爱情是什么样?不只是爱闪闪发光的你,是连同你的脆弱.敏感.哭泣,也一并捧在手心:不只是爱和你在一起的幸福,是连同生活的辛苦.委屈.不测,也坚定站在你的身边. 2. 一个人如果爱着什么,是会 ...
- JAVA正则提取字符串中的日期
在我们解析字符串的时候,有这么一个需求,需要提取字符中的日期,例如:"开奖日期:2021年3月28日 兑奖截止日期:2021年5月26日" 输入样例: 开奖日期:2021年3月28 ...
- python使用statsmodels包中的tsaplots函数可视化时间序列数据所有滞后位置个数(级别)的自相关性(plot the autocorrelation function)
python使用statsmodels包中的tsaplots函数可视化时间序列数据所有滞后位置个数(级别)的自相关性(plot the autocorrelation function) 目录
- R语言向前或者向后移动时间序列数据(自定义滞后或者超前的期数):使用dplyr包中的lag函数将时间序列数据向前移动一天(设置参数n为正值)
R语言向前或者向后移动时间序列数据(自定义滞后或者超前的期数):使用dplyr包中的lag函数将时间序列数据向前移动一天(设置参数n为正值) 目录
- VB提取字符串中的日期
'函数代码: Function getDate(a As String) As String On Error GoTo ToExit '打开错误陷阱 '--------------- ...
- 如何提取matlab中某一行一列的数据
比如,从一个6*6矩阵中,提取它的第一行元素,形成一个6维行向量. A(i,:)行 A(:,i)列 方法: A(i,:) 提取矩阵A的第 i行 A(:,i) 提取矩阵A的第 i列 给你个例子: A=[ ...
最新文章
- golang 导出变量、函数 首字母必须大写
- html5 jquery paint plugin,制作高质量的JQuery Plugin 插件的方法
- VSCode 扩展中出现严重漏洞,可导致供应链攻击
- RTOS osDelay和taskDelay关系
- 提高专业技能之 “专利申请”
- 查看solaris系统的版本和位数
- win10升级工具_win10升级安装工具
- [渝粤教育] 西北农林科技大学 土壤学 参考 资料
- uni-appの发展和应用
- python数据分析之pandas数据选取:df[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[]
- 如何简单快速的获取到页面上的svg图标?
- 十六进制字符串转换为字节数组
- Web过滤器:Filter
- 计算机基础知识题精选
- 教你安装Weblogic
- 实时错误91,对象变量或with块变量未设置
- 鸡啄米vc++2010系列27(列表视图控件List Control 上)
- 施努卡: 机器视觉系统到底是什么?有什么作用?
- “zabbix server is not running: the information displayed may not be current”的一种可能原因
- 各版本的mysql-connector-net下载
热门文章
- CSS中expression怎么用? CSS expression详解
- 模板之家php mysql_PHP+APACHE+MYSQL安装方法
- docker 不包含依赖 打包_docker源码打包RPM
- edittext在哪可以获取有效值_java-从EditText获取文本字符串?
- 代理类 invoke方法没有返回值怎么办_何为动态代理?
- linux备份能压缩吗,Linux备份与压缩命令
- html下拉框只选择年份和月份,原生jQuery实现只显示年份下拉框
- Python中可变长度的参数args和**kwargs
- fiddler抓包第一课--手机数据抓包
- 后端服务接口都在测试什么?怎么测?