python批量处理气象站点降雨数据1——拆分站点数据操作

1、如图为所有站点数据,现在需要将该数据处理成按照年份拆分成每年的数据文件。

代码如下:

2、经过上述代码运行,得到数据列表。具体代码如下:

 1 import os
 2 import pandas as pd
 3 import datetime
 4 import csv
 5 
 6 def to_date(year,month,day=1):
 7     '''[summary]
 8     
 9     [description]
10     
11     Arguments:
12         year {[type]} -- [年份]
13         month {[type]} -- [月份]
14     
15     Keyword Arguments:
16         day {number} -- [天] (default: {1})
17     
18     Returns:
19         [type] -- [返回日期字符串,格式为mm/dd/yy]
20     '''
21     date=datetime.datetime(int(year),int(month),int(day))
22     return date.strftime("%Y/%m/%d")
23 def re_DataFrame(df):
24     '''[summary]
25     
26     [description]
27     
28     Arguments:
29         df {[type]} -- [数据]
30     Returns:
31         返回的数据是list,list[0]是转换之后的日期,list[1]是数据值
32     '''
33     dates=[]
34     rows_size=len(df)
35     for row_index in range(rows_size):
36         row=df.iloc[row_index]
37         dates.append(to_date(row[df.columns[0]],row[df.columns[1]]))
38     return [dates,df.iloc[:,-1].tolist()]    
39 def main():
40     os.chdir(out_dir)
41     if os.path.exists(out_dir)==False:
42         os.makedirs(out_dir)
43     _,extension=os.path.splitext(data_path)
44     #判断是csv文件还是excel文件
45     if extension=='.csv':
46         table=pd.read_csv(data_path,header=0)
47         
48     elif extension=='.xlsx':
49         xlsx = pd.ExcelFile(data_path)
50         print(xlsx.sheet_names)
51         table = pd.read_excel(xlsx, xlsx.sheet_names[0])
52     else:
53         print("既不是csv文件也不是excel文件")
54         return 0
55     #获取列名
56     columns_list=[name for name in table.columns]
57     #从站点列开始遍历生成每个站点文件
58     for name in columns_list[2:]:
59         print(name)
60         #新建一个DataPrame文件
61         df=pd.DataFrame()
62         df[columns_list[0]]=table.iloc[:,0]
63         df[columns_list[1]]=table.iloc[:,1]
64         df[name]=table[name]
65         #改变数据样式,存储在list中,第一列是日期,第二列是数据值
66         data_result=re_DataFrame(df)
67         #写站点文件
68         with open(str(name)+'.csv','w',newline="") as csv_writer:
69             csv_writer=csv.writer(csv_writer)
70             csv_writer.writerow([name,''])
71             for row_index in range(len(data_result[0])):
72                 csv_writer.writerow([data_result[0][row_index],data_result[1][row_index]])
73 
74         # df.to_csv(name+'.csv',index=False)
75         # del df
76 
77 
78 if __name__=="__main__":
79     #原始数据文件
80     data_path=r'E:\rainfull\trh40rainfullhebing.xlsx'
81     #输出结果目录
82     out_dir=r'E:\rainfull\rainfulltrh40'
83 
84     main()

猜你喜欢

转载自www.cnblogs.com/xzxgiser/p/10446965.html
今日推荐