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()
댓글