컴공생의 다이어리
[판다스, pandas] dataframe 특정 조건에 맞는 데이터 추출 본문
pandas dataframe 특정 조건에 맞는 데이터 추출
pandas dataframe에서 특정 조건에 맞는 데이터를 추출하는 방법에 대해 정리하고자 한다.
데이터가 아래와 같이 있다고 가정한다.
import pandas as pd
df = pd.DataFrame([{"country":"한국","population":500},{"country":"미국","population":450},{"country":"싱가폴","population":705},
{"country":"호주","population":878},{"country":"베트남","population":660},{"country":"대만","population":808}])
여기서 만일 country가 한국일 때를 선택하고 싶다면 아래와 같이 코드를 작성하면 된다.
df[df['country'] == '한국']
또 country가 한국이거나 호주일때의 데이터를 추출하고 싶다면 아래와 같이 코드를 작성하면 된다.
df[(df['country']=='한국') | (df['country']=='호주')]
이번 코드는 country가 한국이 아닌 것 중 population이 800이상인 것을 추출하는 것이다.
df[(df['country']!='한국') & (df['population']>=800)]
한번 정리하고 가자면 추출하기 위한 조건이 2개 이상인 경우 각 조건을 괄호로 묶어주는 것이 안전하며 조건1과 조건2가 있을 때, 이 두 조건을 모두 만족하는 데이터를 추출하고 싶다면 &을 사용해주고 두 조건 중 하나라도 조건을 만족하는 데이터를 추출하고 싶다면 |를 사용해주면 된다.
# 조건을 둘다 만족해야 할때
df[(조건1) & (조건2)]
# 조건 중 하나라도 만족하면 될때
df[(조건1) | (조건2)]
그리고 만일 리스트 조건 안에 포함되는 데이터를 추출하고 싶다면 isin()함수를 사용해주면 된다. 만일, country가 [한국, 일본, 대만, 영국, 호주] 리스트에 포함되는 것을 추출하고 싶다면 기존에 조건을 여러개 열거했던 것처럼 사용하지 않고 아래 코드와 같은 형태를 사용함으로써 데이터를 추출할 수 있다.
country_list = ['한국', '일본', '대만', '영국', '호주']
df[df['country'].isin(country_list)]
반대로 country 열에 country_list에 포함되지 않는 데이터를 추출하고 싶다면 아래 코드 처럼 위의 코드에서 ~를 붙여 사용하면 된다.
country_list = ['한국', '일본', '대만', '영국', '호주']
df[~df['country'].isin(country_list)]
위처럼 리스트 조건에 포함되는 혹은 포함되지 않는 데이터를 추출할 때, in 혹은 not in 키워드를 사용해도 될 수 있겠다고 하지만, 불가능하다. 만일 in 키워드를 사용해 아래 코드와 같이 작성하면 아래 첨부한 사진 같은 오류가 발생할 것이다.
# 잘못된 방식
country_list = ['한국', '일본', '대만', '영국', '호주']
df[df['country'] in country_list]
https://rfriend.tistory.com/460
'데이터 분석 & 머신러닝' 카테고리의 다른 글
[판다스, pandas] dataframe(데이터프레임)을 dict(사전)형으로 변환 (0) | 2021.11.11 |
---|---|
[판다스, pandas] dataframe의 특정 열에 함수 적용 - apply() (0) | 2021.10.02 |
[판다스, pandas] 결측값 확인 및 처리(제거, 채우기) - isnull(), dropna(), fillna() (0) | 2021.07.30 |
[seaborn] heatmap과 pairplot으로 상관계수 시각화 (0) | 2021.07.29 |
[판다스, pandas] 데이터 프레임의 특정 컬럼(column) 접근, 여러 컬럼에 접근 (0) | 2021.07.28 |