python pandas自定義函數
pandas是數據分析的利器,它內置許多的函數,我之前的一篇博客對pandas的一些常用函數都做了介紹,但是很多時候光是他本身自帶的函數可能還不夠用,所以這里介紹一下pandas數據類型DataFrame的一個方法,可以讓我們的自定義函數運用在上面。
下面看一段代碼
import pandas as pd
import os
def f(column):
print(type(column))
df=pd.DataFrame({'column1':[1,2,5,8,63],'column2':[5,6,85,3,5],'column3':[54,36,45,85,69]},index=['fs','fd','f','fa','df'])
print(df)
df.apply(f)
這段代碼的輸出結果如下:
上述代碼我們定義了一個函數f,通過apply運用在我們創建的dataframe數據類型上,這里你其實可以發現,f中需要傳遞一個參數,其實這里你可以發現,dataframe為f傳遞了三個參數,分別是三個Series對象,其實啊!這里默認傳遞列參數,然后我們就可以通過這個方法使用自定義函數對列進行操作。
下面再看一段有趣的事例代碼:
import pandas as pd
import os
import numpy as np
df=pd.DataFrame({'column1':[1,2,5,8,63],'column2':[5,6,85,3,5],'column3':[54,36,45,85,69]},index=['fs','fd','f','fa','df'],dtype=np.object)
print(df)
def f2(x):
x[3]="hello ,good boy"
x[2]='hello ,good girl'
df.apply(f2)
print(df)
os.system("pause")
結果如下:
你會發現這樣的修改結果,通過這個案例,或許你可以意識到自定義函數的好處。
同時,apply不僅可以對列進行操作還可以對行進行操作,只需要對apply傳遞一個參數axis=0
下面我再給出一段示例代碼:
def f3(x):
print(type(x))
print(x)
df.apply(f3,axis=1)
輸出結果如下:
這里有一個要注意的地方,apply對行進行操作時,是不能對元素進行賦值的,但可以進行數據類型轉換,也就是不能對行的值進行更改。