Part 6. 데이터프레임의 다양한 응용
- map(), apply(), applymap() 함수
- map() : Series에서만 사용가능
- apply() : Series, DataFrame 둘 다 사용 가능
- applymap() :
- DataFrame에서만 사용 가능
- apply() 함수도바 빠름
- map() 함수
12345678910111213141516171819202122232425import seaborn as snsimport pandas as pddef gender(s):if s == 'male':return "남자"else:return "여자"df = sns.load_dataset('titanic')df = df.loc[:, 'survived':'age']df['성별1'] = df['sex'].map({'male':'남자', 'female':'여자'})d = {'male':'남자', 'female':'여자'}df['성별2'] = df['sex'].map(d)sr = pd.Series({'male':'남자', 'female':'여자'})df['성별3'] = df['sex'].map(sr)df['성별4'] = df['sex'].map(gender)df['성별5'] = df['sex'].map(lambda x: '남자' if x=='male' else '여자')df
- apply() 함수
12345678910111213141516171819202122232425262728import seaborn as snsimport pandas as pdimport numpy as npdf = sns.load_dataset('titanic')df = df.loc[:, ['survived', 'pclass', 'age', 'fare']]def add_10(n):return n + 10def add_two_obj(a, b):return a * badd_10(10)df.apply(add_10)df['age'].apply(add_10)add_two_obj(10, 20)df.apply(add_two_obj, b=10)df['age'].apply(add_two_obj, b=10)df.apply(lambda x: add_10(x)) # axis=0 or 1 의미 없음df['age'].apply(lambda x: add_10(x))df.apply(lambda x: add_two_obj(x['age'], x['fare']), axis=1)df.apply(np.sqrt)df.apply(np.sum, axis=0)df.apply(np.sum, axis=1)
- Series.str
- string 관련 함수를 모두 사용할 수 있음
- Series.str.get() 함수
12345678910111213141516import pandas as pdsr = pd.Series(["String",(1, 2, 3),["a", "b", "c"],123,-456,{0: "Hello", 2: "World"}])sr[출력]0 String1 (1, 2, 3)2 [a, b, c]3 1234 -4565 {0: 'Hello', 2: 'World'}
123456789sr.str.get(2)[출력]0 r1 32 c3 NaN4 NaN5 World