python 返回列表时间索引序列数据的提取处理?

参数说明通过将多种形式的日期转换成标准形式整合多列中的信息组成一个日期注意,使用这种方式组合多个列中的时间信息的时候,列的名称分别必须是:
year,monthdayhourminutesecond日期对象的使用数据导入将“原日期” 的类型转为 datetime 类型调用 Series 中的 dt 对象来获取各种信息年: series.dt.year月: series.dt.month日: series.dt.day星期几: series.dt.day_name()当前日期的季度: series.dt.quarter是否是年底: series.dt.is_year_end获取特定日期 / 日期区间数据将时间列放到数据最前面的一列(非必须)按照时间列进行排序(非必须)首先将时间列作为索引可以直接按照年份索引可以直接按照年份+月份索引可以直接按照日期索引可以索引日期的区间按照不同的时期进行数据统计将日期列作为索引按照年进行统计求和按照季度统计求和按照月统计按星期统计按照天统计按照时期显示数据只 按照年份显示数据;这里使用的是 A 而不是 AS按照季度显示数据按照月显示数据按照星期显示按照时期统计 & 显示按照年按照季度按照月按照星期时间序列 date_range时间序列的降采样和升采样降采样将原本 1 分钟的时间频率降低到 3 分钟每次,这样操作频率降低了,因此,需要将指定数据聚合的方式,下面的例子中使用的是 sum 方式在下面的例子中,原本的数据是每天,现在通过 resample 降采样成每个周采样一次下面的例子又降采样成月升采样升采样过程中如果没有数据就用NAN 来代替可以按照缺失值填补的方式:ffill 和 bfill 来填补时间序列数据汇总- 使用 ohlc 函数;每次统计一定量的数据,然后统计出这些数据中的 open high low close 数据移动窗口数据计算windows 是窗口大小
分类专栏
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
1.Pandas日期时间变量Timestamp与Period创建时间对象import pandas as pd
from datetime import datetime
# 创建日期时间变量Timestamp
print(pd.Timestamp(datetime(2032,1,1))) # 自动补充时分秒
print(pd.Timestamp(datetime(2032,1,1,3,4,5)))
print(pd.Timestamp(2032,1,2)) # 效果与上面的一样
print(pd.Timestamp(2032,1,2,3,4,5))
print(pd.Timestamp('2032-01-02'))
print(pd.Timestamp('2032/01/02')) # 用 / 或者 - 划分年月日,用:划分时分秒
print(pd.Timestamp('2032-01-02 01:02:03'))
# Peroid 被看作是化简后的Timestamp对象
pd.Period('2032-01') # 后面代表精确值 M月份 Y年.......
pd.Period('2032-09',freq='D')
2.Pandas时间转换在我们python数据分析的过程中,我们经常需要对时间日期进行转换成时间对象。pd.to_datetime(
arg :需要转换为 Timestamp 类的数值
Integer, float, string, datetime, list, tuple, 1-d array,Series,
errors = ‘raise' : (‘ ignore' , ‘raise' , 'coerce' )
'raise ' 抛出错误
'coerce' 设定为 NaT
'ignore' 返回原值短日期的解释方式:类似 '10/11/12"这样的数据如何解释
dayfirst = ‘False' : 数值是否 day 在前
yearfirst = 'False':数值是否 year 在前,该设定优先
box = True :是否返回为 DatetimeIndex, False 时返回ndarray 数组
format = None :需要转换的字符串格式设定)
pd.to_datetime(datetime(2032, 1, 2, 3, 4, 5))
pd.to_datetime('2032-01-02 3:4:5')
pd.to_datetime(['2032/01/02' , '2032.01.03'])
pd.to_datetime(df[ 'date' ], format = '%Y-%m-
%d %H:%M')
import pandas as pd
df = pd.read_excel('date_test.xlsx')
pd.options.display.max_rows = 5
# 查看需要转化的时间数据
print('查看需要转化的时间数据')
print(df['date'])
print(type(df['date'][0]))
print(type(df['date']))
# 方法1:使用Timestamp转化单个数据
print('方法1:使用Timestamp转化单个数据')
print(pd.Timestamp(df['date'][0]))
print(type(pd.Timestamp(df['date'][0])))
# 方法2:使用Timestamp转化全部数据
print('方法2:使用Timestamp转化全部数据')
print(df['date'].apply(pd.Timestamp))
print(type(df['date']))
# 方法3:使用to_datetime()转化
# 测试用法
from datetime import datetime
# 可以直接传入;可以传入字符串;可以传入列表
pd.to_datetime(datetime(2030,3,4))
pd.to_datetime(datetime(2030,3,4,4,5,6))
pd.to_datetime('2031-3-4 4:21:22')
pd.to_datetime(['2031-3-4','2032.3.2','2030/2/1'])
# 转化date的数据
pd.to_datetime(df['date'])
df2 = pd.read_excel('date_test.xlsx',sheet_name='Date')
df2
# 使用to_datetime转化dateframe几列为日期格式
pd.to_datetime(df2[['Year',"Month",'Day','Hour']])
3.Pandas时间索引——使用 DatetimeIndex 类Datetimeindex 类对象除了拥有 Index 类对象的所有功能外,还针对日期时间的特点有如下增强:基于日期时间的各个层级做快速索引操作快速提取所需的时间层级按照所指定的时间范围做快速切片这种建立方式主要是和 reindx 命令配合使用,以快速完成对时间序列中缺失值的填充工作
pd.date_range(
start /end = None :日期时间范围的起点/终点,均为类日期时
间格式的字符串/数

periods = None :准备生成的总记录数
freq = 'D':生成记录时的时间周期,可以使用字母和数值倍数的
组合,如'5H'
name = None :生成的 DatetimeIndex 对象的名称
)
pd.bdate_range(
主要参数和 pd.date_range 几乎完全相同,但默认 freq = 'B'
(business daily) 另外附加了几个针对工作日/休息日筛选的参数
)
import pandas as pd
# 1.手动创建DatetimeIndex
index = pd.DatetimeIndex(['2030-1-1','2030-1-2','2030-1-3','2030-1-4','2030-1-5','2030-1-6',
'2030-1-7','2030-1-8','2030-1-9','2030-1-10'])
# 2.自动创建时间索引date_rande() 指定start end 默认是按天进行递增 对比1.多增加一个freq
index2 = pd.date_range('2030-1-1','2030-1-10')
index2
# 3.自动创建时间索引date_rande() 指定start 和 periods(创建几个日期索引)默认是按天进行递增freq
index3 = pd.date_range('2030-1-1',periods=10)
index3
# 4.自动创建时间索引date_rande() 指定start 和 periods(创建几个日期索引) 指定日期单位freq
index4 = pd.date_range('2030-1-1',periods=10,freq='H')
index4
# 5.自动创建时间索引date_rande() 指定start 和 periods(创建几个日期索引) 指定日期单位freq(几倍的最小单位)
index5 = pd.date_range('2030-1-1',periods=10,freq='3H')
index5
# 6.bdate_range() :用法类似 freq默认是B 日
index6 = pd.bdate_range('2030-1-1',periods=10)
index6
# 7.读取文件指定时间索引
df = pd.read_excel('date_test.xlsx',index_col='date')
pd.options.display.max_rows=5
df
# 8.日期索引优势:索引过滤、切片
df['2035']
df['2035-1']
df['2025':'2027']
df['2026-4':'2029-5']
4.Pandas时间序列的使用序列的分组汇总DatetimeIndex 对象可直接引用的属性(这也是我们为什么要把时间设置成Datetime格式的优势):import pandas as pd
df = pd.read_excel('date_test.xlsx', index_col='date') # 设置时间为索引
# 获取月份
df.index.month
# 获取年
df.index.year
直接使用 groupby 方法进行汇总# 直接使用 groupby 方法进行汇总
df.groupby(df.index.year).max()
resample( )使用上比 groupby 更简单(输入更简洁) 可以将日期格式Datetime数值和汇总单位进行组合,实现更复杂的汇总计算# 使用resample 实现更复杂的对时间格式的分组
df.resample('2Y').mean() # 求2年一组的平均值
# 分组为3天:求3天一组中的最小值
df.resample('3D').min()
时间缺失值的处理对于缺失值,不仅仅时Nan,数据中的没有按照规律给出的时间也算是缺失值时间序列要求记录的时间点连贯无缺失,因此需要:首先建立针对整个时间范围的完整序列框架随后针对无数据的时间点进行缺失值处理序列数值平移df.shift(periods = 1: 希望移动的周期数freq :时间频度字符串axis =0)# 处理时间缺失值方法:
# 第一步:建立完整的数据列表
index = pd.date_range('2025-01-01',"2037-12-31")
# 第二步:查看索引是否有重复
print(df.index.duplicated())
# 第三步:获取不重复的索引数据(作为查看的一种方式)
# df2 = df[~df.index.duplicated()].reindex()
# 第四步:填充缺失值
df2 = df[~df.index.duplicated()].reindex(index, method='ffill') # 向上填充
# 第五步:shift()平移
df2.shift(-2) # -2向上平移2个位置

我要回帖

更多关于 python 返回列表 的文章

 

随机推荐