데이터분석 기초 | .loc 사용법 | .iloc 사용법 | 문자형 데이터 인덱싱 | 문자형 인덱스 | 위치 기반 인덱싱 | set_index / reset_index

    728x90

     

     

    1. 라이브러리 설치 후 데이터셋 불러오기

     

    ▶ 라이브러리 설치

    import pandas as pd
    import seaborn as sns

     

    ▶ 데이터셋 불러오기

    : 데이터셋 불러온 뒤 transpose()로 열과 인덱스 전치하여 문자형 인덱스 만들기

    df = sns.load_dataset('penguins')
    df = df[:11].transpose()
    df

     


    2. .loc : 문자형 데이터 인덱싱에 사용 

     

    2-1) 특정 문자형 인덱스에 접근

     

    ▶ 1개의 문자형 인덱스

    df.loc['bill_length_mm']

     

    ▶ 2개 이상의 문자형 인덱스

     

    * 2개

    df.loc[['bill_length_mm', 'sex']]

    * 3개

     df.loc[['bill_length_mm', 'species','sex']]

     

    2-2) 인덱스와 열 위치로 데이터 찾기

     

    ▶ 인덱싱

    df.loc['bill_length_mm', 5]

     

    df.loc[['island', 'bill_length_mm', 'sex'], 7]

     

     슬라이싱

    df.loc['island' : 'bill_depth_mm', 7]

    : island부터 bill_depth_mm까지의 문자형 인덱스 출력 + 7번째 열의 데이터 찾기

     

    2-4) 열 기준으로 인덱싱하기

     

    ▶ 다시 인덱스와 열 위치 바꿔놓기

    : 열 기준으로 인덱싱 해봐야 하니까

    df = df.T   
    df

     

    ▶ 특정 열 중 조건에 맞는 데이터만 출력하기

    df.loc[df['bill_length_mm'] > 40]

     

    ▶ 특정 열 중 조건에 맞는 데이터 + 특정 열

    df.loc[df['bill_length_mm'] > 40, ['sex']]

     

    ▶ 특정 값에 해당하는 데이터만 인덱싱

     

    * 조건1 : 열 flipper_length_mm == 181

    df.loc[df['flipper_length_mm'] == 181]

     

    * 조건2 : 열 sex == 'Male'

    df.loc[df['sex'] == 'Male']

     

    2-5) .loc 함수로 인덱싱한 데이터에 새로운 값 저장하기

     

    ▶ [ 인덱싱, 열 이름 ] = 바꿀 값 지정

    df.loc[[1, 3], ['bill_length_mm']] = 50
    df.head()

     

    ▶ [ 인덱스 전체(:), 열 이름 ] = 바꿀 값 지정

    df.loc[:, 'bill_length_mm'] = 10
    df.head()

     

    ▶ [ 열 이름 데이터 + 조건 ] = 바꿀 값 지정

    df.loc[df['flipper_length_mm'] > 190] = 0
    df.head()

     


    3. .iloc : 위치 기반 인덱싱에 사용

     

    3-1) .iloc로 인덱싱

     

    ▶ 데이터셋 다시 불러오기

    df = sns.load_dataset('penguins')
    df.head()

     

    ▶ 다양한 인덱싱 방법

     

    * 인덱스0의 데이터 출력

    df.iloc[0]

     

    * 인덱스0의 데이터를 데이터프레임 형식으로 출력

    df.iloc[[0]]

     

    * 인덱스0과 인덱스2의 데이터 데이터프레임 형식으로 출력

    df.iloc[[0, 2]]

     

    * 인덱스0의 1열 값 출력

    df.iloc[0, 1]

     

    * 인덱스0과 인덱스2의 1열과 3열의 값 출력

    df.iloc[[0, 2], [1, 3]]

     

    ▶ 슬라이싱 사용

     

    * 슬라이싱으로 데이터 출력

    : 슬라이싱은 [시작 값, 끝 값+1]이므로 인덱스 0,1,2의 데이터가 출력됨

    df.iloc[:3]

     

    * 인덱스1:3의 0:3열의 데이터 출력

    : 슬라이싱은 [시작 값, 끝 값+1]이므로 각각 인덱스1,2와 열 0,1,2의 데이터가 출력됨

    df.iloc[1:3, 0:3]

     

    3-2) set_index

     

    : 기존의 열 값을 인덱스 값으로 변경

    df.set_index('species', inplace = True)
    df

     

    3-3) reset_index

     

    : 인덱스 값에서 다시 열 값으로 변경

    df.reset_index(inplace = True)
    df

    728x90

    댓글