日韩性视频-久久久蜜桃-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的批量处理方式...的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 欧美色图888 | www国产成人| www.999热| 在线观看中文字幕2021 | 91一区二区国产 | 激情av网站| 国产最新毛片 | av全黄| 亚洲av网址在线 | 中文字幕一区二区三区免费视频 | 超碰超碰在线 | 美国黄色一级大片 | 体内射精一区二区 | 2020国产在线 | 四虎影视黄色 | 日韩黄色一级片 | 污污网站在线看 | 99久久精品一区 | 无码人妻丰满熟妇啪啪网站 | 亚洲欧洲av在线 | 看国产毛片 | 欧美日韩在线播放三区四区 | 91色综合 | 天天爽天天爽 | 天堂色av | 亚洲色图欧美色 | 国产av一区二区三区最新精品 | 国产美女视频一区二区 | 日韩成人黄色片 | 曰本黄色大片 | 国产激情在线 | 黑人一区二区三区四区五区 | 福利一区二区在线 | 亚洲福利视频一区 | 狠狠操夜夜爽 | 久久亚洲一区二区三区四区五区 | 天堂av在线资源 | 国产卡一卡二卡三 | 国产毛片久久久久 | 国产精品熟妇一区二区三区四区 | 日本伊人网 | av资源站 | 91porn九色| 全程偷拍露脸中年夫妇 | 日韩在线资源 | 国产尤物av| 韩国黄色网址 | 久久久激情网 | 伊人色爱 | 色七七网站 | 一区二区三区在线视频观看 | 韩国精品视频在线观看 | 欧美一区一区 | 美女扒开内裤让男人桶 | 国产免费91 | 久久精品国产欧美亚洲人人爽 | 婷婷中文网| 亚洲精品.www | 中文字幕在线视频不卡 | 欧美激情视频一区二区三区在线播放 | 国产无码精品视频 | 日韩中文字幕国产 | www.毛片com| 国产香蕉视频在线 | 青青伊人网 | 牛牛av在线 | 国产一区二 | 国产在线自 | 日产精品久久久 | 久久人人看 | 亚洲人成无码网站久久99热国产 | 一道本一区二区 | 国产精品久久久久久白浆 | 国产一区二区视频在线观看免费 | 蜜臀精品| 成人一区二区三区在线观看 | 午夜精品一区二区三区在线观看 | 久国产 | 国产自产自拍 | 婷婷综合网 | 国产精品入口a级 | 人妻熟女一区二区aⅴ水野 91在线观看视频 | 日本亚洲一区 | 国产丝袜在线视频 | 亚洲瑟瑟 | a在线免费 | 国产精品美女www爽爽爽 | 欧美激情精品久久久久久蜜臀 | 久久久精品人妻一区二区三区四 | 一区二区精品视频在线观看 | 日韩一级影视 | 动漫美女无遮挡免费 | 深夜福利免费视频 | 丰满人妻一区二区三区53 | 午夜精品久久久久久久91蜜桃 | 色哟哟免费在线观看 | 就要操就要射 | 色乱码一区二区三区在线男奴 | 日韩国产欧美在线观看 |