python 时间处理datetime

python datetime 时间处理

数据分析过程中经常会处理一些时间序列,需要进行一些时间格式的转换,或者提取一些时间信息

pandas 处理 datetime

csv数据中某一列为日期

使用 parse_dates 参数

在读取的过程中,直接将存储时间的列读取为 datetime 格式,并将其设置为行index

import pandas as pd
from datetime import datetime

# 读取数据,在csv数据中,第四列为日期
ndvi_data = pd.read_csv('数据.csv',index_col = 3,parse_dates =True)
ndvi_data.head()

在这里插入图片描述

ndvi_data.index

在这里插入图片描述

使用 to_datetime() 函数

直接读取数据,然后再转换格式

ndvi_data = pd.read_csv('数据.csv')
ndvi_data.head()

在这里插入图片描述

ndvi_data.Date

在这里插入图片描述
此时Date列的格式并不是 datetime

ndvi_data.loc[:,'Date'] = pd.to_datetime(ndvi_data.Date)

使用to_datetime 函数将其转换为 datetime格式
在这里插入图片描述

根据日期对数据进行处理

进行 resample()

将日期作为索引后,可以使用resample对数据进行计算处理,如求均值,求和等

首先,在使用 to_datetime() 函数 将日期列转为 datetime格式后,可以使用 set_index 方法将该列设置为 index

ndvi_data = ndvi_data.set_index('Date')

在这里插入图片描述
之后,可以按照不同的时间频率进行resample操作

## 按月对数据求均值
ndvi_data.resample('M').mean()

pandas 提供了多种多样的时间频率,具体见 link

分组操作:groupby()

还可以按找某些时间参数 对数据进行分组,并完成一些计算和统计

为了直观一些,可以首先从日期时间中提取 年,月,日等信息,并写成新的列

  • 当datetime 作为index时
## 新增一列 年份
ndvi_data['year'] = ndvi_data.index.year
ndvi_data

在这里插入图片描述

  • 当 datetime 为一列时,可以使用 lambda
ndvi['year'] = ndvi['date'].apply(lambda x:x.year)
  • 出了常见的年月日外,有时需要从 datetime中提取 doy (day of year), 可以使用 datetime中的 timetuple() 方法
## tm_yday 为 doy
ndvi['doy'] = ndvi['date'].apply(lambda x:x.timetuple().tm_yday)

timetuple() 方法可以得到 datetime 中的各种 时间成分
在这里插入图片描述

在得到这些时间信息的列之后,可以使用groupby 进行一些统计和计算

例如,计算每个样点每一年,每一列数据的均值

ndvi_data.groupby(['ID','year']).mean()

在这里插入图片描述
分组-处理-组合 split-apply-combine 是使用pandas分析数据时最常用的操作组合,更多内容见 pandas link

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值