数据科学与python语言——Pandas统计分析基础(时间转换+聚合)
生活随笔
收集整理的這篇文章主要介紹了
数据科学与python语言——Pandas统计分析基础(时间转换+聚合)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Pandas統計分析基礎(時間轉換+聚合)
- 實驗要求一
- 實驗二要求
- 全部代碼
實驗要求一
#M表的時間戳類型轉為datetime data_Mete['TIMESTAMP']=pd.to_datetime(data_Mete['TIMESTAMP'],format='%Y%m%d%H%M%S') data_VI['Date']=pd.to_datetime(data_VI['Date'],format='%Y/%m/%d') print(data_VI['Date']) #M表添加一個Date列 只包含年月日 data_Mete['Date']=[i.date() for i in data_Mete['TIMESTAMP']] #根據Date分組 聚合到日 data_Mete_group=data_Mete.groupby(by='Date',as_index=False) #對于每一個分組各列的多個值應用不同的方法 data1=data_Mete_group.agg({'TA':[np.max,np.min,np.mean],'P':np.sum,'RG':np.mean,'GPP':np.mean,'GPP_QC':calpercent}) print(data1) import numpy as np import pandas as pd from matplotlib import pyplot as pltdef calpercent(data):#計算0和1占比cnt01=sum(data==0)+sum(data==1)return cnt01/data.size data_Mete=pd.read_csv('./data/Mete_FR-Gri.csv') data_VI=pd.read_csv('./data/VI_FR-Gri.csv')#M表的時間戳類型轉為datetime data_Mete['TIMESTAMP']=pd.to_datetime(data_Mete['TIMESTAMP'],format='%Y%m%d%H%M%S') print(data_Mete['TIMESTAMP']) data_VI['Date']=pd.to_datetime(data_VI['Date'],format='%Y/%m/%d') print(data_VI['Date'])#M表添加一個Date列 只包含年月日 data_Mete['Date']=[i.date() for i in data_Mete['TIMESTAMP']] #根據Date分組 聚合到日 data_Mete_group=data_Mete.groupby(by='Date',as_index=False)#對于每一個分組各列的多個值應用不同的方法 data1=data_Mete_group.agg({'TA':[np.max,np.min,np.mean],'P':np.sum,'RG':np.mean,'GPP':np.mean,'GPP_QC':calpercent}) print(data1) #重置列名 data1.columns=['Date','TA_Max', 'TA_Min', 'TA_Mean', 'P', 'RG', 'GPP', 'GPP_QC']data1['Date']=pd.to_datetime(data1['Date']) print(data1['Date']) mergedata=pd.merge(data1,data_VI,on='Date')#兩個表按照日期列合并mergedata.to_csv('./1test5_1.csv') print('合并表格完成')實驗二要求
全部代碼
import numpy as np import pandas as pd from matplotlib import pyplot as pltdef calpercent(data):#計算0和1占比cnt01=sum(data==0)+sum(data==1)return cnt01/data.size data_Mete=pd.read_csv('./data/Mete_FR-Gri.csv') data_VI=pd.read_csv('./data/VI_FR-Gri.csv')#M表的時間戳類型轉為datetime data_Mete['TIMESTAMP']=pd.to_datetime(data_Mete['TIMESTAMP'],format='%Y%m%d%H%M%S') print(data_Mete['TIMESTAMP']) data_VI['Date']=pd.to_datetime(data_VI['Date'],format='%Y/%m/%d') print(data_VI['Date'])#M表添加一個Date列 只包含年月日 data_Mete['Date']=[i.date() for i in data_Mete['TIMESTAMP']] #根據Date分組 聚合到日 data_Mete_group=data_Mete.groupby(by='Date',as_index=False) #對于每一個分組各列的多個值應用不同的方法 data1=data_Mete_group.agg({'TA':[np.max,np.min,np.mean],'P':np.sum,'RG':np.mean,'GPP':np.mean,'GPP_QC':calpercent}) print(data1) #重置列名 data1.columns=['Date','TA_Max', 'TA_Min', 'TA_Mean', 'P', 'RG', 'GPP', 'GPP_QC']data1['Date']=pd.to_datetime(data1['Date']) print(data1['Date']) mergedata=pd.merge(data1,data_VI,on='Date')#兩個表按照日期列合并mergedata.to_csv('./1test5_1.csv') print('合并表格完成')def fixGppQc(data):#將GppQC值大于0.5的天數不足15天的月份的GppQC標為2 if sum(data>=0.5)<15:return 2else:return 1 #在(1)的基礎上進行 data0=mergedata #提取年月并將日均置為1 添加到新的一列 data0['newdate']=data0['Date'].map(lambda x: 10000*x.year + 100*x.month+1) #TA_Range--氣溫日較差 data0['TA_Range']=data0['TA_Max']-data0['TA_Min'] #根據年月分組(日均為1) data0group=data0.groupby(by='newdate',as_index=False) data2=data0group.agg({'TA_Range':np.mean,'TA_Mean':np.mean,'P':np.sum,'RG':np.mean,'GPP':np.mean,'GPP_QC':fixGppQc,'EVI':np.mean,'NDVI':np.mean}) #將無效的GPP置為空值 data2.loc[data2['GPP_QC']==2,'GPP']=np.NaN #修改列名 data2=data2.rename(columns={'newdate':'Date'}) data2['Date']=pd.to_datetime(data2['Date'],format='%Y%m%d') # data2data3=data2.dropna()#剔除空值 # data3 # 支持中文 plt.rcParams['font.sans-serif'] = ['SimHei'] # 用來正常顯示中文標簽 plt.rcParams['axes.unicode_minus'] = False # 用來正常顯示負號plt.figure(figsize=(8,7.2))print('畫出各個因素與光合作用的相關性柱狀圖') cols=['TA_Mean','TA_Range','RG','P','NDVI'] corrs=[data3['GPP'].corr(data3[i]) for i in cols]#計算GPP與五列數據間的相關系數 index=np.arange(len(cols))for col,corr in zip(cols,corrs):#畫出每個列與GPP相關系數的柱狀圖plt.bar(col,corr)plt.ylabel('與GPP的相關系數',fontsize=12) plt.xlabel('與GPP的相關因素',fontsize=12) plt.legend(['平均氣溫','氣溫日較差','太陽輻射','降水','NDVI'],loc=2) plt.savefig('./test5_2.jpg') plt.show()input('按回車結束')總結
以上是生活随笔為你收集整理的数据科学与python语言——Pandas统计分析基础(时间转换+聚合)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据科学与python语言——Matpl
- 下一篇: 数据科学与python——Pandas统