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

결측치 처리

유방울 2023. 4. 27. 13:08

종류 알아보는 방법

unique() : 결측치 포함

value_counts() : 결측치 미포함

# [2-5] 대륙의 종류를 알아봅니다
# 결과를 보면 csv파일에서 'NA'로 되어 있는 데이터를 NaN(=nan)으로 가져온 것입니다.
# 판다스 시리즈로 보면 NA
# 어떤 데이터 타입인지에 따라서 표현이 달라짐
df['대륙'].unique()
array(['AS', 'EU', 'AF', nan, 'SA', 'OC'], dtype=object)

# 넘파이의 어래이로 보면 NaN으로 표현
pd.Series(df['대륙'].unique())
0     AS
1     EU
2     AF
3    NaN
4     SA
5     OC
dtype: object

# na 결측치 정보는 제외하고 집계함
# [2-6] 대륙별 개수를 알아봅니다.
df['대륙'].value_counts()

 

결측치 확인

isna()

isnull()

notna()

notnull()

isna().sum() 개수 확인

# [2-7] 결측치를 컬럼 별로 집계해 봅니다.
df.isna()

# true는 1이니 sum으로 결측치 갯수 확인 가능
df.isna().sum()

# [2-8] isna()를 사용해 대륙에서 결측치로 취급된 데이터만 출력해 봅니다
# 북아메리카(NA)에 포함되는 국가들인 것을 확인할 수 있습니다.

df[df['대륙'].isna()]

way 1 : pd.read_csv(파일이름, na_filter = False)

way 2 : 이미 불러왔으면 NA로 대체

# [2-9] 해결방법 1
# read_csv의 옵션을 사용하여 해결합니다.
# read_csv에서 'NA'를 NaN으로 읽도록하는 동작을 멈추게 합니다.
# na_filter=False 를 사용하면 NA를 NaN으로 읽지 않습니다.
temp = pd.read_csv('./data_01/drinks.csv', na_filter = False)

# [2-10] 해결방법 2
# NaN으로 읽어온 데이터를 'NA'로 변경합니다.
# 새로 만든 것이기 때문에 대입 필요함
df['대륙'] = df['대륙'].fillna('NA')

df['대륙']
df.loc[df['대륙'].isna(), '대륙'] = 'NA'

 

'빅데이터 분석기사 > 작업 유형 1 (pd)' 카테고리의 다른 글

5/4 컬럼, 행의 추가/삭제  (2) 2023.05.04
통계치 구하기  (0) 2023.04.27
4/27 csv 파일 가져오기  (0) 2023.04.27
series의 통계값  (0) 2023.04.26
isin(), str accessor  (0) 2023.04.26