
๋ฐ์ดํฐ๊ฐ ์ ๋๋ก ๋์ด ์์ง ์์ผ๋ฉด ์ด์ํ ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค.
์๋ณธ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฌ๋ ๊ฒ์ด ์ค์ํ๋ค.
๊ฒฐ์ธก๊ฐ ์ฐพ๊ธฐ
๊ธฐ๋ณธ ๋ฐ์ดํฐ ๋ถ๋ฌ์ค๊ธฐ

info()
๊ฒฐ์ธก๊ฐ ์ฐพ๋ ๋ฒ 1
713๊ฐ์ row ์ค์ rating(๋ณ์ )๋ง 700๊ฐ๋ผ๋ ๊ฑธ ์ ์ ์๋ค.

isna()
๊ฒฐ์ธก๊ฐ์ด ์์ผ๋ฉด True, ์์ผ๋ฉด False ๋ก ๋ฐ์ดํฐ ํ๋ ์์ผ๋ก ๋ณด์ฌ์ค๋ค.

isna().sum()
๊ทธ๋ฅ ๋ฐ์ดํฐํ๋ ์์ผ๋ก ๋ณด๋ฉด ๋ถํธํ๋ค.
sum()ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐํ๋ ์์์ true ๊ฐ(1)์ ๋ํด์ค๋ค. rating์ 13๊ฐ์ ๊ฒฐ์ธก๊ฐ์ด ์๋ค๋ ๊ฒ์ ์ ์ ์๋ค.

isna().any(axis=1)
๋ชจ๋ row๋ฅผ ๊ฒ์ฌํ๋ ํจ์
0ํ๋ถํฐ 712ํ๊น์ง ๊ฒฐ์ธก๊ฐ์ด ์๋ ํ์ True๋ก ๋ณด์ฌ์ค๋ค.

์์์ ์ฐพ์ ๊ฐ๋ง ๋ฐ์ดํฐํ๋ ์์ผ๋ก ๊ฐ์ ธ์ค๋ฉด ๊ฒฐ์ธก๊ฐ์ด ์๋ row๋ง ์ถ๋ ฅ๋๋ค.

๋ฐ์ดํฐ๋ฅผ ๋ณด๋ฉด ๋ฑ๋ก๋ ๋ฆฌ๋ทฐ๊ฐ ์์ด์ ๋ณ์ ์ด NaN๋ก ๋์จ ๊ฒ์ ์ ์ ์๋ค.
๊ฒฐ์ธก๊ฐ ์ฒ๋ฆฌํ๊ธฐ

์ฌ์ฉํ ์ ์๋ ๋ฐ์ดํฐ๊ฐ ์ค์ด๋ ๋ค๋ ๋จ์ ์ด ์์

์ ํํ ๋ฐ์ดํฐ๋ ์๋์ง๋ง ๋ฐ์ดํฐ๊ฐ ์ค์ด๋ค์ง ์๋๋ค๋ ์ฅ์ ์ด ์์
๊ฒฐ์ธก๊ฐ ์ญ์ ํ๊ธฐ
dropna()

๊ฒฐ์ธก๊ฐ ๋ค๋ฅธ ๊ฐ์ผ๋ก ์ฑ์ฐ๊ธฐ
๋จผ์ ํด๋น ์ปฌ๋ผ์ ํ๊ท ๊ฐ์ ๊ตฌํด์ค ๋ค ๋ณ์์ ์ ์ฅํ๋ค.

๊ทธ๋ฆฌ๊ณ ์๋ ํจ์๋ก ๊ฒฐ์ธก๊ฐ์ ์ฑ์์ค๋ค.
fillna(๋ณ์๋ช )

๊ทธ๋ฌ๋ฉด ์๋ฆฌ์ฆ๊ฐ ๋์ค๋๋ฐ ์ด๋ฅผ ํด๋น ์ปฌ๋ผ์ ์ ์ฅํ๊ณ ๋ฐ์ดํฐํ๋ ์์ ํ์ธํ๋ฉด ์ ์ฑ์์ง ๊ฒ์ ๋ณผ ์ ์๋ค.

ํ์คํ ํ์ธํ๊ธฐ ์ํด isna().sum()์ผ๋ก ๊ฒฐ์ธก๊ฐ์ ์๋ฅผ ํ์ธํ๋ค.

์ค์ต 1
import pandas as pd
cellphone_df = pd.read_csv('data/cellphone.csv')
# ์ฌ๊ธฐ์ ์ฝ๋๋ฅผ ์์ฑํ์ธ์.
mini13_weight = 140
cellphone_df['weight'] = cellphone_df['weight'].fillna(mini13_weight)
cellphone_df[cellphone_df['year'] == 2021]


์ค๋ณต๊ฐ ์ฐพ๊ธฐ
๊ธฐ๋ณธ ๋ฐ์ดํฐ

duplicated()
์ค๋ณต๊ฐ์ด ์์ผ๋ฉด True๋ก ๋์ค๋ ํจ์.
๊ทธ๋ฆฌ๊ณ ์๊น์ฒ๋ผ sum()์ ์ฌ์ฉํ์ฌ True ๊ฐ์๋ฅผ ๋ํด์ค์ ์ด ์ค๋ณต๊ฐ์ด 2๊ฐ๋ผ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.

๋ฐ์ดํฐํ๋ ์์ผ๋ก ๋ณด๋ฉด ์ ์ฒด ์ปฌ๋ผ์ ๋ฐ์ดํฐ๊ฐ ์ค๋ณต๋๋ ๊ฑธ ๋ณผ ์ ์๋ค.

subset='์ปฌ๋ผ๋ช '
ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฃ์ผ๋ฉด ์ปฌ๋ผ๋ช ์ด id์ธ ์ปฌ๋ผ๋ง ์ค๋ณต๋ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ค๋ค.

์ฌ๊ธฐ์ ๋ง์ง๋ง 2๊ฐ์ ํ์ ๋ณด๋ฉด ์์ด๋๊ฐ์ด ๋ค๋ฅด๋ค๋ ๊ฑธ ๋ณผ ์ ์๋ค.
๊ทธ ์ด์ ๋ ์ค๋ณต๊ฐ์ ์ฐพ์์ฌ ๋ ์ฒ์ ๋์จ ๊ฐ์ ์ค๋ณต์ผ๋ก ์์น๊ณ , 2๋ฒ์งธ ๊ฐ๋ถํฐ ์ค๋ณต๊ฐ์ผ๋ก ์๊ฐํ๊ธฐ ๋๋ฌธ์ด๋ค.
keep = 'first'
keep์ด๋ผ๋ ํ๋ผ๋ฏธํฐ์ ๊ธฐ๋ณธ๊ฐ์ด first์ด๋ค.
์ฆ ์ ๋ฐ์ดํฐํ๋ ์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ค๋ค.

keep = 'last'
์ฌ๊ธฐ์ keep์ ๊ฐ์ผ๋ก last๋ฅผ ์ฐ๋ฉด, ๋งจ ๋ค์ ์๋ ๊ฐ์ ๋นผ๊ณ ๋๋จธ์ง ๊ฐ์ ์ค๋ณต๊ฐ์ผ๋ก ๋ฐ๋ ค์จ๋ค.
์ธ๋ฑ์ค๋ฅผ ๋ณด๋ฉด ๋ณํ๋ฅผ ์ ์ ์๋ค.

keep = False ๋ฅผ ์ฐ๋ ๊ฒฝ์ฐ
first, last ์๊ด ์์ด ์ค๋ณต๋์๋ค๋ฉด ์ ๋ถ ๊ฐ์ ธ์จ๋ค.

์ค๋ณต๊ฐ ์ฒ๋ฆฌํ๊ธฐ
๊ธฐ๋ณธ ๋ฐ์ดํฐ

drop_duplicates()
๋ชจ๋ ์ปฌ๋ผ์ ๋ฐ์ดํฐ๊ฐ ์ค๋ณต๋์ด์ผ ์ค๋ณต๊ฐ์ด๋ผ๊ณ ๋ณด๊ณ , ํด๋น row๋ฅผ ์ญ์ ํ๋ค.
๋น์ฐํ ์ค๋ณต๊ฐ์ค ํ๋๋ ๋จ๊ฒจ๋๊ณ ์ญ์ ํ๋ค.

์ฌ๊ธฐ์๋ ์ ์ฒด ์ค๋ณต์ด ์๋ id์ปฌ๋ผ ํ๋๋ง ์ค๋ณต์ด์ด๋ ๋ค ์ญ์ ํ๊ณ ์ถ๋ค๋ฉด subset ํ๋ผ๋ฏธํฐ๋ฅผ ์ฌ์ฉํ๋ค.

keepํ๋ผ๋ฏธํฐ๋ฅผ ์ฌ์ฉํด์ ๋ง์ง๋ง์ ์๋ ์ค๋ณต๊ฐ๋ง ๋จ๊ธฐ๊ณ ์ ๋ถ ์ญ์ ํ๋ ๊ฒ๋ ๊ฐ๋ฅํ๋ค.

์ค๋ณต๊ฐ์ ์ ๊ฑฐํ ๋ฐ์ดํฐํ๋ ์์ ์ ์ฅํด์ฃผ๊ณ

์ ๋ง๋ก ์ญ์ ๋ ๊ฒ ๋ง๋์ง ํ์ธํ๋ค.

์ค์ต 1
import pandas as pd
cellphone_df = pd.read_csv('data/cellphone.csv')
# ์ฌ๊ธฐ์ ์ฝ๋๋ฅผ ์์ฑํ์ธ์.
cellphone_df = cellphone_df.drop_duplicates()
cellphone_df

์ด์์ ์ฐพ๊ธฐ

๊ธฐ๋ณธ ๋ฐ์ดํฐ

1์ฌ๋ถ์์์ 3์ฌ๋ถ์์๋ฅผ ๊ตฌํ๊ณ iqr์ ๊ตฌํ๋ค.

๋ฆฌ๋ฐ์ ๊ตฌํด ์ ์ฅํด์ค๋ค.

๋ถ๋ฆฐ ์ธ๋ฑ์ฑ์ ํ๊ณ ๋๋ฉด ๊ฐ๊ฒฉ์ด ๋๋ฌด ์ ๋ ดํ๊ฑฐ๋ ๋๋ฌด ๋น์ผ ์ด์์ ๋ฐ์ดํฐ๋ฅผ ํ์ธํ ์ ์๋ค.

์ด์์ ์ฒ๋ฆฌํ๊ธฐ
1. ์๋ฌด๊ฒ๋ ํ์ง ์๊ธฐ
2. ๊ธฐ์ค์ ๋ณด๋ค ๋ฎ๊ฑฐ๋ ๋์ ์ด์์ ์ ๊ฐ์ ๋ณ๊ฒฝํด์ค๋ค.

3. ์ด์์ ์ ํด๋นํ๋ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ๋ค. (์ค๋ฅ๊ฐ ํ์คํ ๋ / ์ง์๋ ์ํฅ์ด ์์ ๋)
๊ธฐ๋ณธ ๋ฐ์ดํฐ

์๊น ๋ง๋ ๊ฐ์ผ๋ก ๊ธฐ์ค์ ๋ด์ ์๋ ๋ฐ์ดํฐ๋ค๋ง ๋ฝ์์ค๋ค.


707๊ฐ์๋ ๋ก์ฐ๊ฐ ์ด์์ ๋ฐ์ดํฐ 4๊ฐ๋ฅผ ์ ์ธํ๊ณ 703๊ฐ๋ง ๋จ์๋ค.
์ค์ต 1
import pandas as pd
cellphone_df = pd.read_csv('data/cellphone.csv')
# ์ฌ๊ธฐ์ ์ฝ๋๋ฅผ ์์ฑํ์ธ์.
q1 = cellphone_df['price'].quantile(0.25)
q3 = cellphone_df['price'].quantile(0.75)
iqr = q3 - q1
lower_limit = q1 - 1.5 * iqr
upper_limit = q3 + 1.5 * iqr
cellphone_df = cellphone_df[(cellphone_df['price'] >= lower_limit) &(cellphone_df['price'] <= upper_limit)]
cellphone_df

์ฝ๋์ 14. ๋ฐ์ดํฐ ๋ค๋ฌ๊ธฐ
'๋ง์ผํ > ๋ฐ์ดํฐ ๋ถ์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ์ด์ฌ] ์ซ์ ๋ฐ์ดํฐ ๊ฐ๊ณตํ๊ธฐ (0) | 2025.03.14 |
---|---|
[ํ์ด์ฌ] ๋ฌธ์ ๋ฐ์ดํฐ ๊ฐ๊ณตํ๊ธฐ (0) | 2025.03.13 |
[ํ์ด์ฌ] DataFrame ๊ธฐ๋ณธ๊ธฐ (0) | 2025.03.13 |
[ํ์ด์ฌ] seaborn (0) | 2025.03.13 |
[ํ์ด์ฌ] ํต๊ณ ๊ธฐ๋ณธ ์์๊ณผ ๊ทธ๋ํ (1) | 2025.03.09 |