日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python怎么批量处理数据的优点_Python数据处理干货,一文带你深入理解pandas的批量处理方式...

發布時間:2024/10/6 python 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python怎么批量处理数据的优点_Python数据处理干货,一文带你深入理解pandas的批量处理方式... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

數據處理中,經常需要針對某一列進行操作(提取、拆解、計算),從而獲取新的數據。而在 pandas 中不需要你編寫循環遍歷,那么,如何在 pandas 中快速方便批量處理數據?本文將對相關知識點進行詳細講解。

本文你將會學到以下內容:

怎樣深入理解 apply、map、applymap

需要注意的一些坑(apply 會執行內部方法2次!為什么?)

高級應用(傳入額外的參數、結果擴展)

注意,本文內容將會綜合運用專欄之前章節的知識點,建議你順序閱讀理解本專欄的文章。

本文字數4000+,內含許多原理性的知識,這些會對日后的知識點有所幫助,請大家務必好好理解。

到處都是方法

我當初學習 pandas 的時候,發現 DataFrame 與 Series 都會有這3個方法中的部分或全部,如下:

但是,看著這個表就可以記住這些方法了嗎?如果你理解他們的方法名字表示的語義,可以更好記住并理解他們。

遍歷的語義

pandas 本質上是對表格數據的封裝,而表格數據處理必然需要遍歷數據。然而,在實際使用 pandas 過程中,一般都不提倡自己編寫遍歷代碼對數據進行遍歷處理,因此才產生一系列關于遍歷語義的相關方法與概念(本文介紹的3個方法、軸的概念、以及許多其他方法)。

遍歷處理數據,共有2種方式 第一種是按行或列遍歷,如下圖:

第二種是直接遍歷到每個單值,如下圖:

相當于表格中的單元格

本文講解的某些方法分別表示以上某種語義,我們來一個個理解他們。

apply

我們先看看 pandas 中遍歷處理行或列的方法 apply。

DataFrame 與 Series 的 apply 方法,語義是批量對Series區域應用指定的方法。apply 的意思就是"應用"。我知道這說法不是地球人可以理解的,別急,繼續看。

先從簡單的例子開始。 如下的一個表格數據:

"對表格的每行求和,結果放入D列",如下:

apply 方法第一個參數是一個可執行的對象,比如自定義方法或lambda,注意方法必須接受一個參數。后面會解釋為什么

第二個參數 axis ,指定按哪個方向擴展區域

我們通過示意圖進一步解析這個過程,如下:

注意此時調用的是 DataFrame 的 apply 方法,語義就是"對表格應用指定的方法"

但是 apply 方法的第一個參數指定的方法,每次只處理一個 Series 區域,那么我們就需要告訴 pandas ,怎么確定這個 Series 區域

通過 axis=1 ,告訴 pandas 沿著軸1方向擴展區域,上圖的藍線部分

確定了 Series 區域框(上圖藍色框),那么這個藍框會向下掃過每一行

在 pandas 中,不管你是獲取一行還是一列,返回的都是 Series(表示某個方向上的一系列的值),因此,每一行的 Series 將會分別傳入我們定義的方法的參數 x 中

apply 方法返回的同樣是一個 Series

如果對這里的 axis 不理解,請看本專欄之前的文章,有非常詳細的講解

pandas 中對常用的聚合計算方法做了字符串映射,比如上述的求和例子,可以如下編寫:

既然我們理解對行求和,那么對列求和,就很好理解,只需要修改 axis 參數即可。如下:

許多小伙伴都知道如何為 DataFrame 添加新的列,只需要指定一個不存在的列名,然后賦值給一個 Series 即可新增一列。比如:df["new_col"]= df["col1"] * 2 。 同樣的原理也可以添加新行,只是我們需要使用 loc[行索引] 表示不存在的行索引

上面介紹的都是從 DataFrame 調用 apply 方法,同樣地,單個 Series 同樣可以調用 apply 方法,語義是"對這一系列的區域應用指定方法"。

當我們需要對單獨一列進行處理的時候,即可使用。 比如:"對C列值乘以2,結果放到D列",如下:

原理與 DataFrame 的基本一致,只是現在對 Series 調用 apply 方法,不需要再通過參數 axis 指定區域方向

同樣的,對某行也可以調用 apply 方法。謹記,列與行都是 Series

就這么一個簡單的方法值得用這么多篇幅來講解嗎?這是因為上面說的是基礎,有了基礎,會更容易理解其他知識,舉一反三。接下來加點難度咯。

apply 中只能返回 單個值嗎

目前為止,我們講解了 apply 的常用方式,當調用 apply 方法時,真的只能返回一個 Series 結果嗎?

實際上,apply 方法之所以返回的是一個 Series ,是因為我們指定的處理方法只返回一個值,因此多次返回的值組成一個 Series 。

先用一個簡單例子說明。 對A列的值乘以2,對B列的值乘以3,結果作為新列,如下:

注意方法 cal_mul_col 的定義,這次返回的是一個元組(包含2個值)

但是 apply 方法默認會把你的方法返回作為一個值放入一個 Series中,因此我們指定參數 result_type="expand" ,意思為擴展返回類型

現在 apply 方法的返回結果將是一個 DataFrame

pandas 中的通用規則是,當返回的是多個 Series,那么將會變為一個 DataFrame 返回

來一個示意圖加深理解,如下:

第一步是藍色線,會把每一行作為一個 Series 傳入方法 cal_mul_col 的參數 x_df

注意此時的 x_df 是一個 Series ,而 Series 是有索引的,此時這個 x_df 的索引是 DataFrame 的列名,因此可以通過 x_df["A"] 訪問 A 列值

總結

以上是生活随笔為你收集整理的python怎么批量处理数据的优点_Python数据处理干货,一文带你深入理解pandas的批量处理方式...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。