1. 程式人生 > 其它 >利用Pandas的groupby求站點氣溫月均值

利用Pandas的groupby求站點氣溫月均值

技術標籤:pythonpandas

利用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')