和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)結果如下: