利用Pandas的groupby求站點氣溫月均值
阿新 • • 發佈:2021-01-07
利用Pandas的groupby求站點氣溫月均值
# -*- coding: utf-8 -*-
"""
@title:
@author: Richard Chen
@time:2020-12-28 20:46
"""
import pandas as pd
import numpy as np
import os
path = 'D:/BaiduNetdiskDownload/china_isd_lite_2020/china_isd_lite_2020/'
fileList = os.listdir(path)
if path.exists(path+'Month'):
print('資料夾已建立')
else:
os.makedirs(path+'Month')
getdata_loop = 0
for i, name in enumerate(fileList):
oldname = path + fileList[i]
newname = path + fileList[i]+'.csv'
os.rename(oldname,newname)
site = name.split('-')[0]
dataheader = ['Year', 'Month' , 'Day', 'Hour', 'Temp', 'DPT', 'SLP', 'SD', 'WSR', 'SC', 'LPDD1', 'LPDD6']
df = pd.read_csv(newname,header = None,names=dataheader,delim_whitespace=True)
df = df[~df['Temp'].isin([-9999])]
year = name.split('-')[2]
result = df.groupby('Month')['Temp'].agg(TempMean='mean',TempMax='max' ,TempMin=np.min)/10
result['Year'] = year
result['Site'] = site
if getdata_loop == 0:
result.to_csv(path+'Month/'+'all.csv',mode='a')
else:
result.to_csv(path+'Month/'+'all.csv',mode='a',header=False)
getdata_loop += 1
location = pd.read_csv('D:\\BaiduNetdiskDownload\\isd-history.csv')
location = location.loc[:,['USAF','LAT','LON']]
location.columns = ['Site','Lat','Lon']
df1 = pd.read_csv(path+'Month/'+'all.csv')
df1['Site'] = df1['Site'].astype(str)
result = pd.merge(df1, location, how='left', on=['Site', 'Site'])
result.to_csv(path+'Month/'+'Temp'+year+'.csv')