Pandas實現(xiàn)轉(zhuǎn)換產(chǎn)生新列的項目實踐
時間序列數(shù)據(jù)在數(shù)據(jù)分析建模中很常見,例如天氣預(yù)報,空氣狀態(tài)監(jiān)測,股票交易等金融場景。此處選擇巴黎、倫敦歐洲城市空氣質(zhì)量監(jiān)測NO2數(shù)據(jù)作為樣例。
列的轉(zhuǎn)換:乘以常數(shù)
拿到表格數(shù)據(jù)后,很多情況下是不能直接就用,還需要對數(shù)據(jù)進(jìn)行加工處理。比如知道NO2?監(jiān)測值后,想知道比如倫敦的濃度是多少?假如單位是m g / m 3 mg/m3。這里假設(shè)溫度25攝氏度,大氣壓1013hPa,根據(jù)化學(xué)公式可以知道,轉(zhuǎn)換因子為 1.882。也就是該列每個元素都乘以因子。
In [1]: air_quality["london_mg_per_cubic"] = air_quality["station_london"] * 1.882
In [2]: air_quality.head()
Out[2]:
station_antwerp ... london_mg_per_cubic
datetime ...
2019-05-07 02:00:00 NaN ... 43.286
2019-05-07 03:00:00 50.5 ... 35.758
2019-05-07 04:00:00 45.0 ... 35.758
2019-05-07 05:00:00 NaN ... 30.112
2019-05-07 06:00:00 NaN ... NaN
[5 rows x 4 columns]
這里,創(chuàng)建新的列,可以用’ [] ', 括號內(nèi)使用新的列屬性名稱,作為賦值的左邊,右邊為轉(zhuǎn)換操作。
比如這里的乘法計算,常數(shù)是乘以操作列的每一個元素。
兩列的計算
比如需要求Paris 和 Antwerp的監(jiān)測值的比率,結(jié)果保存到新列中。
In [3]: air_quality["ratio_paris_antwerp"] = (
...: air_quality["station_paris"] / air_quality["station_antwerp"]
...: )
...:
In [4]: air_quality.head()
Out[4]:
station_antwerp ... ratio_paris_antwerp
datetime ...
2019-05-07 02:00:00 NaN ... NaN
2019-05-07 03:00:00 50.5 ... 0.495050
2019-05-07 04:00:00 45.0 ... 0.615556
2019-05-07 05:00:00 NaN ... NaN
2019-05-07 06:00:00 NaN ... NaN
[5 rows x 5 columns]
事實上,計算仍然是以元素為單位的,除法符號應(yīng)用到每個元素的值。同樣,也可以進(jìn)行加減乘除等運(yùn)算操作 (+, -, *, /,…) 和邏輯運(yùn)算操作 (<, >, ==,…) 。邏輯運(yùn)算,其實在數(shù)據(jù)表的條件篩選,生成數(shù)據(jù)子集的操作中大量使用。
更復(fù)雜的操作,可以使用apply()函數(shù)。
還有很常見的情形,原來的列命名不喜歡,想換個更合適的名字,就可以用rename()函數(shù)。
這里就把“station_antwerp” 轉(zhuǎn)換為“BETR801”
In [8]: air_quality_renamed = air_quality.rename(
...: columns={
...: "station_antwerp": "BETR801",
...: "station_paris": "FR04014",
...: "station_london": "London Westminster",
...: }
...: )
...:
In [9]: air_quality_renamed.head()
Out[9]:
BETR801 FR04014 ... london_mg_per_cubic ratio_paris_antwerp
datetime ...
2019-05-07 02:00:00 NaN NaN ... 43.286 NaN
2019-05-07 03:00:00 50.5 25.0 ... 35.758 0.495050
2019-05-07 04:00:00 45.0 27.7 ... 35.758 0.615556
2019-05-07 05:00:00 NaN 50.4 ... 30.112 NaN
2019-05-07 06:00:00 NaN 61.9 ... NaN NaN
[5 rows x 5 columns]
不僅僅是指定名稱,也可以進(jìn)行map函數(shù)操作。例如,把列名都更換為小寫字母。
In [10]: air_quality_renamed = air_quality_renamed.rename(columns=str.lower)
In [11]: air_quality_renamed.head()
Out[11]:
betr801 fr04014 ... london_mg_per_cubic ratio_paris_antwerp
datetime ...
2019-05-07 02:00:00 NaN NaN ... 43.286 NaN
2019-05-07 03:00:00 50.5 25.0 ... 35.758 0.495050
2019-05-07 04:00:00 45.0 27.7 ... 35.758 0.615556
2019-05-07 05:00:00 NaN 50.4 ... 30.112 NaN
2019-05-07 06:00:00 NaN 61.9 ... NaN NaN
[5 rows x 5 columns]
以上代碼只是一個簡單示例,示例代碼中的表達(dá)式可以根據(jù)實際問題進(jìn)行修改。
到此這篇關(guān)于Pandas實現(xiàn)轉(zhuǎn)換產(chǎn)生新列的項目實踐的文章就介紹到這了,更多相關(guān)Pandas 轉(zhuǎn)換產(chǎn)生新列內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決plt.savefig()保存到本地的圖片上下左右會有白邊
這篇文章主要介紹了解決plt.savefig()保存到本地的圖片上下左右會有白邊的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09
ubuntu安裝jupyter并設(shè)置遠(yuǎn)程訪問的實現(xiàn)
Jupyter?Notebook是Ipython的升級版,而Ipython可以說是一個加強(qiáng)版的交互式Shell,本文主要介紹了ubuntu安裝jupyter并設(shè)置遠(yuǎn)程訪問的實現(xiàn),感興趣的可以了解一下2022-03-03
如何使用django的MTV開發(fā)模式返回一個網(wǎng)頁
這篇文章主要介紹了如何使用django的MTV開發(fā)模式返回一個網(wǎng)頁,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-07-07
Python機(jī)器學(xué)習(xí)pytorch交叉熵?fù)p失函數(shù)的深刻理解
這篇文章主要為大家介紹了Python機(jī)器學(xué)習(xí)中對交叉熵?fù)p失函數(shù)的深刻理解,文中作出了詳細(xì)易懂的講解,有需要的朋友可以借鑒參考下希望能夠有所幫助2021-10-10
Python調(diào)整數(shù)組形狀如何實現(xiàn)
這篇文章主要介紹了Python調(diào)整數(shù)組形狀如何實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2022-12-12

