16.データフレーム適用-関数マッピング(マッピング)
22642 ワード
1.マッピング関数
関数を
関数マッピングとは?
シリーズまたはデータフレーム内の各要素を特定の関数に1つずつ対応させるプロセス.
自分で作成した関数(lambda関数を含む)を適用できるため、処理しにくい複雑な演算をデータフレームなどのpandasオブジェクトに適用できます.
1-1. 関数を単一の要素にマッピング
apply()メソッドをシリーズオブジェクトに適用すると、パラメータとして渡されたマッピング関数にシリーズ内の各要素を入力し、関数の戻り値を返します.
関数をシリーズ内の要素:Seriseオブジェクトにマッピングします.apply(マッピング関数)
import seaborn as sns
def add_10(n):
return n+10
def add_two_obj(a,b):
return a+b
titanic = sns.load_dataset('titanic')
df = titanic.loc[:,['age','fare']]
df['ten']=10
print(df.head())
sr1 = df['age'].apply(add_10)
print(sr1.head())
# 시리즈 객체와 숫자에 적용: 2개의 인수(시리즈+숫자)
sr2 =df['age'].apply(add_two_obj,b=10) # a=df['age']의 모든 원소, b=10
print(sr2.head())
# lambda 함수 활용 : 시리즈 객체에 적용
sr3 =df['age'].apply(lambda x = add_10(x)) # x = df['age']
print(sr3.head()
データフレームでapplymap()メソッドを使用すると、マッピング関数にデータフレーム内の各要素が挿入され、戻り値が返されます.関数をデータフレームにマップします.データフレームオブジェクトです.applymap()
import seaborn as sns
titanic = sns.load_dataset('titanic')
df = titanic.loc[:,['age','fare']]
print(df.head())
print('\n')
def add_10(n):
return n+10
df_map = df.applymap(add_10)
print(df_map.head())
1-2. 関数をシリーズオブジェクトにマッピングする
関数を
apply(axis=0)メソッドを適用すると、すべてのカラムが個別に分離され、各カラムがマッピング関数のパラメータとして渡されます.
import seaborn as sns
titanic = sns.load_dataset('titanic')
df = titanic.loc[:,['age','fare']]
print(df.head())
print('\n')
def missing_value(series):
return series.isnull()
result = df.apply(missing_value,axis=0)
print(result.head())
ex2)import seaborn as sns
titanic = sns.load_dataset('titanic')
df = titanic.loc[:,['age','fare']]
def min_max(x):
return x.max()-x.min()
result = df.apply(min_max,axis=0) # default axis=0
print(result)
print(type(result))
関数を関数をデータフレームにマッピングする行:Dataframeオブジェクト.アプリケーション(axis=1)
import seaborn as sns
titanic = sns.load_dataset('titanic')
df = titanic.loc[:,['age','fare']]
df['ten']=10
def add_two_obj(a,b):
return a+b
print(df.head())
df['add'] = df.apply(lambda x : add_two_obj(x['age'],x['ten']),axis=1)
print(df.head())
1-2. 関数をデータフレームオブジェクトにマッピングする
関数をデータフレームオブジェクトにマップする:DataFrameオブジェクト.pipe(マッピング関数)
from os import add_dll_directory
import seaborn as sns
titanic = sns.load_dataset('titanic')
df = titanic.loc[:,['age','fare']]
df['ten']=10
def max_min(x):
return x.max()-x.min()
def add_10(x):
return x+10
def add_two_obj(a,b):
return a+b
# 각 열의 NaN 찾기 - 데이터프레임을 전달하면 데이터프레임 반환
def missing_value(x):
return x.isnull()
# 각 열의 NaN 개수 반환 - 데이터프레임을 전달하면 시리즈 전환
def missing_count(x):
return missing_value(x).sum()
# 데이터프레임의 총 NaN 개수 - 데이터프레임을 전달하면 값 반환
def total_number_missing(x):
return missing_count(x).sum()
print('원본','\n',df.head())
# 데이터프레임의 행 매핑
df['added'] = df.apply(lambda x : add_two_obj(x['age'],x['ten']),axis=1)
print(df.head())
# 데이터프레임의 열 매핑
result0 = df.apply(max_min,axis=0)
print(result0)
# 데이터프레임 원소에 함수매핑
result1 = df.applymap(add_10)
print(result1.head())
# 데이터프레임 객체에 함수매핑
result_df = df.pipe(missing_value)
print(result_df.head())
print(type(result_df))
# 데이터프레임 객체에 함수매핑
result_series = df.pipe(total_number_missing)
print(result_series)
print(type(result_series))
Reference
この問題について(16.データフレーム適用-関数マッピング(マッピング)), 我々は、より多くの情報をここで見つけました https://velog.io/@kdo6301/16.-데이터프레임-응용テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol