好網(wǎng)站開發(fā)培訓(xùn)夜夜草
數(shù)據(jù)分析-Pandas如何整合多張數(shù)據(jù)表
數(shù)據(jù)表,時(shí)間序列數(shù)據(jù)在數(shù)據(jù)分析建模中很常見,例如天氣預(yù)報(bào),空氣狀態(tài)監(jiān)測(cè),股票交易等金融場(chǎng)景。數(shù)據(jù)分析過程中表格重整,重新調(diào)整,重塑數(shù)據(jù)表是很重要的技巧,此處選擇Titanic數(shù)據(jù),以及巴黎、倫敦歐洲城市空氣質(zhì)量監(jiān)測(cè) N O 2 NO_2 NO2?數(shù)據(jù)作為樣例。
數(shù)據(jù)分析
數(shù)據(jù)分析-Pandas如何轉(zhuǎn)換產(chǎn)生新列
數(shù)據(jù)分析-Pandas如何統(tǒng)計(jì)數(shù)據(jù)概況
數(shù)據(jù)分析-Pandas如何輕松處理時(shí)間序列數(shù)據(jù)
數(shù)據(jù)分析-Pandas如何選擇數(shù)據(jù)子集
數(shù)據(jù)分析-Pandas如何重塑數(shù)據(jù)表-CSDN博客
本文用到的樣例數(shù)據(jù):
Titanic數(shù)據(jù)
空氣質(zhì)量監(jiān)測(cè) N O 2 NO_2 NO2?數(shù)據(jù)
樣例代碼:
源代碼參考 Pandas如何重塑數(shù)據(jù)表
源代碼參考 python數(shù)據(jù)分析-數(shù)據(jù)表讀寫到pandas
數(shù)據(jù)準(zhǔn)備
拿到數(shù)據(jù)后,很多情況下數(shù)據(jù)分散在多張表格中,不能直接用,這就需要對(duì)數(shù)據(jù)進(jìn)行加工處理。
比如在air_quality數(shù)據(jù)中,大多數(shù)情況下NO2和pm25數(shù)據(jù)是在兩張表中的。NO2數(shù)據(jù)
In [1]: air_quality_no2 = air_quality_no2[["date.utc", "location",...: "parameter", "value"]]...: In [2]: air_quality_no2.head()
Out[2]: date.utc location parameter value
0 2019-06-21 00:00:00+00:00 FR04014 no2 20.0
1 2019-06-20 23:00:00+00:00 FR04014 no2 21.8
2 2019-06-20 22:00:00+00:00 FR04014 no2 26.5
3 2019-06-20 21:00:00+00:00 FR04014 no2 24.9
4 2019-06-20 20:00:00+00:00 FR04014 no2 21.4
PM25數(shù)據(jù),如下所示:
In [3]: air_quality_pm25 = air_quality_pm25[["date.utc", "location",...: "parameter", "value"]]...: In [4]: air_quality_pm25.head()
Out[4]: date.utc location parameter value
0 2019-06-18 06:00:00+00:00 BETR801 pm25 18.0
1 2019-06-17 08:00:00+00:00 BETR801 pm25 6.5
2 2019-06-17 07:00:00+00:00 BETR801 pm25 18.5
3 2019-06-17 06:00:00+00:00 BETR801 pm25 16.0
4 2019-06-17 05:00:00+00:00 BETR801 pm25 7.5
那么,Boss的各種數(shù)據(jù)分析處理要求就來了。
表格拼接
Boss:我就想合并不同監(jiān)測(cè)站的 N O 2 和 P M 25 NO_2 和 PM_{25} NO2?和PM25?監(jiān)測(cè)值到一張相同結(jié)構(gòu)的表中,表格結(jié)構(gòu)相同,直接加到尾巴上。以下為圖示
concat
concat函數(shù)提供多個(gè)表格拼接到一個(gè)維度上,DataFrame有兩個(gè)axis,可以是沿著列拼接,也可以沿著行拼接。默認(rèn)如下:是axis=0,沿著列方向拼接起來。
In [5]: air_quality = pd.concat([air_quality_pm25, air_quality_no2], axis=0)In [6]: air_quality.head()
Out[6]: date.utc location parameter value
0 2019-06-18 06:00:00+00:00 BETR801 pm25 18.0
1 2019-06-17 08:00:00+00:00 BETR801 pm25 6.5
2 2019-06-17 07:00:00+00:00 BETR801 pm25 18.5
3 2019-06-17 06:00:00+00:00 BETR801 pm25 16.0
4 2019-06-17 05:00:00+00:00 BETR801 pm25 7.5
拼接的變化,可以通過shape屬性觀察到。如 axis=0時(shí),行數(shù)變化:3178 = 1110 + 2068 行。這樣操作:
In [7]: print('Shape of the ``air_quality_pm25`` table: ', air_quality_pm25.shape)
Shape of the ``air_quality_pm25`` table: (1110, 4)In [8]: print('Shape of the ``air_quality_no2`` table: ', air_quality_no2.shape)
Shape of the ``air_quality_no2`` table: (2068, 4)In [9]: print('Shape of the resulting ``air_quality`` table: ', air_quality.shape)
Shape of the resulting ``air_quality`` table: (3178, 4)
事實(shí)上,對(duì)日期重排后,不同表格源數(shù)據(jù)的行排序也發(fā)生變化。
merge
In [10]: air_quality = air_quality.sort_values("date.utc")In [11]: air_quality.head()
Out[11]: date.utc location parameter value
2067 2019-05-07 01:00:00+00:00 London Westminster no2 23.0
1003 2019-05-07 01:00:00+00:00 FR04014 no2 25.0
100 2019-05-07 01:00:00+00:00 BETR801 pm25 12.5
1098 2019-05-07 01:00:00+00:00 BETR801 no2 50.5
1109 2019-05-07 01:00:00+00:00 London Westminster pm25 8.0
用共同信息整合表格
如何依據(jù)某列屬性,合并2個(gè)表格數(shù)據(jù)。比如學(xué)生身高,體重等體能信息表,和數(shù)理化等學(xué)科成績(jī)表合并,住建是學(xué)生的ID。如下圖所示:
如果需要把每個(gè)監(jiān)測(cè)站地理坐標(biāo),和實(shí)時(shí)的 N O 2 NO_2 NO2?監(jiān)測(cè)值和 P M 2.5 PM_{2.5} PM2.5?監(jiān)測(cè)值合并。關(guān)鍵是兩點(diǎn):地理坐標(biāo)和監(jiān)測(cè)值是不同的屬性,表格大小不一致,需要擴(kuò)充。此處用merge()函數(shù),提供拼接函數(shù)的功能。
In [12]: stations_coord.head()
Out[12]: location coordinates.latitude coordinates.longitude
0 BELAL01 51.23619 4.38522
1 BELHB23 51.17030 4.34100
2 BELLD01 51.10998 5.00486
3 BELLD02 51.12038 5.02155
4 BELR833 51.32766 4.36226In [13]: air_quality = pd.merge(air_quality, stations_coord, how="left", on="location")In [14]: air_quality.head()
Out[14]: date.utc ... coordinates.longitude
0 2019-05-07 01:00:00+00:00 ... -0.13193
1 2019-05-07 01:00:00+00:00 ... 2.39390
2 2019-05-07 01:00:00+00:00 ... 2.39390
3 2019-05-07 01:00:00+00:00 ... 4.43182
4 2019-05-07 01:00:00+00:00 ... 4.43182[5 rows x 6 columns]
對(duì)于air_quality 的每一行,對(duì)應(yīng)的坐標(biāo)會(huì)從stations_coord中,拼到每行中,其中它們有共同的列:location,作為拼接的key。而使用left拼接,主要是air_quality放在左邊的緣故。
In [24]: air_quality = pd.merge(air_quality, air_quality_parameters,....: how='left', left_on='parameter', right_on='id')....: In [25]: air_quality.head()
Out[25]: date.utc ... name
0 2019-05-07 01:00:00+00:00 ... NO2
1 2019-05-07 01:00:00+00:00 ... NO2
2 2019-05-07 01:00:00+00:00 ... NO2
3 2019-05-07 01:00:00+00:00 ... PM2.5
4 2019-05-07 01:00:00+00:00 ... NO2[5 rows x 9 columns]
以上代碼只是一個(gè)簡(jiǎn)單示例,示例代碼中的表達(dá)式可以根據(jù)實(shí)際問題進(jìn)行修改。
覺得有用 收藏 收藏 收藏
點(diǎn)個(gè)贊 點(diǎn)個(gè)贊 點(diǎn)個(gè)贊
End
數(shù)據(jù)分析
數(shù)據(jù)分析-Pandas如何轉(zhuǎn)換產(chǎn)生新列
數(shù)據(jù)分析-Pandas如何統(tǒng)計(jì)數(shù)據(jù)概況
數(shù)據(jù)分析-Pandas如何輕松處理時(shí)間序列數(shù)據(jù)
數(shù)據(jù)分析-Pandas如何選擇數(shù)據(jù)子集
數(shù)據(jù)分析-Pandas如何重塑數(shù)據(jù)表-CSDN博客
經(jīng)典算法
經(jīng)典算法-遺傳算法的python實(shí)現(xiàn)
經(jīng)典算法-模擬退火算法的python實(shí)現(xiàn)
經(jīng)典算法-粒子群算法的python實(shí)現(xiàn)-CSDN博客
GPT專欄文章:
GPT實(shí)戰(zhàn)系列-ChatGLM3本地部署CUDA11+1080Ti+顯卡24G實(shí)戰(zhàn)方案
GPT實(shí)戰(zhàn)系列-LangChain + ChatGLM3構(gòu)建天氣查詢助手
大模型查詢工具助手之股票免費(fèi)查詢接口
GPT實(shí)戰(zhàn)系列-簡(jiǎn)單聊聊LangChain
GPT實(shí)戰(zhàn)系列-大模型為我所用之借用ChatGLM3構(gòu)建查詢助手
GPT實(shí)戰(zhàn)系列-P-Tuning本地化訓(xùn)練ChatGLM2等LLM模型,到底做了什么?(二)
GPT實(shí)戰(zhàn)系列-P-Tuning本地化訓(xùn)練ChatGLM2等LLM模型,到底做了什么?(一)
GPT實(shí)戰(zhàn)系列-ChatGLM2模型的微調(diào)訓(xùn)練參數(shù)解讀
GPT實(shí)戰(zhàn)系列-如何用自己數(shù)據(jù)微調(diào)ChatGLM2模型訓(xùn)練
GPT實(shí)戰(zhàn)系列-ChatGLM2部署Ubuntu+Cuda11+顯存24G實(shí)戰(zhàn)方案
GPT實(shí)戰(zhàn)系列-Baichuan2本地化部署實(shí)戰(zhàn)方案
GPT實(shí)戰(zhàn)系列-Baichuan2等大模型的計(jì)算精度與量化
GPT實(shí)戰(zhàn)系列-GPT訓(xùn)練的Pretraining,SFT,Reward Modeling,RLHF
GPT實(shí)戰(zhàn)系列-探究GPT等大模型的文本生成-CSDN博客