日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

NOAA气象日监测数据均值计算python代码整理

發布時間:2023/12/10 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NOAA气象日监测数据均值计算python代码整理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 氣象監測數據下載(可下載最新及每日氣象數據)
  • NOAA氣象日監測數據均值計算python代碼整理
  • PostgreSQL數據庫導入EXCEL數據表

之前已經介紹了如何下載氣象的每日監測數據,這里就整理介紹下如何基于這些數據,計算月均值的數據。

Python版本為3.7.

1. 解壓并篩選數據

這里下載了十年的某幾個站點的監測數據,其中stations.csv為站點數據。

解壓縮后的為大量站點的年度數據,所以需要先篩選出對應站點的數據。

參數備注:files為station中的站點編號;2011處為年份命名文件夾,這里手動修改,沒寫循環。

篩選并轉儲到后續處理的文件夾,代碼如下:

import glob import shutil import sys import osoutdirectory = 'D:\Codes\pythontest\yxdl\data\\2011' file_names = glob.glob('F:\數據1\二維數據\downdata\dis\\2011\*.csv')files = ['42398099999','44478099999','42403099999','42295099999','44477099999', '42404099999','42406099999','41863099999','42299099999','42399099999','42423099999', '41862099999','55773099999','43399099999','41862199999','41862199999','41859099999', '41858099999','44461099999','44474099999','41850099999','41852099999']#判斷文件夾是否存在并創建 if os.path.exists(outdirectory):print('%s:存在'%outdirectory) else:os.mkdir(outdirectory)print('新建文件夾:%s'%outdirectory)#file = for i in range(0,len(files)):print(files[i])for file_name in file_names:filetemp = str.split(file_name,'\\')[-1]if (files[i]+'.csv')==filetemp:print('copying')shutil.copy(file_name, outdirectory)print("finish")

處理完的目錄結構:

2. 計算月均值

然后通過pandas計算月均值。
參數備注:這里的2011也需要手動改。

計算并存儲到均值計算目錄,代碼如下:

import pandas as pd import glob import shutil import sysoutdirectory = 'D:\Codes\pythontest\yxdl\data\mean\\2011' file_names = glob.glob('D:\Codes\pythontest\yxdl\data\\2011\*.csv') time = 2011 #csvfile ="D:\Codes\pythontest\yxdl\data\\2021\\55773099999.csv"import os #判斷文件夾是否存在并創建 if os.path.exists(outdirectory):print('%s:存在'%outdirectory) else:os.mkdir(outdirectory)print('新建文件夾:%s'%outdirectory)for csvfile in file_names:df = pd.read_csv(csvfile)#df = pd.DataFrame(file)# print(df.head())df['DATE'] = pd.to_datetime(df['DATE'],format='%Y-%m-%d')#print(df.head())#將時間作為索引df = df.set_index('DATE')#保留一位小數format1=lambda x:"%.1f"%x#按月進行平均值統計dfM=df.resample('M').mean()dfM[['TEMP','MAX','MIN']]=dfM[['TEMP','MAX','MIN']].applymap(format1)#保留一位小數#保存月平均數據filetemp = str.split(csvfile,'\\')[-1]filetemp = str.split(filetemp,'.')[0]print(filetemp)outfile = outdirectory + '\\'+filetemp +'_'+str(time)+ '_mean.csv'dfM.to_csv(outfile,encoding='gbk')

處理完的目錄結構:

3. 按站點進行csv數據合并

先手動新建站點合并文件夾hebing。

根據站點編號,在hebing文件夾下創建對應的文件夾。合并代碼如下:

import pandas as pd import os import globfindpath = 'D:\Codes\pythontest\yxdl\data\hebing'files = ['42398099999','44478099999','42403099999','42295099999','44477099999', '42404099999','42406099999','41863099999','42299099999','42399099999','42423099999', '41862099999','55773099999','43399099999','41862199999','41862199999','41859099999', '41858099999','44461099999','44474099999','41850099999','41852099999']for filename in files:directory = findpath+ '\\'+filename#判斷文件夾是否存在并創建if os.path.exists(directory):print('%s:存在'%directory)else:os.mkdir(directory)print('新建文件夾:%s'%directory)

處理完的目錄結構:

然后復制移動均值數據,到剛剛在hebing下創建的各個站點文件夾目錄下:
參數備注:這里的filefind需要手動改。

代碼如下:

import glob import shutil import sys import osoutdirectory = 'D:\Codes\pythontest\yxdl\data\hebing' file_names = glob.glob('D:\Codes\pythontest\yxdl\data\mean\*\*.csv')filefind = '55773099999'for filename in file_names:filetemp = str.split(filename,'\\')[-1]filetemp = str.split(filetemp,'.')[0]filetemp = str.split(filetemp,'_')[0]dtemp=outdirectory+'\\'+filetempprint(filetemp)if filefind == filetemp:print('copying')shutil.copy(filename, dtemp)print("finish")

移動完成后,即可合并每個站點目錄下的每年月均值csv文件。
參數備注:兩個編號處手動改。

代碼如下:

import pandas as pd import os import glob#filepath = 'D:\Codes\pythontest\yxdl\data\hebing\\42398099999' file_names = glob.glob('D:\Codes\pythontest\yxdl\data\hebing\\44474099999\*.csv') outdirectory = 'D:\Codes\pythontest\yxdl\data\hebing\\44474099999\hebingout'import os #判斷文件夾是否存在并創建 if os.path.exists(outdirectory):print('%s:存在'%outdirectory) else:os.mkdir(outdirectory)print('新建文件夾:%s'%outdirectory)for inputfile in file_names:df = pd.read_csv(inputfile)print(1111)filetemp = str.split(inputfile,'\\')[-1]filetemp = str.split(filetemp,'.')[0]filetemp = str.split(filetemp,'_')[0]print(filetemp)outfile = outdirectory + '\\'+filetemp + '_hb.csv'df.to_csv(outfile, mode='a',index=False, header=False)

然后手動將每個站點合并好的數據拷貝到zong文件夾下,再合并一次。

這部分合并代碼如下:

import pandas as pd import os import globfile_names = glob.glob('D:\Codes\pythontest\yxdl\data\hebing\zong\*.csv') outdirectory = 'D:\Codes\pythontest\yxdl\data\hebing\zong'import os #判斷文件夾是否存在并創建 if os.path.exists(outdirectory):print('%s:存在'%outdirectory) else:os.mkdir(outdirectory)print('新建文件夾:%s'%outdirectory)for inputfile in file_names:df = pd.read_csv(inputfile)outfile = outdirectory + '\\'+'hb.csv'df.to_csv(outfile, mode='a',index=False, header=False)

OK,然后到這里數據就處理得差不多了。就可以導入數據庫了。具體參考博客PostgreSQL數據庫導入EXCEL數據表。

總結

以上是生活随笔為你收集整理的NOAA气象日监测数据均值计算python代码整理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。