데이터 분석 기초
14.함수 적용
세용용용용
2023. 3. 15. 23:36
14.함수 적용¶
In [12]:
import pandas as pd
df = pd.read_csv('score.csv')
df
Out[12]:
| 이름 | 학교 | 키 | 국어 | 영어 | 수학 | 과학 | 사회 | SW특기 | |
|---|---|---|---|---|---|---|---|---|---|
| 0 | 채치수 | 북산고 | 197 | 90 | 85 | 100 | 95 | 85 | Python |
| 1 | 정대만 | 북산고 | 184 | 40 | 35 | 50 | 55 | 25 | Java |
| 2 | 송태섭 | 북산고 | 168 | 80 | 75 | 70 | 80 | 75 | Javascript |
| 3 | 서태웅 | 북산고 | 187 | 40 | 60 | 70 | 75 | 80 | NaN |
| 4 | 강백호 | 북산고 | 188 | 15 | 20 | 10 | 35 | 10 | NaN |
| 5 | 변덕규 | 능남고 | 202 | 80 | 100 | 95 | 85 | 80 | C |
| 6 | 황태산 | 능남고 | 188 | 55 | 65 | 45 | 40 | 35 | PYTHON |
| 7 | 윤대협 | 능남고 | 190 | 100 | 85 | 90 | 95 | 95 | C# |
In [13]:
df['학교'] = df['학교'] + '등학교'
df
Out[13]:
| 이름 | 학교 | 키 | 국어 | 영어 | 수학 | 과학 | 사회 | SW특기 | |
|---|---|---|---|---|---|---|---|---|---|
| 0 | 채치수 | 북산고등학교 | 197 | 90 | 85 | 100 | 95 | 85 | Python |
| 1 | 정대만 | 북산고등학교 | 184 | 40 | 35 | 50 | 55 | 25 | Java |
| 2 | 송태섭 | 북산고등학교 | 168 | 80 | 75 | 70 | 80 | 75 | Javascript |
| 3 | 서태웅 | 북산고등학교 | 187 | 40 | 60 | 70 | 75 | 80 | NaN |
| 4 | 강백호 | 북산고등학교 | 188 | 15 | 20 | 10 | 35 | 10 | NaN |
| 5 | 변덕규 | 능남고등학교 | 202 | 80 | 100 | 95 | 85 | 80 | C |
| 6 | 황태산 | 능남고등학교 | 188 | 55 | 65 | 45 | 40 | 35 | PYTHON |
| 7 | 윤대협 | 능남고등학교 | 190 | 100 | 85 | 90 | 95 | 95 | C# |
데이터에 함수 적용(apply)¶
In [21]:
import pandas as pd
df = pd.read_csv('score.csv')
df
Out[21]:
| 이름 | 학교 | 키 | 국어 | 영어 | 수학 | 과학 | 사회 | SW특기 | |
|---|---|---|---|---|---|---|---|---|---|
| 0 | 채치수 | 북산고 | 197 | 90 | 85 | 100 | 95 | 85 | Python |
| 1 | 정대만 | 북산고 | 184 | 40 | 35 | 50 | 55 | 25 | Java |
| 2 | 송태섭 | 북산고 | 168 | 80 | 75 | 70 | 80 | 75 | Javascript |
| 3 | 서태웅 | 북산고 | 187 | 40 | 60 | 70 | 75 | 80 | NaN |
| 4 | 강백호 | 북산고 | 188 | 15 | 20 | 10 | 35 | 10 | NaN |
| 5 | 변덕규 | 능남고 | 202 | 80 | 100 | 95 | 85 | 80 | C |
| 6 | 황태산 | 능남고 | 188 | 55 | 65 | 45 | 40 | 35 | PYTHON |
| 7 | 윤대협 | 능남고 | 190 | 100 | 85 | 90 | 95 | 95 | C# |
In [22]:
def add_cm(hegiht):
return str(hegiht)
df['키'] = df['키'].apply(add_cm)+'cm' #키 데이터에 대해서 add_cm함수를 호출한 결과 데이터를 반영함
df
Out[22]:
| 이름 | 학교 | 키 | 국어 | 영어 | 수학 | 과학 | 사회 | SW특기 | |
|---|---|---|---|---|---|---|---|---|---|
| 0 | 채치수 | 북산고 | 197cm | 90 | 85 | 100 | 95 | 85 | Python |
| 1 | 정대만 | 북산고 | 184cm | 40 | 35 | 50 | 55 | 25 | Java |
| 2 | 송태섭 | 북산고 | 168cm | 80 | 75 | 70 | 80 | 75 | Javascript |
| 3 | 서태웅 | 북산고 | 187cm | 40 | 60 | 70 | 75 | 80 | NaN |
| 4 | 강백호 | 북산고 | 188cm | 15 | 20 | 10 | 35 | 10 | NaN |
| 5 | 변덕규 | 능남고 | 202cm | 80 | 100 | 95 | 85 | 80 | C |
| 6 | 황태산 | 능남고 | 188cm | 55 | 65 | 45 | 40 | 35 | PYTHON |
| 7 | 윤대협 | 능남고 | 190cm | 100 | 85 | 90 | 95 | 95 | C# |
In [23]:
#sw특기 데이터 첫번쨰 문자 대문자 나머지는 소문자 반환
def str_Control(string):
if pd.notnull(string): # string가 nan가아니면
return string.capitalize() # 첫글자는 대문자, 나머지는 소문자
else: #nan이면
return string #자기자신 리턴
df['SW특기'] = df['SW특기'].apply(str_Control)
df
Out[23]:
| 이름 | 학교 | 키 | 국어 | 영어 | 수학 | 과학 | 사회 | SW특기 | |
|---|---|---|---|---|---|---|---|---|---|
| 0 | 채치수 | 북산고 | 197cm | 90 | 85 | 100 | 95 | 85 | Python |
| 1 | 정대만 | 북산고 | 184cm | 40 | 35 | 50 | 55 | 25 | Java |
| 2 | 송태섭 | 북산고 | 168cm | 80 | 75 | 70 | 80 | 75 | Javascript |
| 3 | 서태웅 | 북산고 | 187cm | 40 | 60 | 70 | 75 | 80 | NaN |
| 4 | 강백호 | 북산고 | 188cm | 15 | 20 | 10 | 35 | 10 | NaN |
| 5 | 변덕규 | 능남고 | 202cm | 80 | 100 | 95 | 85 | 80 | C |
| 6 | 황태산 | 능남고 | 188cm | 55 | 65 | 45 | 40 | 35 | Python |
| 7 | 윤대협 | 능남고 | 190cm | 100 | 85 | 90 | 95 | 95 | C# |