数据科学与python——Pandas统计分析基础(数据堆叠+数据清洗)
生活随笔
收集整理的這篇文章主要介紹了
数据科学与python——Pandas统计分析基础(数据堆叠+数据清洗)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Pandas統計分析基礎數據堆疊+數據清洗
- 一.合并數據:獲取完整的數據集。
- 1.讀取數據
- 2.將兩個csv文件按照mete.csv文件的日期對齊
- 3.縱向合并數據data1與data2
- 4.使用drop_duplicates()函數去除重復值
- 二.異常值處理:去除data3中GPP中的異常點
- 1.根據3σ原則檢測異常值,去除異常點記錄
- 三.3 對GPP進行神經網絡建模
- 1.劃分數據集
- 手動劃分
- 隨機劃分
- 數據標準化處理
- 增加新的一列來存儲數據
數據:
鏈接:https://pan.baidu.com/s/1-E2ShVTdI0X5lwDtMLFFsQ
提取碼:0929
一.合并數據:獲取完整的數據集。
1.讀取數據
#數據所在的文件 metepath='./part/mete10-14.csv' vipath='./part/vi10-14.csv' # 讀取數據 data_mete=pd.read_csv(metepath) data_vi=pd.read_csv(vipath)2.將兩個csv文件按照mete.csv文件的日期對齊
按日期行向合并part文件夾下的兩個csv,這兩個文件日期范圍不同,按照mete.csv文件的日期對齊;合并后的數據命名為data1
# 按日期行向合并part文件夾下的兩個csv,按照mete.csv文件的日期對齊; # <br/>合并后的數據命名為data1; # <br/>若合并后的數據中有無效值,則使用無效值其所在列的平均值填充。 data1=pd.merge(data_mete,data_vi,on='Date',how='left') data1['Date']=pd.to_datetime(data1['Date']) data1=data1.fillna({'NDVI':np.mean(data1['NDVI']),'EVI':np.mean(data1['EVI'])})3.縱向合并數據data1與data2
# 讀取comb下面的csv文件,命名為data2; # <br/>縱向堆疊合并data1和data2; # <br/>堆疊之后需要去除重復數據;得到的數據命名為data3。 combpath='./comb/data04-10.csv' data2=pd.read_csv(combpath) #將日期轉化為標準日期格式 data2['Date']=pd.to_datetime(data2['Date'])#縱向堆疊合并data1和data2 data3=pd.concat([data1,data2],axis=0) data3['Date']=pd.to_datetime(data3['Date'])4.使用drop_duplicates()函數去除重復值
去除重復值并且按照日期重新排序
#data1和data2中具有重復的數據,堆疊之后需要去除重復數據;這一步得到的數據命名為data3 data3=data3.drop_duplicates() #更改數據的排序方式按照日期從小到大排 data3.sort_values(by = 'Date',inplace=True)二.異常值處理:去除data3中GPP中的異常點
1.根據3σ原則檢測異常值,去除異常點記錄
# 根據3σ原則檢測GPP中的異常值,從data3中去除異常點記錄 #數值分布在(μ-3σ,μ+3σ)中的概率為0.9974 #可以認為,Y 的取值幾乎全部集中在(μ-3σ,μ+3σ)]區間內,超出這個范圍的可能性僅占不到0.3%。 print('去除異常值') gpp_max=data3['GPP'].mean()+3*data3['GPP'].std() gpp_min=data3['GPP'].mean()-3*data3['GPP'].std() data3=data3.loc[(data3['GPP']>gpp_min)&(data3['GPP']<gpp_max),: ]三.3 對GPP進行神經網絡建模
使用2010年及以前的數據作為訓練集,2010年以后的數據作為測試集,使用訓練數據訓練模型,測試數據僅用于測試模型
將TA、VPD、RG、NDVI、EVI列作為特征(輸入),將GPP列作為標簽(輸出)
1.劃分數據集
手動劃分
train=data3.loc[data3['Date'].dt.year<=2010].copy() test=data3.loc[data3['Date'].dt.year>2010].copy() x_train=train[['TA','VPD','RG','NDVI','EVI']] y_train=train[['GPP']] x_test=test[['TA','VPD','RG','NDVI','EVI']] y_test=test[['GPP']]隨機劃分
from sklearn.model_selection import train_test_split #在機器學習中,該函數可按照用戶設定的比例,#隨機將樣本集合劃分為訓練集 和測試集,#并返回劃分好的訓練集和測試集數據數據標準化處理
建模之前要對所有輸入數據標準化,標準化方式使用標準差標準化;兩個數據集的標準化過程中均使用訓練集變量的平均值和方差
#(3) 建模之前要對所有輸入數據標準化,標準化方式使用標準差標準化;兩個數據集的標準化過程中均使用訓練集變量的平均值和方差 from sklearn.preprocessing import StandardScaler # 將訓練集和測試集數據進行標準差標準化 scaler=StandardScaler() x_tr=scaler.fit_transform(x_train.values) y_tr=scaler.fit_transform(y_train.values.reshape(-1,1)).ravel() x_te=scaler.fit_transform(x_test.values) y_te=scaler.fit_transform(y_test.values.reshape(-1,1)).ravel()增加新的一列來存儲數據
#對處于不同氣溫區間的數據進行標記 #(1) 將氣溫劃分成4個級別:very_low, low, normal, high;他們的溫度范圍為 #增加新一列為溫度的水平 test.loc[(test['TA']>-10) &(test['TA']<=0),'TA_Level']='very_low' test.loc[(test['TA']>0) &(test['TA']<=10),'TA_Level']='low' test.loc[(test['TA']>10) &(test['TA']<=20),'TA_Level']='normal' test.loc[(test['TA']>20) &(test['TA']<=30),'TA_Level']='high' train.to_csv('test6_train.csv',index=False) test.to_csv('test6_test.csv',index=False) 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的数据科学与python——Pandas统计分析基础(数据堆叠+数据清洗)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 特斯拉 App 4.27.0 更新:增加
- 下一篇: 三大游戏主机今年销量报告:索尼 PS5