반응형

1. pandas 및 numpy 라이브러리를 읽어들입니다.

>>> import pandas as pd
>>> import numpy as np

2. csv_url이라는 변수에 http 주소를 저장합니다.

>>> csv_url = 'https://raw.githubusercontent.com/guipsamora/pandas_exercises/master/04_Apply/Students_Alcohol_Consumption/student-mat.csv'

3. 아래 주소에서 데이터셋을 읽어들이고, df이라는 변수에 할당합니다.

>>> df = pd.read_csv(csv_url)
>>> df.head() # df의 데이터셋의 구조를 알기 위해 상위 열(5)을 조회합니다.

4. 이 데이터프레임에서 'school' 컬럼에서 'guardian'컬럼까지 분할해서 stud_alcoh 변수에 할당합니다.

>>> stud_alcoh = df.loc[: , 'school':'guardian'] # loc는 행과 열을 인덱싱하는 속성이다. 먼저 전체 행을 선택하기 위해 : (콜론)을 입력하고, 열 중에서 'school'에서 'guardian'까지의 열을 선택했다.

*인덱싱:데이터프레임에서 특정한 데이터만 골라내는 것.

5. 문자열 중 첫 글자를 대문자로 만드는 lambda 함수를 만듭니다.

>>> capitalizer = lamda x: x.capitalize() # capitalize() 메서드는 첫글자를 대문자로 전환합니다.

6. Mjob컬럼과 Fjob컬럼 값들의 첫 글자를 모두 대문자로 만듭니다.

>>> stud_alcoh['Mjob'].apply(capitalizer) # 커스텀 함수인 capitalizer를 데이터프레임의 'Mjob'컬럼에 적용하기 위해 apply 메서드를 적용합니다.
>>> stud_alcoh['Fjob'].apply(capitalizer) # 커스텀 함수인 capitalizer를 데이터프레임의 'Fjob'컬럼에 적용하기 위해 apply 메서드를 적용합니다.

7. 데이터셋의 마지막 행들을 봅니다.

>>> stud_alcoh.tail() 

8. 원본 데이터프레임의 Mjob, Fjob 컬럼이 여전히 소문자인걸 알아차렸나요? 왜 그럴까요? 고쳐봅니다.

>>> stud_alcoh['Mjob'] = stud_alcoh['Mjob'].apply(capitalizer) # 첫글자를 대문자로 만든 후 그 값을 해당 컬럼에 재배치해야 합니다.
>>> stud_alcoh['Fjob'] = stud_alcoh['Fjob'].apply(capitalizer)
>>> stud_alcoh.tail()

9. legal_drinker라는 새로운 컬럼에 불린 값을 반환하는 majority라는 함수를 만듭니다.

(17세보다 많은 경우를 성년(majority)으로 본다는 것을 고려)

>>> def majority(x):
            if x > 17:
                    return True
            else:
                    return False
>>> stud_alcoh['legal_drinker'] = stud_alcoh['age'].apply(majority)
>>> stud_alcoh.head()

(Source : Pandas_exercises 깃헙)

반응형

+ Recent posts