빅데이터 분석기사/작업 유형 1 (pd)

데이터 검색, boolean indexing

유방울 2023. 4. 26. 21:02

Boolean indexing 사용하여 조건에 맞는 데이터 가져오기 

- DataFrame.loc[조건, :] 

- DataFrame[조건] 

- 조건은 boolean dtype이어야 하며 행의 수와 같아야 함 

- 복잡한 조건 작성 

- (조건1) | (조건2)  : 조건1 또는 조건2를 만족하는 데이터 

- (조건1) & (조건2)  : 조건1, 조건2 모두 만족하는 데이터 

- ~(조건) : 조건이 거짓인 데이터

 

조건먼저 적고 -> 불린 데이터인지 확인하기

# [1-36] 'category'가 '음악/댄스/가수'인 채널의 subscriber TOP5를 알아봅니다.
df[df['category'] == '음악/댄스/가수'].sort_values('subscriber', ascending = False).head()

# [1-37] 'category'가 'TV/방송'인 채널의 view TOP5를 알아봅니다.
# 베이직 인덱싱 2
df[df['category'] == 'TV/방송'].sort_values('view', ascending = False).head()
# 록 인덱싱 2
df.loc[df['category'] == 'TV/방송', :].sort_values('view', ascending = False).head()

 

# [1-38] 'subscriber'가 30000000 (3천만) 이상인 채널을 알아봅니다.
# 베이직 인덱싱
df[df['subscriber'] >= 30000000]
# 록 인덱싱
df.loc[df['subscriber'] >= 30000000, :]

2개 조건 사용시 () 필수

& :  and

| : or

# [1-39] 'video' 개수가 30000 이상 35000 이하인 채널을 알아봅니다.
# and x 엠퍼센트 & 기호 사용
# () 괄호 사용 필수
df[(df['video'] >= 30000) & (df['video'] <= 35000)]

# [1-40] 'subscriber'가 30000000 (3천만)이상 이거나, 
#        'video' 개수가 50000 이상인 채널을 알아봅니다.
# df.loc[(df['subscriber'] >= 30000000) | (df['video'] >= 50000), :]
df[(df['subscriber'] >= 30000000) | (df['video'] >= 50000)]