欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

分享5個(gè)數(shù)據(jù)處理更加靈活的pandas調(diào)用函數(shù)方法

 更新時(shí)間:2022年04月24日 11:51:23   作者:Python學(xué)習(xí)與數(shù)據(jù)挖掘  
這篇文章主要介紹了分享5個(gè)數(shù)據(jù)處理更加靈活的pandas調(diào)用函數(shù)方法,文章基于python的相關(guān)內(nèi)容展開詳細(xì)介紹,需要的小伙伴可以參考一下

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

這里的數(shù)據(jù)是虛構(gòu)的語數(shù)外成績,大家在演示的時(shí)候拷貝一下就好啦。

import pandas as pd
df = pd.read_clipboard()
df

姓名

語文

數(shù)學(xué)

英語

性別

總分

0

才哥

91

95

92

1

1

小明

82

93

91

1

2

小華

82

87

94

1

3

小草

96

55

88

0

4

小紅

51

41

70

0

5

小花

58

59

40

0

6

小龍

70

55

59

1

7

杰克

53

44

42

1

8

韓梅梅

45

51

67

0

1. apply

apply可以對(duì)DataFrame類型數(shù)據(jù)按照列或行進(jìn)行函數(shù)處理,默認(rèn)情況下是按照(單獨(dú)對(duì)Series亦可)。

在案例數(shù)據(jù)中,比如我們想將性別列中的1替換為男,0替換為女,那么可以這樣搞定。

先自定義一個(gè)函數(shù),這個(gè)函數(shù)有一個(gè)參數(shù) s(Series類型數(shù)據(jù))。

def getSex(s):
? ? if s==1:
? ? ? ? return '男'
? ? elif s==0:
? ? ? ? return '女'

上述函數(shù)還有更簡潔寫法,這里方便理解采用最直觀的寫法哈。

然后,我們直接使用apply去調(diào)用這個(gè)函數(shù)即可。

df['性別'].apply(getSex)

可以看到輸出結(jié)果如下:

0 男
1 男
2 男
3 女
4 女
5 女
6 男
7 男
8 女
Name: 性別, dtype: object

當(dāng)然,我們也可以直接用調(diào)用匿名函數(shù)lambda的形式:

df['性別'].apply( lambda s: '男' if s==1 else '女' )

可以看到結(jié)果是一樣的:

0 男
1 男
2 男
3 女
4 女
5 女
6 男
7 男
8 女
Name: 性別, dtype: object

以上是單純根據(jù)一列的值條件進(jìn)行的數(shù)據(jù)處理,我們也可以根據(jù)多列組合條件(可以了解為按行)進(jìn)行處理,需要注意這種情況下需要指定參數(shù)axis=1,具體看下面案例。

案例中,我們認(rèn)為總分高于200數(shù)學(xué)分?jǐn)?shù)高于90為高分

# 多列條件組合
df['level'] = df.apply(lambda df: '高分' if df['總分']>=200 and df['數(shù)學(xué)']>=90 else '其他', axis=1)
df

這5個(gè)pandas調(diào)用函數(shù)的方法,讓我的數(shù)據(jù)處理更加靈活自如_agg

同樣,上述用apply調(diào)用的函數(shù)都是自定義的,實(shí)際上我們也可以調(diào)用內(nèi)置或者pandas/numpy自帶的函數(shù)。

比如,求語數(shù)外和總分最高分:

# python內(nèi)置的函數(shù)
df[['語文','數(shù)學(xué)','英語','總分']].apply(max)

語文 96
數(shù)學(xué) 95
英語 94
總分 278
dtype: int64

求語數(shù)外和總分平均分:

# numpy自帶的函數(shù)
import numpy as np
df[['語文','數(shù)學(xué)','英語','總分']].apply(np.mean)

語文 69.777778
數(shù)學(xué) 64.444444
英語 71.444444
總分 205.666667
dtype: float64

2. applymap

applymap則是對(duì)每個(gè)元素的函數(shù)處理,變量是每個(gè)元素值。

比如對(duì)語數(shù)外三科超過90分認(rèn)為是科目高分

df[['語文','數(shù)學(xué)','英語']].applymap(lambda x:'高分' if x>=90 else '其他')

語文

數(shù)學(xué)

英語

0

高分

高分

1

其他

高分

2

其他

其他

3

高分

其他

4

其他

其他

5

其他

其他

6

其他

其他

7

其他

其他

8

其他

其他

3. map

map則是根據(jù)輸入對(duì)應(yīng)關(guān)系映射值返回最終數(shù)據(jù),作用于某一列。傳入的值可以是字典,鍵值為原始值,值為需要替換的值。也可以傳入一個(gè)函數(shù)或者字符格式化表達(dá)式等等。

以上面性別列中的1替換為男,0替換為女為例,還可以通過map來實(shí)現(xiàn)
 

df['性別'].map({1:'男', 0:'女'})

輸出結(jié)果也是一致的:

0 男
1 男
2 男
3 女
4 女
5 女
6 男
7 男
8 女
Name: 性別, dtype: object

比如總分列想變成格式化字符:

df['總分'].map('總分:{}分'.format)

0 總分:278分
1 總分:266分
2 總分:263分
3 總分:239分
4 總分:162分
5 總分:157分
6 總分:184分
7 總分:139分
8 總分:163分
Name: 總分, dtype: object

4. agg

agg一般用于聚合,在分組或透視操作中常見到,用法是和apply比較接近。

比如,求語數(shù)外和總分的最高分、最低分和平均分

df[['語文','數(shù)學(xué)','英語','總分']].agg(['max','min','mean'])

這5個(gè)pandas調(diào)用函數(shù)的方法,讓我的數(shù)據(jù)處理更加靈活自如_apply_02

我們還可以對(duì)不同的列進(jìn)行不同的運(yùn)算(用字典形式指定)

# 語文最高分、數(shù)學(xué)最低分和英文最高最低分
df.agg({'語文':['max'],'數(shù)學(xué)':'min','英語':['max','min']})

這5個(gè)pandas調(diào)用函數(shù)的方法,讓我的數(shù)據(jù)處理更加靈活自如_agg_03

當(dāng)然也支持自定義函數(shù)的調(diào)用

5. pipe

以上四個(gè)調(diào)用函數(shù)的方法,我們發(fā)現(xiàn)被調(diào)用的函數(shù)的參數(shù)就是 ??DataFrame???或Serise數(shù)據(jù),如果我們被調(diào)用的函數(shù)還需要?jiǎng)e的參數(shù),那么該如何做呢?

所以,pipe就出現(xiàn)了。

pipe又稱管道方法,可以將我們的處理分析過程標(biāo)準(zhǔn)化、流程化。它在調(diào)用函數(shù)的時(shí)候可以帶被調(diào)用函數(shù)的其他參數(shù),這樣就方便自定義函數(shù)的功能擴(kuò)展了。

比如,我們需要獲取總分大于n,性別為sex的同學(xué)的數(shù)據(jù),其中n和sex是可變參數(shù),那么用apply等就不太好處理。這個(gè)時(shí)候,就可以用到??pipe??方法來搞事了!

我們先定義一個(gè)函數(shù):

# 定義一個(gè)函數(shù),總分大于等于n,性別為sex的同學(xué)數(shù)據(jù)(sex為2表示不分性別)
def total(df, n, sex):
dfT = df.copy()
if sex == 2:
return dfT[(dfT['總分']>=n)]
else:
return dfT[(dfT['總分']>=n) & (dfT['性別']==sex)]

如果我們要找到總分大于200,不分性別的學(xué)生成績,可以這樣:

df.pipe(total,200,2)

這5個(gè)pandas調(diào)用函數(shù)的方法,讓我的數(shù)據(jù)處理更加靈活自如_python_04

再找總分大于150,性別為男生(1)的學(xué)生成績,可以這樣:

df.pipe(total,150,1)

這5個(gè)pandas調(diào)用函數(shù)的方法,讓我的數(shù)據(jù)處理更加靈活自如_agg_05

再找總分大于200,性別為女生(0)的學(xué)生成績,可以這樣:
 

df.pipe(total,200,0)

這5個(gè)pandas調(diào)用函數(shù)的方法,讓我的數(shù)據(jù)處理更加靈活自如_數(shù)據(jù)處理_06

以上就是本次我們介紹的5種調(diào)用函數(shù)的方法,這些操作技巧可以讓我們?cè)谔幚頂?shù)據(jù)時(shí)更加靈活自如

到此這篇關(guān)于分享5個(gè)數(shù)據(jù)處理更加靈活的pandas調(diào)用函數(shù)方法的文章就介紹到這了,更多相關(guān)pandas調(diào)用函數(shù)方法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • jupyter?notebook加載和運(yùn)行.py文件方式

    jupyter?notebook加載和運(yùn)行.py文件方式

    這篇文章主要介紹了jupyter?notebook加載和運(yùn)行.py文件方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • windows 10 設(shè)定計(jì)劃任務(wù)自動(dòng)執(zhí)行 python 腳本的方法

    windows 10 設(shè)定計(jì)劃任務(wù)自動(dòng)執(zhí)行 python 腳本的方法

    這篇文章主要介紹了windows 10 設(shè)定計(jì)劃任務(wù)自動(dòng)執(zhí)行 python 腳本的方法,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • python貪吃蛇游戲代碼

    python貪吃蛇游戲代碼

    這篇文章主要為大家詳細(xì)介紹了python貪吃蛇游戲代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • Python計(jì)算程序運(yùn)行時(shí)間的方法

    Python計(jì)算程序運(yùn)行時(shí)間的方法

    這篇文章主要介紹了Python計(jì)算程序運(yùn)行時(shí)間的方法,分別記錄起始時(shí)間與結(jié)束時(shí)間,計(jì)算兩者之間的差值來獲得程序的運(yùn)行時(shí)間,需要的朋友可以參考下
    2014-12-12
  • 在Python中,不用while和for循環(huán)遍歷列表的實(shí)例

    在Python中,不用while和for循環(huán)遍歷列表的實(shí)例

    今天小編就為大家分享一篇在Python中,不用while和for循環(huán)遍歷列表的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • 解決jupyter (python3) 讀取文件遇到的問題

    解決jupyter (python3) 讀取文件遇到的問題

    這篇文章主要介紹了解決jupyter (python3) 讀取文件遇到的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Python常用配置文件ini、json、yaml讀寫總結(jié)

    Python常用配置文件ini、json、yaml讀寫總結(jié)

    用的配置文件格式有ini、json、yaml等,下面簡單給大家介紹下,Python如何讀寫這幾種格式的文件,對(duì)Python讀寫ini、json、yaml配置文件相關(guān)知識(shí)感興趣的朋友一起看看吧
    2021-07-07
  • python微信好友數(shù)據(jù)分析詳解

    python微信好友數(shù)據(jù)分析詳解

    這篇文章主要為大家詳細(xì)介紹了python微信好友數(shù)據(jù)分析,實(shí)現(xiàn)對(duì)微信好友的獲取,并對(duì)省份、性別等數(shù)據(jù)分析,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • Python+Turtle動(dòng)態(tài)繪制一棵樹實(shí)例分享

    Python+Turtle動(dòng)態(tài)繪制一棵樹實(shí)例分享

    這篇文章主要介紹了Python+Turtle動(dòng)態(tài)繪制一棵樹實(shí)例分享,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • Pytest生成測試報(bào)告的實(shí)現(xiàn)

    Pytest生成測試報(bào)告的實(shí)現(xiàn)

    本文介紹了如何使用 pytest-html 插件生成測試報(bào)告,并提供了詳細(xì)的操作步驟、配置項(xiàng)和示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-11-11

最新評(píng)論