Pandas进阶拾 时序数据

本文介绍了Pandas在处理时序数据方面的进阶技巧,包括太阳辐射数据集和水果销量数据集的案例分析。涉及时间列合并、时间间隔统计、滑动相关系数计算、分组求均值等操作,通过实例展示了如何利用Pandas进行时序数据的深入挖掘。
摘要由CSDN通过智能技术生成

Pandas进阶拾 时序数据

pandas进阶系列根据datawhale远昊大佬的joyful pandas教程写一些自己的心得和补充,本文部分引用了原教程,并参考了pandas官网

另注:本文是对joyful pandas教程的延伸,完整理解需先阅读joyful pandas教程第拾章

练习

Ex1:太阳辐射数据集

现有一份关于太阳辐射的数据集:

  1. Datetime, Time合并为一个时间列Datetime,同时把它作为索引后排序。
  2. 每条记录时间的间隔显然并不一致,请解决如下问题:
  • 找出间隔时间的前三个最大值所对应的三组时间戳。
  • 是否存在一个大致的范围,使得绝大多数的间隔时间都落在这个区间中?如果存在,请对此范围内的样本间隔秒数画出柱状图,设置bins=50
  1. 求如下指标对应的Series
  • 温度与辐射量的6小时滑动相关系数
  • 以三点、九点、十五点、二十一点为分割,该观测所在时间区间的温度均值序列
  • 每个观测6小时前的辐射量(一般而言不会恰好取到,此时取最近时间戳对应的辐射量)
import numpy as np
import pandas as pd
df = pd.read_csv('../data/solar.csv', usecols=['Data','Time','Radiation','Temperature'])
df.head(3)
Data Time Radiation Temperature
0 9/29/2016 12:00:00 AM 23:55:26 1.21 48
1 9/29/2016 12:00:00 AM 23:50:23 1.21 48
2 9/29/2016 12:00:00 AM 23:45:26 1.23 48

第一问 将Datetime, Time合并为一个时间列Datetime,同时把它作为索引后排序。
思路:需要取出两个目标列中的日期和时间,因此先转换为datetime64[ns]格式,然后就有了日期列和时间列,将其看作字符串并合并

df2 = df.copy()
date = df2.Data.astype('datetime64[ns]').dt.date.astype('string')
time = df2.Time.astype('datetime64[ns]').dt.time.astype('string')
df2['Datetime'] = (date + ' ' + time).astype('datetime64[ns]')
df2.drop(columns=['Data', 'Time'], inplace=True)
df2 = df2.set_index('Datetime').sort_index()
df2.head(3)
Radiation Temperature
Datetime
2016-09-01 00:00:08 2.58 51
2016-09-01 00:05:10 2.83 51
2016-09-01 00:20:06 2.16 51

第二问 求解前三组间隔时间最大的所对应的时间戳
思路:首先将Datetimediff滑窗求日期差值(上一问已完成排序),可以看出,求出的结果(日期差值)的索引是该项与前一项的差值,因此第一项的值为空,紧接着求最大的三个差值对应的索引,这个索引对应的时间戳便是三组时间戳的右临界值,左临界值就是索引-1,也就是前一项的时间戳。

df3 = df2.reset_index()
right_index = df3['Datetime'].diff(1).sort_values(ascending=False)[:3].index
left_index = right_index-1
res = []
for i,j in zip(df3.loc[left_index]['Datetime'], df3.loc[right_index]['Datetime']):
    res.append((i, j))
for x 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值