데이터 분석 기초 | 데이터 필터링 | isin()함수, ~ 틸테 사용법 | 쿼리(.query) | 결측값 제외하기(.notnull) | 특정 문자 포함하기(.contains) | 데이터 정렬(.sort_values / .nlargest) | 인덱스 정렬(.sort_index) | ..

    728x90

     

    1. 데이터 필터링(정제)

     

    : 판다스의 인덱싱 기법을 이용해 필요한 데이터를 추출하는 방법

    : 상세 조건으로 데이터를 출력하거나 다른 함수를 활용해 데이터를 필터링하고 정렬

     

    ▶ 라이브러리 설치 후 가져오기

    import pandas as pd
    import numpy as np

     

    ▶ 데이터셋 불러오기

    titanic = pd.read_csv('./datasets/titanic.csv')

     

    ▶ 데이터 정보 확인하기

     

    * .info()

    : 데이터셋의 전반적인 정보 출력

     

    * .columns

    : 현재 열 이름 출력

     

    1-1) 조건식 데이터 필터링

     

    ▶ 단일 조건식 활용

    titanic[titanic.Pclass == 3].head()

     

    다중 조건식 활용

    titanic[(titanic.Pclass == 3) & (titanic.Sex == 'male')].head()

     

    * 특정 값을 제외한 데이터 추출

    titanic[(titanic.Pclass == 3) & (titanic.Sex != 'female')].head()

     

    ▶ .loc 조건부 필터링

    titanic[titanic.Fare > 300].head()

     

    * 다중 조건 입력

    titanic.loc[
        (titanic.Fare > 240) & (titanic.Sex == 'female'),
        ['Name','Age','Fare','Embarked']
    ]

     

    ▶ .iloc 조건부 필터링

    titanic.iloc[list(titanic.Fare > 300)]

     

    1-2) 특정 값 포함/불포함 데이터 필터링

     

    ▶ isin() 

    : 특정 값을 포함해서 필터링

    titanic[titanic.Embarked.isin(['S', 'C'])].head()

     

    * 다중 열에서 특정 값을 포함한 필터링

    filter_male = titanic.Sex.isin(['male'])
    filter_pclass = titanic.Pclass.isin([1,2])
    
    titanic[filter_male & filter_pclass].head()

     

    ▶ 틸테(~)

    : 특정 값을 포함하지 않고 필터링

    titanic[~titanic.Embarked.isin(['S', 'C'])].head()

     

    1-3) 쿼리를 이용한 데이터 필터링

     

    ▶ .query() 

    : 데이터를 필터링하는 방법 중 가장 추천하는 방법
    : 직관적이고 가독성이 높음(SQL과 유사)
    : 함수의 인수에 조건식을 대입

     

    * 객실 등급 → 1, 2등급 / 탑승 요금 →  270 이상인 승객 데이터 추출

    titanic.query('Pclass == [1,2] & Fare > 270')

     

    * 성별 → 여성 / 객실 등급 → 1등급 / 나이 → 35살인 승객 데이터 추출

    titanic.query('Sex == "female" & Pclass == 1 & Age == 35')

     

    1-4) 결측값을 제외하고 데이터 필터링

     

    ▶ .notnull() 

    titanic_notnull = titanic[titanic.Cabin.notnull()]
    titanic_notnull.head()

     

    1-5) 특정 문자가 포함된 데이터 필터링

     

    ▶ .contains() 

    titanic[titanic['Name'].str.contains('Catherine')]

    : 문자열에만 사용할 수 있는 str이라는 상위 모듈을 앞에 호출해야 contains() 함수를 사용할 수 있음

     


    2. 데이터 정렬

     

    2-1)  다양한 기준으로 데이터 정렬

     

    ▶ sort_values() 이용

    : by = 으로 기준이 되는 열 이름을 설정

    : ascending = False 는 내림차순 정렬

    titanic.sort_values(by=['Fare'], ascending=False).head(5)

     

    * 2개 이상의 열을 기준으로 정렬

    : by = 으로 기준이 되는 열 이름을 나열 (나열된 순서대로 정렬됨)

    titanic.sort_values(by = ['Fare', 'Age'], ascending = False).head(10)

     

    ▶ .nlargest() 

    : 정렬 기준에서 가장 큰 순서대로 데이터 추출

    : n = 으로 추출할 데이터 개수 지정

    : columns = 으로 기준이 되는 열 지정

    titanic[titanic.Sex == 'female'].nlargest(n = 10, columns = 'Age')

    : 여성 승객 중 나이가 많은 순서대로 10개의 데이터를 추출

     

    2-2) 인덱스 정렬

     

    ▶ sort_index() 

    titanic[titanic.Sex == 'female'].nlargest(n = 10, columns = 'Age').sort_index()

     

    * 내림차순으로 정렬

    titanic[titanic.Sex == 'female'].nlargest(n = 10, columns = 'Age').sort_index(ascending = False)

     

    2-3) 데이터 순서 역순으로 변경

     

    ▶ loc[ : : -1]

    : 가장 마지막 번호부터 출력됨

    (데이터프레임을 호출하면 기본적으로는 인덱스 번호가 0부터 출력됨) 

    titanic.loc[::-1].head()

     

    ▶ reset_index() 

    : 인덱스 값을 새롭게 적용

    titanic.loc[::-1].reset_index().head()

     

    ▶ .loc[ : , : :-1]

    열 순서 역순으로 변경

    titanic.loc[:, ::-1].head()

    728x90

    댓글