์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- ๋์ํ๋ณธ
- ๋ฐ์ดํฐ๋ถ์์ ๋ฌธ๊ฐ
- PCA
- pandas
- ๋น ๋ฐ์ดํฐ๋ถ์๊ธฐ์ฌ
- ADsP
- ํ์ด์ฌ
- ์๋ํด๋ผ์ฐ๋
- ๋ฐ์ดํฐ๋ถ์์ค์ ๋ฌธ๊ฐ
- ๋ฐ์ดํฐ๋ถ์
- ์ฃผ์ฑ๋ถ๋ถ์
- dataframe
- DBSCAN
- ํฌ๋กค๋ง
- ์ค๋ฒ์ํ๋ง
- ์ธ๋์ํ๋ง
- opencv
- ํ ์คํธ๋ถ์
- Lambda
- ๋ ๋ฆฝํ๋ณธ
- ADP
- ๊ตฐ์งํ
- ๋น ๋ฐ์ดํฐ
- ๋ฐ์ดํฐ๋ถ๊ท ํ
- LDA
- Python
- numpy
- t-test
- datascience
- iloc
Data Science LAB
[Python] ๋ฐ์ดํฐ ๊ฒฐ์ธก์น ์ฒ๋ฆฌ ๋ณธ๋ฌธ
Pandas ์์๋ ๋ค์ํ ๋ฐฉ๋ฒ์ผ๋ก ๊ฒฐ์ธก์น(NA)๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ค.
๊ฒฐ์ธก์น๋, ์ปฌ๋ผ์ ๊ฐ์ด ์๋ NULL ์ํ์ ๋ฐ์ดํฐ๋ฅผ ๋งํ๋ฉฐ, ๋ฐ์ดํฐ์ ์ ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ์ ์ ์ฉํ ๋ ๊ฒฐ์ธก์น๊ฐ ์กด์ฌํ๋ฉด ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ๊ฐ์ผ๋ก ๋์ฒดํ๊ฑฐ๋ ์ญ์ ํด์ผํ๋ค.
๋ฐ์ดํฐ์ ๊ฒฐ์ธก ์ฌ๋ถ ํ์ธ
import pandas as pd
import numpy as np
data = pd.read_csv("titanic_train.csv")
data.head()
๋จผ์ , ์ ๋ช ํ ๋ถ๋ฅ ๋ฐ์ดํฐ์ ์ค ํ๋์ธ ํ์ดํ๋ ๋ฐ์ดํฐ์ ์ ๋ถ๋ฌ์จ๋ค.
data.isna()
isna()๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ๊ฐ ๊ฒฐ์ธก์ธ์ง ์๋์ง์ ๋ํด True/False๋ก ๋ฐํํด์ค๋ค.
True -> ๊ฒฐ์ธก
False -> ๊ฒฐ์ธก X
data.isna().sum()
isna์ sum()ํจ์๋ฅผ ์ถ๊ฐํด ์ฃผ๋ฉด,
๊ฐ ์ปฌ๋ผ๋ณ ๊ฒฐ์ธก ๋ฐ์ดํฐ์ ์๋ฅผ ๋ฐํํด ์ค๋ค.
titanic ๋ฐ์ดํฐ์ ์์๋ 'Age'์ปฌ๋ผ์ ๊ฒฐ์ธก์น๊ฐ 177๊ฐ, 'Cabin' ์นผ๋ผ์ ๊ฒฐ์ธก์น๊ฐ 678๊ฐ, 'Embarked'์ปฌ๋ผ์ ๊ฒฐ์ธก์น๊ฐ 2๊ฐ์ธ ๊ฒ์ผ๋ก ํ์ธํ ์ ์๋ค.
๊ฒฐ์ธก ๋ฐ์ดํฐ ๋์น
๊ฒฐ์ธก ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ๋ ๊ฒ์ ํ์ธํ๋ค๋ฉด, ํน์ ๊ฐ์ผ๋ก ๋์ฒดํ์ฌ ๋ฐ์ดํฐ์ ์ ์ฑ์ธ ์ ์๋ค.
๋์น๊ฐ ์ข ๋ฅ
- ์ต๋น๊ฐ(mode)
- ํ๊ท (mean)
- ์ค์๊ฐ(median)
- ์กฐ๊ฑด๋ถ ๋์น
- ํ๊ท๋ถ์์ ํตํ ๋์น
- ์์์ ๊ฐ์ผ๋ก ์ ์ฒด ๊ฒฐ์ธก์น ๋์น
data.fillna(0)
fillna()์ ๋์นํ๊ณ ์ ํ๋ ์์์ ๊ฐ์ ์ ๋ ฅํ๋ฉด, ์ ์ฒด ๊ฒฐ์ธก์น๊ฐ ํ๋์ ๊ฐ์ผ๋ก ๋์น๋๋ค.
- ๊ฒฐ์ธก์น ์ด์ ๊ฐ์ผ๋ก ๋์น
data.fillna(method='pad')
- ๊ฒฐ์ธก์น ์ดํ ๊ฐ์ผ๋ก ๋์น
data.fillna(method = 'bfill')
- ํ๊ท ๊ฐ ๋์น
data['Age'].fillna(data['Age'].mean(),inplace=True)
fillna()ํจ์๋ฅผ ํตํด ํ๊ท ๊ฐ์ผ๋ก ๋์นํ ์ ์๋ค.
๐inplace = True ๋ก ์ค์ ํด์ผ ์ค์ ๋ฐ์ดํฐ ์ ๊ฐ์ด ๋ณ๊ฒฝ๋๋ค.
data['Age'] = data['Age'].fillna(data['Age'].mean(),inplace=False)
inplace ํ๋ผ๋ฏธํฐ์ default ๊ฐ์ False ์ด๋ฉฐ, default ๊ฐ์ ์ฌ์ฉํ๊ณ ์ถ์ ๊ฒฝ์ฐ,
์ผ์ชฝ์ ๋์นํ๊ณ ์ํ๋ ์ปฌ๋ผ์ ํ๋ฒ ๋ ์ ์ธํ์ฌ fillna()๊ฐ์ ๋์ ํ๋ฉด ๋๋ค.
๊ฒฐ์ธก ๋ฐ์ดํฐ ์ญ์
- ๊ฒฐ์ธก์น ํ ์ญ์
data = data.dropna()
dropna()ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฒฐ์ธก์น๋ฅผ ์ญ์ ํ ์ ์๋ค.
data.dropna(inplace=True)
dropna()๋ ๋ง์ฐฌ๊ฐ์ง๋ก inplace=True๋ก ์ค์ ํด์ผ ๋ฐ๋ก ๊ฒฐ์ธก์น ์ญ์ ๊ฐ ์ ์ฉ๋๋ค.
-ํ ์ ์ฒด๊ฐ ๊ฒฐ์ธก์น์ธ ํ ์ญ์
data = data.dropna(how='all')
-ํ์ ๊ฒฐ์ธก์น๊ฐ n๊ฐ ์ด๊ณผ์ธ ํ ์ญ์
data = data.dropna(thresh=n)
- ๊ฒฐ์ธก์น๊ฐ ์กด์ฌํ๋ ๋ชจ๋ ์ปฌ๋ผ ์ญ์
data = data.dropna(axis=1)
- ํน์ ์ปฌ๋ผ ์ค ๊ฒฐ์ธก์น๊ฐ ์กด์ฌํ ๋ ํ ์ญ์
data = data.dropna(subset = ['Age','Cabin','Embarked'])
๊ฒฐ์ธก์น ์ฒ๋ฆฌ ๊ฐ์ด๋๋ผ์ธ
- 10% ๋ฏธ๋ง : ์ญ์ ๋๋ ๋์น
- 10~50% : regression or model based imputation
- 50% ์ด์ : ํด๋น ์ปฌ๋ผ ์ญ์
'๐ Python > Pandas' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python] Pandas iterrows()๋ก ๋ฐ์ดํฐํ๋ ์์ ํ ๋ฐ๋ณต (0) | 2022.08.12 |
---|---|
[python] df.columns.difference (0) | 2022.03.27 |
[Python] Apply lambda ์ ์ฉ (0) | 2022.03.10 |
[Python] loc/iloc ์ฐจ์ด์ (0) | 2022.03.10 |
[Python] ๋ฆฌ์คํธ, ๋์ ๋๋ฆฌ, array ๋ฐ์ดํฐํ๋ ์์ผ๋ก ๋ณํ (0) | 2022.02.16 |