본문 바로가기
● 인공지능, 분석/21.07 코드잇_DS과정

3-6. DataFrame 이론 및 실전 | 연속 행▪열 출력, boolean, 조건 필터링

by 0ver-grow 2021. 9. 10.
반응형

indexing

import pandas as pd
df = pd.read_csv('data/iphone.csv', index_col=0)

iPhone X, iPhone 8 정보 가져오기. (행 2개 가져오기)

 

1차원은 Series

2차원은 DataFrame

 

연속된 row를 출력해보자

iPhone X까지 출력하기

df.loc[:'iPhone X']

연속된 column(메모리 칼럼 ~ Face ID 칼럼)을 출력해보자.

df.loc[ : , '메모리' : 'Face ID' ]

 

Boolean

0,2,3,5 칼럼만 출력하기

df.loc=[[True, False, True, True, False, True , False]]

전체 칼럼에 대해 Boolean값을 작성하지 않았다면?

작성하지 않은 칼럼들에 대해선 False 적용.

 

but boolean값을 하나하나씩 나열하는건 비효율적.

고로 칼럼에 대해 조건을 지정한다.

예를 들어 디스플레이의 크기가 5이상인 row를 출력하고 싶다면

df['디스플레이'] > 5

 

Face ID가 Yes인 것만 출력하고 싶다면.

df['Face ID'] == 'Yes'

디스플레이의 크기가 5이상이면서 (and)  Face ID가 Yes에 해당되는 것을 출력하고 싶다면?

(df['디스플레이'] > 5) & (df['Face ID'] == 'Yes')

 

조건 필터링

1. Face ID가 Yes인 것만 필터링해보자.

df.loc[df['Face ID'] == 'Yes']

2. 디스플레이의 크기가 5이상이면서  Face ID가 Yes에 해당되는 것을 필터링해보자.

df[(df['디스플레이'] > 5) & (df['Face ID'] == 'Yes')]

Q1 ) 'KBS'에서 시청률이 30이 넘은 데이터만 확인해보려면 어떻게 하면 될까요?

최종 결과, 다음처럼 나타나야함.

현재 DataFrame 출력화면

기존 코드

import pandas as pd

df = pd.read_csv('data/broadcast.csv', index_col=0)

# 작성하시오

정답

import pandas as pd

df = pd.read_csv('data/broadcast.csv', index_col=0)
df_kbs = df['KBS'] # KBS 칼럼만 뽑기
df_kbs[df_kbs > 30] # 칼럼 조건에 해당되는 것만 출력

Q2 ) 💖 시청률 확인하기

주어진 데이터에서 SBS가 TV CHOSUN보다 더 시청률이 낮았던 시기의 데이터를 확인

주어진 데이터

 

최종 결과 데이터

1차 과정 (복잡하게 한 것)

import pandas as pd

df = pd.read_csv('data/broadcast.csv', index_col=0)

df_sbs = df['SBS'] # sbs 칼럼만 저장
df_ch = df['TV CHOSUN'] # tv조선 칼럼만 저장

# df로 만들기 위한 전과정
dict1 = {
    'SBS' : df_sbs,
    'TV CHOSUN' : df_ch
}
new_df = pd.DataFrame(dict1)
new_df

1차 과정 (간결)

import pandas as pd

df = pd.read_csv('data/broadcast.csv', index_col=0)

new_df = df.loc[ : , 'SBS':'TV CHOSUN']
new_df

 

1차 과정 실행 결과

2차 과정

- ⓐ 칼럼간의 조건 비료로 boolean값 도출

- ⓑ boolean값에 해당되는 행만 출력

import pandas as pd

df = pd.read_csv('data/broadcast.csv', index_col=0)

new_df = df.loc[ : , 'SBS':'TV CHOSUN']
new_df

# 칼럼간의 조건 비교
new_boolean = new_df['SBS'] < new_df['TV CHOSUN'] # Boolean
new_df[new_boolean] # new_df에서 boolean True인 행만 출력

 

반응형