python处理excel数据(含日期数据)

打开.xls文件,内容大致如下:

 1、准备读取xls文件,再提取“平均风速”这列,但是按照下面这样写会发现不对(错误忘记是啥了,好像是key错误了):

data_wind = pd.read_excel('**.xls', sheet_name=worksheet_name)
wind = data_wind['平均风速(0.1m/s)']

worksheet_name是所属工作表的名字,改写一下就可以了,让列名字成为表头:

data_wind = pd.read_excel('**.xls', sheet_name=worksheet_name, header=0)

2、接下来准备提取日期数据,将“年、月、日”三列汇整成日期格式:

date = data_wind[['年', '月', '日']]
date_cal = pd.to_datetime(date)

如果只是这样写会报错,说没有[year month day]数据,进行修改:

date = data_wind[['年', '月', '日']]
date.rename(columns={'年': 'year', '月': 'month', '日': 'day'}, inplace=True)
date_cal = pd.to_datetime(date)

对列重命名一下就可以,这样不会报错,但是会有个警告,消除警告可以加上copy():

date = data_wind[['年', '月', '日']].copy()
date.rename(columns={'年': 'year', '月': 'month', '日': 'day'}, inplace=True)
date_cal = pd.to_datetime(date)

成功输出日期类似1957-01-01,如果想修改输出格式,可以紧接着加一句:

date = date_cal.dt.strftime('%Y%m%d')

修改后的输出格式就类似19570101

3、补充缺失的时间序列,并在其他列对应的缺失值填入指定值

date_range = pd.date_range(start=date_cal.min(), end=date_cal.max(), freq="D")
df = combinations.set_index('date', drop=False).reindex(index=date_range, fill_value=32766)
df['date'] = date_range.strftime('%Y%m%d')

combinations是将好几列数据整合后的表格,fill_value就是指定值。

这一步啥意思呢,就是说combinations类似:

python处理excel数据(含日期数据)_第1张图片

 date那列少了一天的数据,我要做的就是补上这个日期,这个日期对应的value、pre、hum都填入指定值32766(station也跟着填了32766,只不过后来调整过来了),最后调整日期格式:

python处理excel数据(含日期数据)_第2张图片

 

你可能感兴趣的:(excel,python)