Dende
[Data Scientist] 조건을 만족하는 데이터프레임 본문
판다스 모듈을 통해 데이터프레임 내 조건을 만족하는 행을 추출하는 방법
* 부등호 조건을 충족하는 데이터 필터링하기
아래와 같은 데이터프레임이 있습니다.

'Male'컬럼의 데이터가 152보다 작으면 True 아니면 False인 조건을 걸어보겠습니다.
is_152 = df['Male'] < 152
0     True
1    False
2     True
3    False
4    False
5     True
Name: Male, dtype: bool
하지만 우리는 True, False의 목록이 아닌 True인 값만 선별해서 도출하고 싶습니다.
df[조건] 을 실행시키면 True인 인덱스만 출력되게 됩니다.
df[is_152]

두 가지 조건을 넣고 싶다면 어떻게 해야할까요?
방식은 두가지입니다. 기존 조건에 추가를 하거나 df[조건1 & 조건2] 식으로 지정해주면 됩니다.
참고로 두가지 이상의 조건을 반영할 때는, 각 조건에 괄호 표시 '()'를 반드시 넣어주어야 합니다.
multi_condition = (df['Female'] < 100) & (df['Male'] < 152)
df[multi_condition]

df[is_152 & is_female_under_100]

* 특정 문자열을 포함하는 데이터 필터링하기
- 특정 단어가 포함된 데이터를 필터링하기 위해서는 .str.contains()라는 함수를 사용해야합니다. 이 함수는 해당 컬럼의 값에 특정 문자열이 포함(contains)되어 있을 경우에는 True, 아닌 경우에는 False를 반환합니다.
아래와 같은 데이터프레임이 있습니다.

우선 컬럼명을 변경해보겠습니다.
df.rename(columns={'Unnamed: 0':'기종'}, inplace= True)
df

Unnamed :0 이라는 컬럼이 '기종' 이라는 컬럼명으로 변경되었습니다.
이번에는 기종이라는 str안에 'Plus' 라는 단어가 들어간 항목만 추출해보겠습니다.
is_plus = df['기종'].str.contains('Plus')
df[is_plus]
아래와 같이 필터링된 데이터가 추출됩니다.

이외에도 특정 문자열과 동일한 데이터를 필터링하는 .isin() 함수, 결측값(Nan)를 필터링하는 .isnull() 함수 등 여러 유용한 함수가 있습니다.
다음으로는 특정 조건으로 필터링된 데이터들에 컬럼을 추가해보겠습니다.

박물관의 시설명에 '대학'이라는 단어를 포함하면 '대학', 그렇지 않으면 '일반' 등의 데이터가 들어가는
새로운 컬럼 '분류'를 만들려고 합니다.
우선 시설명에 대학이 들어가는 조건을 만들겠습니다.
univ = df['시설명'].str.contains('대학')
그 다음 univ가 True인 인덱싱과 False인 인덱싱들에게 '분류'라는 컬럼을 만들어 값을 넣어줍니다.
df.loc[univ == True, '분류'] = '대학' 
df.loc[univ == False, '분류'] = '일반'

추가된 모습을 확인하실 수 있습니다.
'Data Scientist' 카테고리의 다른 글
| [Data Scientist] 상관관계 분석 (1) | 2022.09.21 | 
|---|---|
| [Data Scientist] Seaborn을 통한 고급 데이터시각화 (0) | 2022.09.21 | 
| [Data Scientist]데이터 처리 라이브러리 - 판다스(Pandas) (1) | 2022.09.21 | 
| [DataScientist]DataFrame을 인덱싱하자 (0) | 2022.09.20 | 
| Hadoop의 정의 (0) | 2022.08.17 |