데이터분석 전처리 | 데이터 선택 | iloc와 loc 사용법 | Pandas 컬럼 조건식 | 데이터프레임 컬럼 추가하기 | isin( ) 메소드 활용법

    728x90

     

    1. iloc와 loc

     

    ▶ iloc와 loc 차이 간단정리

    - iloc는 정수 기반의 인덱스를 사용함

    - loc는 레이블 기반의 인덱스를 사용함

     

    1-1) iloc

    ▶ .iloc[행 번호, 열 번호] : 인덱스 번호로 선택하기

    : 행 번호와 열 번호를 통해 특정 행과 열의 데이터를 선택할 수 이씀

    df.iloc[0, 2]

    >> 인덱스 0행과 인덱스 2열의 데이터 값 선택

    (파이썬은 0부터 세준다는 점을 주의할 것! 첫 번째 행, 세 번째 열 데이터 값이 추출될 것)

     

    ▶ .iloc 예시

    import pandas as pd
    
    # 샘플 데이터프레임 생성
    data = {
        'A': [1, 2, 3, 4, 5],
        'B': [10, 20, 30, 40, 50],
        'C': [100, 200, 300, 400, 500]
    }
    df = pd.DataFrame(data)
    
    # iloc을 사용하여 특정 행과 열 선택
    ex_data = df.iloc[1:4, 0:2]
    print(ex_data)

    >> 이렇게 .iloc[행 번호, 열 번호] 자리에 슬라이싱을 사용해도 됨

    >> 인덱스 1부터 3까지의 행과 0부터 1까지의 열 선택


    1-2) loc

     loc[행 이름, 열 이름] : 이름으로 선택하기

    : 인덱스가 번호가 아니라 특정 문자인 경우

    : loc['행 이름'] 자리에 추출하고자 하는 값의 인덱스를 적어주면 됨

    : loc['열 이름'] 은 추출하고자 하는 값의 컬럼명을 말함 

    data.loc['행 이름' , '열 이름']

     

    ▶ loc 예시

    import pandas as pd
    
    # 샘플 데이터프레임 생성
    data = {
        'A': [1, 2, 3, 4, 5],
        'B': [10, 20, 30, 40, 50],
        'C': [100, 200, 300, 400, 500]
    }
    df = pd.DataFrame(data, index=['a', 'b', 'c', 'd', 'e'])
    
    # loc을 사용하여 특정 행과 열 선택
    selected_data = df.loc['b':'d', 'A':'B'] 
    print(selected_data)

    >> loc 역시 .loc[행 이름, 열 이름] 자리에 슬라이싱을 사용해도 됨

    >> 레이블 'b'부터 'd'까지의 행과 'A'부터 'B'까지의 열 선택


    1-3) 특정 컬럼 전체를 선택하는 방법

    ▶ 1개의 컬럼에 대한 전체 행 출력

    : 리스트와 슬라이싱을 사용해서 데이터 선택

    data.loc[: , '컬럼명']
    data['컬럼명']

     >> 위 두 코드 중 어느 것을 사용해도 동일한 결과 값이 나옴

     

    ▶여러 개의 컬럼에 대한 전체 행 출력

    : 리스트를 사용해서 데이터 선택

    data[['컬럼명1', '컬럼명2', '컬럼명3']]

     

    - 컬럼을 선택할 때, 내가 원하는 순서를 지정해줄 수 있음

    data[['컬럼명3', '컬럼명1', '컬럼명2']]

    1-4) 2개 이상의 특정 행과 열을 선택하는 방법

    ▶ 한 행에 대한 2개의 컬럼값 출력

    data.loc['행이름', ['컬럼명1' , '컬럼명2']]

     

    ▶ 두 행에 대한 1개 컬럼값 출력

    data.loc[['행이름1', '행이름2'] , '컬럼명1']

     

    ▶ 한 행에 대한 여러 컬럼값 출력

    data.loc['행이름' , '컬럼명1' : ]

    >> '컬럼명1' : 의 뜻은 컬럼명1부터 컬럼 끝까지 다 출력하라는 의미


    2. Boolean Indexing

     

    ▶ Boolean Indexing

    : 불리언(Boolean) 값을 가지는 조건식을 사용해 데이터를 필터링 하거나 조건을 만족하는 행을 추출하는 방법

    조건에 따라 각 행이 True 또는 False로 평가되며 이를 바탕으로 조건을 만족하는 행 (=True 값인 행)을 필터링 함

     

    ▶ Boolean Indexing 활용 방법

    : 특정 열의 값을 기준으로 조건을 설정하여 조건을 만족하는 행을 선택함

    import pandas as pd
    
    df_ex = pd.DataFrame([['anna',24,'female'],['sena',35,'female'],['happy',17,'male'], ['nana',45,'male']],
                         columns=['name', 'age', 'gender'],
                         index = [1,2,3,4])
    
    df_ex

    df_ex

     

    ① 단일 조건으로 필터링

    df_ex[df_ex['age'] >= 30]

    df_ex[df_ex['age'] >= 30]

     

    ② 여러 조건으로 필터링

    : and 일 때는 &

    : or 일 때는 |   (Enter키 위에 원화 표시(₩)랑 같이 있는 막대기임, shift 누르고 해당 키 누르면 나옴)

    : 조건식이 길어져서 줄바꿈을 하고 싶을 때는 한 조건 끝나고 \ (역슬래시, 원화 표시(₩)가 역슬래시 표시임) 붙이면 됨

    # 'age' 열에서 30세 이하면서 'gender' 열이 'female'인 행 필터링
    df_ex[(df_ex['age'] <= 30) & (df_ex['gender'] == 'female')]

    df_ex

     

    ③ 조건에 따른 특정 컬럼 필터링

    : 조건을 만족하는, '특정 열'을 따로 선택할 수도 있음

    : 조건에 사용되는 열 따로, 추출할 열 따로

    'age' 열에서 30세 이상인 경우의 'name' 열만 선택
    df_ex.loc[df_ex['age'] >= 30, 'name']

    df_ex

     

    ④ isin()을 활용한 필터링

    : 리스트를 활용해 여러 값들을 포함하는 행을 선택할 수 있음

    # 'gender' 열에서 'male' 또는 'female'인 행 필터링
    df_ex[df_ex['gender'].isin(['male', 'female'])]

    df_ex

     

    + isin() 메소드 활용법

    • 시리즈(Series)나 데이터프레임(DataFrame)의 값들 중에서 특정 값이나 리스트 안에 포함된 값들을 찾아내는 메소드
    import pandas as pd
    
    df_ex = {'name' : ['anna', 'sena', 'happy', 'nana'],
             'age' : [24,35,17,45]}
    
    df_ex = pd.DataFrame(df_ex)
    df_ex

     

     단일 값 포함 여부 확인

    # 'name' 열에서 'nana' 값이 있는지 확인
    result = df_ex['name'].isin(['nana'])
    print(result)

     

     여러 값 포함 여부 확인

    # 'age' 열에서 24 또는 45 값을 포함하는 행 찾기
    result = df_ex['age'].isin([24, 45])
    print(result)

     

    데이터프레임 전체에서의 사용

    # 데이터프레임 전체에서 여러 조건을 확인하여 필터링
    result = df_ex.isin({'age': [17, 45], 'name': ['happy', 'nana']})
    print(result)

    >> 해당 열의 값이 리스트 안에 있는 값이면 True를 반환하고, 없으면 False를 반환함


    3. 데이터 추가하기

     

    ▶ 데이터프레임에 컬럼값 추가하는 방법

    df_ex = pd.DataFrame()
    
    # 신규 컬럼 추가
    df_ex['컬럼명'] = data
    
    # 리스트 형태로 컬럼값 추가하기(행 수를 맞춰서 입력해줘야 함)
    df_ex['컬럼명'] = [1,2,3]
    
    # 컬럼을 여러 조건 및 계산식에 대한 산출값으로도 추가 가능
    df_ex['total_cost'] = (df['total_bill'] + df['tip'])
    • df_ex라는 데이터프레임 '컬럼명'이라는 이름의 컬럼이 추가되고, 해당 컬럼에 data라는 값이 추가
      이 때, data값이 1개일 경우에는 해당 칼럼의 전체 행에 그 한 개의 값이 적용됨
    • 즉,  data가 하나의 값이면, 전체 모두 동일한 값 적용
      리스트나 시리즈 형태이면,  각 순서에 맞게 컬럼 값이 적용
    728x90

    댓글