Pandas實現(xiàn)轉(zhuǎn)換產(chǎn)生新列的項目實踐
時間序列數(shù)據(jù)在數(shù)據(jù)分析建模中很常見,例如天氣預報,空氣狀態(tài)監(jiān)測,股票交易等金融場景。此處選擇巴黎、倫敦歐洲城市空氣質(zhì)量監(jiān)測NO2數(shù)據(jù)作為樣例。
列的轉(zhuǎn)換:乘以常數(shù)
拿到表格數(shù)據(jù)后,很多情況下是不能直接就用,還需要對數(shù)據(jù)進行加工處理。比如知道NO2?監(jiān)測值后,想知道比如倫敦的濃度是多少?假如單位是m g / m 3 mg/m3。這里假設(shè)溫度25攝氏度,大氣壓1013hPa,根據(jù)化學公式可以知道,轉(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)用到每個元素的值。同樣,也可以進行加減乘除等運算操作 (+
, -
, *
, /
,…) 和邏輯運算操作 (<
, >
, ==
,…) 。邏輯運算,其實在數(shù)據(jù)表的條件篩選,生成數(shù)據(jù)子集的操作中大量使用。
更復雜的操作,可以使用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]
不僅僅是指定名稱,也可以進行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]
以上代碼只是一個簡單示例,示例代碼中的表達式可以根據(jù)實際問題進行修改。
到此這篇關(guān)于Pandas實現(xiàn)轉(zhuǎn)換產(chǎn)生新列的項目實踐的文章就介紹到這了,更多相關(guān)Pandas 轉(zhuǎn)換產(chǎn)生新列內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python中使用smtplib和email模塊發(fā)送郵件實例
python腳本發(fā)郵件,一般會用到smtplib和email這兩個模塊??纯丛撃K怎么使用,先看smtplib模塊。 smtplib模塊定義了一個簡單的SMTP客戶端,可以用來在互聯(lián)網(wǎng)上發(fā)送郵件2014-04-04Python函數(shù)調(diào)用的幾種方式(類里面,類之間,類外面)
本文主要介紹了Python函數(shù)調(diào)用的幾種方式(類里面,類之間,類外面),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-07-07找Python安裝目錄,設(shè)置環(huán)境路徑以及在命令行運行python腳本實例
這篇文章主要介紹了找Python安裝目錄,設(shè)置環(huán)境路徑以及在命令行運行python腳本實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03python+mysql實現(xiàn)個人論文管理系統(tǒng)
這篇文章主要為大家詳細介紹了python+mysql實現(xiàn)個人論文管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-10-10