0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

盤點(diǎn)66個(gè)Pandas函數(shù)合集

科技綠洲 ? 來源:Python實(shí)用寶典 ? 作者:Python實(shí)用寶典 ? 2023-10-30 09:58 ? 次閱讀

今天我們重新盤點(diǎn)66個(gè)Pandas函數(shù)合集,包括數(shù)據(jù)預(yù)覽、數(shù)值數(shù)據(jù)操作、文本數(shù)據(jù)操作、行/列操作等等,涉及“ 數(shù)據(jù)清洗 ”的方方面面。

Pandas 是基于NumPy的一種工具,該工具是為解決數(shù)據(jù)分析任務(wù)而創(chuàng)建的。它提供了大量能使我們快速便捷地處理數(shù)據(jù)的函數(shù)和方法。

數(shù)據(jù)預(yù)覽

對于探索性數(shù)據(jù)分析來說,做數(shù)據(jù)分析前需要先看一下數(shù)據(jù)的總體概況。info()方法用來查看數(shù)據(jù)集信息,describe()方法將返回描述性統(tǒng)計(jì)信息,這兩個(gè)函數(shù)大家應(yīng)該都很熟悉了。

describe方法默認(rèn)只給出數(shù)值型變量的常用統(tǒng)計(jì)量,要想對DataFrame中的每個(gè)變量進(jìn)行匯總統(tǒng)計(jì),可以將其中的參數(shù)include設(shè)為all。

head()方法和tail() 方法則是分別顯示數(shù)據(jù)集的前n和后n行數(shù)據(jù)。如果想要隨機(jī)看N行的數(shù)據(jù),可以使用sample()方法。

df.sample(3)

輸出:

圖片

如果要檢查數(shù)據(jù)中各列的數(shù)據(jù)類型,可以使用.dtypes;如果想要值查看所有的列名,可以使用.columns。

df.columns

輸出:

Index(['日期', '銷量'], dtype='object')

前面介紹的函數(shù)主要是讀取數(shù)據(jù)集的數(shù)據(jù)信息,想要獲得數(shù)據(jù)集的大?。ㄩL寬),可以使用.shape方法。

df.shape

輸出:

(5, 2)

另外,len()可以查看某列的行數(shù),count()則可以查看該列值的有效個(gè)數(shù),不包含無效值(Nan)。

缺失值與重復(fù)值

Pandas清洗數(shù)據(jù)時(shí),判斷缺失值一般采用isnull()方法。此外,isnull().any()會判斷哪些”列”存在缺失值,isnull().sum()用于將列中為空的個(gè)數(shù)統(tǒng)計(jì)出來。

df.isnull().any()

輸出:

日期    False
銷量    True
dtype: bool

發(fā)現(xiàn)“銷量”這列存在缺失值后,處理辦法要么刪除dropna() ,要么填充fillna()。

df.fillna(50)

輸出:

圖片

Pandas清洗數(shù)據(jù)時(shí),判斷重復(fù)值一般采用duplicated()方法。如果想要直接刪除重復(fù)值,可以使用drop_duplicates() 方法。此處較為常見,不再過多演示。


數(shù)值數(shù)據(jù)操作

我們在處理數(shù)據(jù)的時(shí)候,會遇到批量替換的情況,replace()是很好的解決方法。它既支持替換全部或者某一行,也支持替換指定的某個(gè)或指定的多個(gè)數(shù)值(用字典的形式),還可以使用正則表達(dá)式替換。

df["編號"].replace(r'BA.$', value='NEW', regex=True, inplace = True)

輸出:

圖片

在Pandas模塊中, 調(diào)?rank()?法可以實(shí)現(xiàn)數(shù)據(jù)排名。

df["排名"] = df.rank(method="dense").astype("int")

輸出:

圖片

rank()?法中的method參數(shù),它有5個(gè)常?選項(xiàng),可以幫助我們實(shí)現(xiàn)不同情況下的排名。

圖片

clip()方法,用于對超過或者低于某些數(shù)的數(shù)值進(jìn)行截?cái)?^[1]^ ,來保證數(shù)值在一定范圍。比如每月的遲到天數(shù)一定是在0-31天之間。

df["遲到天數(shù)"] = df["遲到天數(shù)"].clip(0,31)

圖片

唯一值unique()是以數(shù)組形式返回列的所有唯一值,而nunique()返回的是唯一值的個(gè)數(shù)。

df["gender"].unique()
df["gender"].nunique()

輸出:

圖片

在數(shù)值數(shù)據(jù)操作中,apply()函數(shù)的功能是將一個(gè)自定義函數(shù)作用于DataFrame的行或者列;applymap()函數(shù)的功能是將自定義函數(shù)作用于DataFrame的所有元素。他們通常也與匿名函數(shù)lambda一起使用。

df["數(shù)量"].apply(lambda x: x+1)

輸出:

圖片文本數(shù)據(jù)操作

之前我們曾經(jīng)介紹過經(jīng)常被人忽視的:Pandas 文本型數(shù)據(jù)處理。在對文本型的數(shù)據(jù)進(jìn)行處理時(shí),我們會大量應(yīng)用字符串的函數(shù),來實(shí)現(xiàn)對一列文本數(shù)據(jù)進(jìn)行操作 ^[2]^ 。

函數(shù)方法用法釋義
cat字符串的拼接
contains判斷某個(gè)字符串是否包含給定字符
startswith/endswith判斷某個(gè)字符串是否以...開頭/結(jié)尾
get獲取指定位置的字符串
len計(jì)算字符串長度
upper、lower英文大小寫轉(zhuǎn)換
pad/center在字符串的左邊、右邊或左右兩邊添加給定字符
repeat重復(fù)字符串幾次
slice_replace使用給定的字符串,替換指定的位置的字符
split分割字符串,將一列擴(kuò)展為多列
strip、rstrip、lstrip去除空白符、換行符
findall利用正則表達(dá)式,去字符串中匹配,返回查找結(jié)果的列表
extract、extractall接受正則表達(dá)式,抽取匹配的字符串(一定要加上括號)

舉例:

df.insert(2, "姓名", 
          df["姓"].str.cat(df["名"], sep=""))

輸出:

圖片

df["手機(jī)號碼"] = df["手機(jī)號碼"].str.slice_replace(3,7,"*"*4)

輸出:

圖片

df["地址"].str.extract("([u4e00-u9fa5]+)")

輸出:

圖片

行/列操作

數(shù)據(jù)清洗時(shí),會將帶空值的行刪除,此時(shí)DataFrame或Series類型的數(shù)據(jù)不再是連續(xù)的索引,可以使用reset_index()重置索引。

df.reset_index(drop=True)

輸出:

圖片

rename()重命名用于更改行列的標(biāo)簽,即行列的索引。可以傳入一個(gè)字典或者一個(gè)函數(shù)。在數(shù)據(jù)預(yù)處理中,比較常用。

df.rename(columns={'mark': 'sell'}, inplace=True)

輸出:

圖片

行列轉(zhuǎn)置,我們可以使用T屬性獲得轉(zhuǎn)置后的DataFrame。

df.T

輸出:

圖片

刪除行列,可以使用drop()。

df.drop(columns=["mark"])

輸出:

圖片

數(shù)據(jù)分析師在進(jìn)行數(shù)據(jù)處理時(shí)經(jīng)常會遇到長寬表互轉(zhuǎn)的情況,這也是一道常見的數(shù)據(jù)分析面試題。

melt()方法可以將寬表轉(zhuǎn)長表,即表格型數(shù)據(jù)轉(zhuǎn)為樹形數(shù)據(jù)。

df.melt(id_vars="姓名", var_name="科目", value_name="成績")

輸出:

圖片

pivot()方法可以將長表轉(zhuǎn)寬表,即樹形數(shù)據(jù)轉(zhuǎn)為表格型數(shù)據(jù)。

df.pivot(index='姓名', columns='科目', values='成績')

輸出:

圖片

pivot()其實(shí)就是用 set_index()創(chuàng)建層次化索引,再用unstack()重塑

df1.set_index(['姓名','科目']).unstack('科目')

圖片

數(shù)據(jù)分組與數(shù)據(jù)透視表更是一個(gè)常見的需求,groupby()方法可以用于數(shù)據(jù)分組。

df.groupby("科目").mean()

圖片

由于pivot_table()數(shù)據(jù)透視表的參數(shù)比較多,就不再使用案例來演示了,具體用法可參考下圖。

圖片
數(shù)據(jù)篩選

如果是篩選行列的話,通常有以下幾種方法:

有時(shí)我們需要按條件選擇部分列、部分行,一般常用的方法有:

操作語法返回結(jié)果
選擇列df[col]Series
按索引選擇行df.loc[label]Series
按數(shù)字索引選擇行df.iloc[loc]Series
使用切片選擇行df[:5]DataFrame
用表達(dá)式篩選行^[3]^df[bool_vec]DataFrame

除此以外,還有很多方法/函數(shù)可以用于“數(shù)據(jù)篩選”。

如果想直接篩選包含特定字符的字符串,可以使用contains()這個(gè)方法。

例如,篩選戶籍地址列中包含“黑龍江”這個(gè)字符的所有行。

df[df["戶籍地址"].str.contains("黑龍江")]

query()查詢方法也可以用來篩選數(shù)據(jù),比如查詢“語文”成績大于“數(shù)學(xué)”成績的行記錄。

df.query("語文 > 英語")

輸出:

圖片

select_dtypes()方法可用于篩選某些數(shù)據(jù)類型的變量或列。舉例,我們僅選擇具有數(shù)據(jù)類型'int64'的列。

df.select_dtypes("int64")

輸出:

圖片

isin()接受一個(gè)列表,判斷該列中元素是否在列表中。

name_list = ["張三", "李四"]
df[df["姓名"].isin(name_list)]

輸出:

圖片
數(shù)值數(shù)據(jù)統(tǒng)計(jì)運(yùn)算

在對數(shù)值型的數(shù)據(jù)進(jìn)行統(tǒng)計(jì)運(yùn)算時(shí),除了有算術(shù)運(yùn)算、比較預(yù)算還有各種常見的匯總統(tǒng)計(jì)運(yùn)行函數(shù),具體如下表所示。

函數(shù)方法用法釋義
count非NaN數(shù)據(jù)項(xiàng)計(jì)數(shù)
sum求和
mean平均值
median中位數(shù)
mode眾數(shù)
max最大值
min最小值
std標(biāo)準(zhǔn)差
var方差
quantile分位數(shù)
skew返回偏態(tài)系數(shù)
kurt返回峰態(tài)系數(shù)

舉例:

df["語文"].max()

輸出:

155

最后,再說一個(gè)比較常用的統(tǒng)計(jì)運(yùn)算函數(shù)——累加cumsum()。

df["累計(jì)銷量"] = df["銷量"].cumsum()

輸出:

圖片

注:cumprod()方法是指連乘,用于與連加一樣,但使用頻率較少。


今天我們盤點(diǎn)了66個(gè)Pandas函數(shù)合集,但實(shí)際還有很多函數(shù)在本文中沒有介紹,包括時(shí)間序列、數(shù)據(jù)表的拼接與連接等等。此外,那些類似describe()這種大家非常熟悉的方法都省去了代碼演示。如果大家有在工作生活中進(jìn)行“數(shù)據(jù)清洗”非常有用的Pandas函數(shù),也可以在評論區(qū)交流。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    6715

    瀏覽量

    88307
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4237

    瀏覽量

    61965
收藏 人收藏

    評論

    相關(guān)推薦

    在PyODPS DataFrame自定義函數(shù)中使用pandas、scipy和scikit-learn

    的,MaxCompute 的 Python 環(huán)境只包含了 numpy 這一個(gè)第三方包,用戶常常問的問題是,如何在自定義函數(shù)里使用 pandas、scipy 或者 scikit-learn 這樣的包含c
    發(fā)表于 05-17 19:48

    Pandas中的四種繪圖函數(shù)

    數(shù)據(jù)可視化(三):Pandas中的繪圖函數(shù)
    發(fā)表于 09-04 09:04

    pandas是什么?

    提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔文章目錄前言一、pandas是什么?二、使用步驟1.引入庫2.讀入數(shù)據(jù)總結(jié)前言提示:這里可以添加本文要記錄的大概內(nèi)容:例如:隨著
    發(fā)表于 01-12 07:53

    pandas的快速入門介紹

    pandas 是基于NumPy 的一種工具,該工具是為了解決數(shù)據(jù)分析任務(wù)而創(chuàng)建的。Pandas 納入了大量庫和一些標(biāo)準(zhǔn)的數(shù)據(jù)模型,提供了高效地操作大型數(shù)據(jù)集所需的工具。pandas提供了大量能使我們
    發(fā)表于 06-03 08:00 ?0次下載
    <b class='flag-5'>pandas</b>的快速入門介紹

    從Excel到Python-最常用的36個(gè)Pandas函數(shù)

    本文涉及pandas最常用的36個(gè)函數(shù),通過這些函數(shù)介紹如何完成數(shù)據(jù)生成和導(dǎo)入、數(shù)據(jù)清洗、預(yù)處理,以及最常見的數(shù)據(jù)分類,數(shù)據(jù)篩選,分類...
    的頭像 發(fā)表于 12-10 21:31 ?604次閱讀

    Python工具pandas篩選數(shù)據(jù)的15個(gè)常用技巧

    pandas是Python數(shù)據(jù)分析必備工具,它有強(qiáng)大的數(shù)據(jù)清洗能力,往往能用非常少的代碼實(shí)現(xiàn)較復(fù)雜的數(shù)據(jù)處理 今天,總結(jié)了pandas篩選數(shù)據(jù)的15個(gè)常用技巧,主要包括5個(gè)知識點(diǎn): 比
    的頭像 發(fā)表于 03-30 10:44 ?2796次閱讀
    Python工具<b class='flag-5'>pandas</b>篩選數(shù)據(jù)的15<b class='flag-5'>個(gè)</b>常用技巧

    盤點(diǎn)Pandas的100個(gè)常用函數(shù)

    經(jīng)過一段時(shí)間的整理,本期將分享我認(rèn)為比較常規(guī)的100個(gè)實(shí)用函數(shù),這些函數(shù)大致可以分為六類,分別是統(tǒng)計(jì)匯總函數(shù)、數(shù)據(jù)清洗函數(shù)、數(shù)據(jù)篩選、繪圖與
    的頭像 發(fā)表于 04-01 09:52 ?2638次閱讀
    <b class='flag-5'>盤點(diǎn)</b><b class='flag-5'>Pandas</b>的100<b class='flag-5'>個(gè)</b>常用<b class='flag-5'>函數(shù)</b>

    解讀12 種 Numpy 和 Pandas 高效函數(shù)技巧

    本文分享給大家 12 種 Numpy 和 Pandas 函數(shù),這些高效的函數(shù)會令數(shù)據(jù)分析更為容易、便捷。最后,讀者也可以在 GitHub 項(xiàng)目中找到本文所用代碼的 Jupyter Notebook
    的頭像 發(fā)表于 06-29 17:05 ?1417次閱讀

    NXP K66系列單片機(jī)開發(fā)板軟件例程IAR8.2版本工程源碼30個(gè)合集

    NXP K66系列單片機(jī)開發(fā)板軟件例程IAR8.2版本工程源碼30個(gè)合集(stc單片機(jī))-NXP K66系列單片機(jī)開發(fā)板軟件例程IAR8.2版本工程源碼30
    發(fā)表于 07-22 12:25 ?0次下載
    NXP K<b class='flag-5'>66</b>系列單片機(jī)開發(fā)板軟件例程IAR8.2版本工程源碼30<b class='flag-5'>個(gè)</b><b class='flag-5'>合集</b>

    5個(gè)必須知道的Pandas數(shù)據(jù)合并技巧

    concat是pandas中專門用于數(shù)據(jù)連接合并的函數(shù),功能非常強(qiáng)大,支持縱向合并和橫向合并,默認(rèn)情況下是縱向合并,具體可以通過參數(shù)進(jìn)行設(shè)置。
    的頭像 發(fā)表于 04-13 10:35 ?2227次閱讀

    Pandas 50個(gè)高級、高頻操作

    在數(shù)據(jù)分析和數(shù)據(jù)建模的過程中需要對數(shù)據(jù)進(jìn)行清洗和整理等工作,有時(shí)需要對數(shù)據(jù)增刪字段。下面為大家介紹Pandas對數(shù)據(jù)的復(fù)雜查詢、數(shù)據(jù)類型轉(zhuǎn)換、數(shù)據(jù)排序、數(shù)據(jù)的修改、數(shù)據(jù)迭代以及函數(shù)的使用。
    的頭像 發(fā)表于 04-24 11:00 ?777次閱讀

    超強(qiáng)圖解Pandas,建議收藏

    Pandas是數(shù)據(jù)挖掘常見的工具,掌握使用過程中的函數(shù)是非常重要的。本文將借助可視化的過程,講解Pandas的各種操作。
    的頭像 發(fā)表于 08-29 15:15 ?525次閱讀
    超強(qiáng)圖解<b class='flag-5'>Pandas</b>,建議收藏

    如何使用Python和pandas庫讀取、寫入文件

    = pd.read_excel(' data .xlsx') 此代碼中,我們首先導(dǎo)入 pandas 庫并將其重命名為 pd。使用 pd.read_excel() 函數(shù)讀取 'data.xlsx' 文件并將其存儲在
    的頭像 發(fā)表于 09-11 17:52 ?1048次閱讀

    pandas中合并數(shù)據(jù)的5個(gè)函數(shù)

    今天借著這個(gè)機(jī)會,就為大家盤點(diǎn)一下pandas中合并數(shù)據(jù)的5個(gè)函數(shù)。 join join是基于索引的橫向拼接,如果索引一致,直接橫向拼接。如果索引不一致,則會用Nan值填充。 索引一致
    的頭像 發(fā)表于 10-31 11:11 ?529次閱讀
    <b class='flag-5'>pandas</b>中合并數(shù)據(jù)的5<b class='flag-5'>個(gè)</b><b class='flag-5'>函數(shù)</b>

    Pandas函數(shù)的三個(gè)接口介紹

    本文主要介紹pandas.DataFrame的三個(gè)接口,即assign、eval、query,分別用于賦值、查詢和執(zhí)行計(jì)算。 01 assign 在數(shù)據(jù)分析處理中,賦值產(chǎn)生新的列是非常高頻的應(yīng)用場
    的頭像 發(fā)表于 11-01 16:38 ?378次閱讀
    <b class='flag-5'>Pandas</b><b class='flag-5'>函數(shù)</b>的三<b class='flag-5'>個(gè)</b>接口介紹