数据分析过程中经常会处理一些时间序列,需要进行一些时间格式的转换,或者提取一些时间信息
csv数据中某一列为日期
在读取的过程中,直接将存储时间的列读取为 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
直接读取数据,然后再转换格式
ndvi_data = pd.read_csv('数据.csv')
ndvi_data.head()
ndvi_data.Date
ndvi_data.loc[:,'Date'] = pd.to_datetime(ndvi_data.Date)
使用to_datetime 函数将其转换为 datetime格式
将日期作为索引后,可以使用resample对数据进行计算处理,如求均值,求和等
首先,在使用 to_datetime() 函数 将日期列转为 datetime格式后,可以使用 set_index 方法将该列设置为 index
ndvi_data = ndvi_data.set_index('Date')
## 按月对数据求均值
ndvi_data.resample('M').mean()
pandas 提供了多种多样的时间频率,具体见 link
还可以按找某些时间参数 对数据进行分组,并完成一些计算和统计
为了直观一些,可以首先从日期时间中提取 年,月,日等信息,并写成新的列
## 新增一列 年份
ndvi_data['year'] = ndvi_data.index.year
ndvi_data
ndvi['year'] = ndvi['date'].apply(lambda x:x.year)
## 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