DataFrame(11):數據轉換——apply(),applymap()函數的使用


1、apply()函數

1)apply()函數作用

① apply()函數作用於Series

和Series的map()方法作用是一樣的,依次取出Series中的每一個元素作為參數,傳遞給function函數,進行一次轉換。

② apply()函數作用於DataFrame

依次取出DataFrame中的每一個元素作為參數,傳遞給function函數,進行轉換。注意:DataFrame中的每一個元素是一個Series。

③ 原始數據鏈接如下

https://alltodata.cowtransfer.com/s/61ac037949ee4d

2)apply()函數作用於Series

① 案例一:1代表男,0代表女,完成如下替換

df = pd.read_excel(r"C:\Users\黃偉\Desktop\test.xlsx",sheet_name=3)
display(df)

def func(x):
    if x == "" or x == "":
        return x
    elif x == 1:
        return ""
    else:
        return ""

df["性別"] = df["性別"].apply(func)
display(df)

結果如下:

            

② 案例二:將身高統一替換為“cm”單位

df = pd.read_excel(r"C:\Users\黃偉\Desktop\test.xlsx",sheet_name=3)
display(df)

def func(x):
    if x.endswith("cm"):
        return x
    else:
        v = float(x.replace("m",""))
        return str(v*100)+"cm"

df["身高"] = df["身高"].apply(func)
display(df)

結果如下:

           

③ 案例三:提取日期中的年、月、日

df = pd.read_excel(r"C:\Users\黃偉\Desktop\test1.xlsx")
display(df)

# 注意:這里的日期列,是時間格式
df["year"] = df["日期"].apply(lambda x:x.year)
df["month"] = df["日期"].apply(lambda x:x.month)
df["day"] = df["日期"].apply(lambda x:x.day)
display(df)

結果如下:

            

3)apply函數作用於DataFrame

① 案例一:求出某些列的均值

df = pd.read_excel(r"C:\Users\黃偉\Desktop\test.xlsx",sheet_name=2)
display(df)

df1 = df[["語文","物理"]]
display(df1)
display(type(df1))

df[["語文","物理"]].apply(lambda x:x.mean())

結果如下:

            

② 打印df中列或行的數據類型

df = pd.read_excel(r"C:\Users\黃偉\Desktop\test.xlsx",sheet_name=2)
display(df)

x = df.apply(lambda x:print(type(x)),axis=0)
print("-------------------------------------")
y = df.apply(lambda x:print(type(x)),axis=1)

結果如下:

            

2、applymap()函數

1)applymap()函數作用

① applymap()函數只能作用於DataFrame

依次取出DataFrame中的每一個具體的元素作為參數,傳遞給function函數,進行轉換。

2)案例說明

df = pd.read_excel(r"C:\Users\黃偉\Desktop\test.xlsx",sheet_name=2)
display(df)

df[['語文', '數學', '英語', '物理', '化學', '生物']].applymap(lambda x:x+100)

結果如下:

            


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM