1. ์ ํ์ํ๊ฐ?
๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ณต์ฅ์ ์์ง๋์ด๋ผ๊ณ ์์ํด๋ด. ์ด์ ๋น์ ์ ์์์ฌ(๋ฐ์ดํฐ)๋ฅผ ๋ถ์ํ๊ณ ์ ๋ฆฌํด์ ์ต์ข ์ ํ(ํต์ฐฐ, ๋ณด๊ณ ์)์ ๋ง๋ค์ด์ผ ํด. ์ ๋ฆฌ์ ํฌ๋งทํ ์ด ์์ผ๋ฉด ๋ฐ์ดํฐ๋ ์ฌ๊ธฐ์ ๊ธฐ ๋๋ธ๋ฌ์ง ๋ถํ์ฒ๋ผ ๋จ์์ ์กฐ๋ฆฝํ๊ธฐ ์ด๋ ต๊ฒ ๋์ง.
๊นจ๋ํ๊ณ ํฌ๋งทํ ๋ ๋ฐ์ดํฐ๋ ๋จ์ํ ๋ณด๊ธฐ ์ข๊ณ ์ฝ๊ธฐ ์ฝ๊ฒ ๋ง๋๋ ๋ฌธ์ ๊ฐ ์๋๋ผ ์ ํํ ๋ถ์๊ณผ ๋ชจ๋ธ ๊ตฌ์ถ์ ์ค์ํ ์กฐ๊ฑด์ด์ผ. ์๋ชป ์ฒ๋ฆฌ๋ ๋ฐ์ดํฐ๋ ์๋ชป๋ ๊ฒฐ๋ก ์ ์ด๋ํ ์๋ ์๊ณ , ํ๋ฃจ ์ผ์ ๋ง์น ๋๊ฐ ๋ผ์์ผ ์ง์๋ค์ ํ๊ท ์ฐ๋ น์ ์ฐ๋๋ก๊ฐ ์๋๋ผ ๋ฐ์ดํฐ ํํธ์ผ๋ก ๊ณ์ฐํ๋ค๋ ๊ฑธ ๊นจ๋ซ๊ฒ ๋๋ ๊ทธ๋ฐ ์ํฉ์ ๋๊ตฌ๋ ์ํ์ง ์์์.
ํฌ๋งทํ ์ ์ฃผ์ ๋ชฉํ
์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ ์ ํฌ๋งทํ ์ ํตํด ์ฐ๋ฆฌ๊ฐ ํด๊ฒฐํ๊ณ ์ ํ๋ ๋ฌธ์ ๋ฅผ ์ดํด๋ณด์:
- ๋น ํ๊ณผ ์ด ์ ๊ฑฐ: ๋น ์ฃผ๋จธ๋์ฒ๋ผ ์๋ฌด๋ฐ ์ด์ต๋ ์์ง๋ง ์ฝ๊ฒ ํผ๋์ ์ค๋ค.
- ์ค๋ณต ์ ๊ฑฐ: ๋ฐ๋ณต๋๋ ๋ฐ์ดํฐ๋ ๋ ธ์ด์ฆ๋ฅผ ์ผ์ผํจ๋ค.
- ๋๋ฝ๋ ๊ฐ ์ฑ์ฐ๊ธฐ: ์น์ฆ์ ๊ตฌ๋ฉ์ ์ฑ์ฐ๋ ๊ฒ์ฒ๋ผ ๋๋ก๋ ๋ง์๋ ๋ฌด์ธ๊ฐ๋ก ์ฑ์์ผ ํด.
- ๋ฐ์ดํฐ ํ์ ๋ณํ: ๋์ด๋ ์ซ์์ฌ์ผ ํ๊ณ ํ ์คํธ๊ฐ ๋๋ฉด ์ ๋๋ค๋ ๊ฑธ ํ์ธํ๋ ๊ฒ ์ค์ํด. "25๋ ๊ฒฝ๋ ฅ"๊ณผ ๊ฐ์ ํ ์คํธ์ ํผ๋ํ์ง ์๋๋ก.
2. ๋ฐ์ดํฐ ์ ๋ฆฌ์ ํฌ๋งทํ ์ ์ํ ๋๊ตฌ
์ด์ ์ ์ด๊ฒ ํ์ํ์ง ์์์ผ๋, ์ด ์์ ์ ๋์์ค ๋๊ตฌ๋ค์ ์ดํด๋ณด์. ๋ง์น ํ์ดํน์์ ์ค์์ค ์๋ฏธ ๋์ดํ ๊ฐ์ ์กด์ฌ๋ค์ด์ผ:
-
๋น ๊ฐ ์ ๊ฑฐ:
dropna()
-
์ค๋ณต ์ฒ๋ฆฌ:
duplicated()
์drop_duplicates()
- ๋๋ฝ๋ ๊ฐ ์ฑ์ฐ๊ธฐ:
fillna()
-
๋ฐ์ดํฐ ํ์
๋ณํ:
astype()
๋น ๊ฐ ์ ๊ฑฐ
๋น ๊ฐ์ ํญ์ ์์์น ๋ชปํ ์๊ฐ์ ๋ํ๋๋ ๊ฒ ์ค ํ๋์ผ. dropna()
๋ก ๋ถํ์ํ ๊ฒ๋ค์ ์ค๋๋ ๋ก์ ์๋ง์ฒ๋ผ ์ ๊ฑฐํ ์ ์์ด. ์์ ๋ฅผ ๋ณด์:
import pandas as pd
# ๋๋ฝ๋ ๊ฐ์ด ์๋ DataFrame ์์ฑ
data = {'์ด๋ฆ': ['์๋', '์ด๋ฐ', None, '๋ง๋ฆฌ์'],
'๋์ด': [29, None, 34, 23],
'๋์': ['๋ชจ์คํฌ๋ฐ', '์ํธํํ
๋ฅด๋ถ๋ฅดํฌ', '๋
ธ๋ณด์๋น๋ฅด์คํฌ', None]}
df = pd.DataFrame(data)
# NaN ๊ฐ์ด ํฌํจ๋ ํ ์ญ์
cleaned_df = df.dropna()
print(cleaned_df)
์ ์ฝ๋๋ ํ๋๋ผ๋ ๋น ๊ฐ์ด ์๋ ๋ชจ๋ ํ์ ์ญ์ ํ ๊ฑฐ์ผ.
์ค๋ณต ์ฒ๋ฆฌ
๊ฐ๋ ๋น์ ์ ๋ฐ์ดํฐ์ ์ค๋ณต์ด ๋ํ๋ ์ ์์ด. ๋ง์น "์ฐพ์๋ผ ์ฐจ์ด์ " ๊ฒ์์์ ์ฐจ์ด๊ฐ ์๋ ๊ทธ๋ฆผ์ฒ๋ผ. ์ด๋ฐ ๋ฐ์ดํฐ๋ drop_duplicates()
๋ก ๊ฑธ๋ฌ๋ผ ์ ์์ด.
# ์ค๋ณต๋ ๋ฐ์ดํฐ๊ฐ ์๋ DataFrame ์์ฑ
data = {'์ด๋ฆ': ['์๋', '์ด๋ฐ', '์๋', '๋ง๋ฆฌ์'],
'๋์ด': [29, 34, 29, 23]}
df = pd.DataFrame(data)
# ์ค๋ณต๋ ํ ์ญ์
unique_df = df.drop_duplicates()
print(unique_df)
๋๋ฝ๋ ๊ฐ ์ฑ์ฐ๊ธฐ
๋๋ฝ๋ ๊ฐ์ ์ฑ์ฐ๋ ๋ฐฉ๋ฒ์ ๋ค์ํด. ์๋ฅผ ๋ค์ด ํ๊ท ๊ฐ์ด๋ ๊ณ ์ ๋ ๊ฐ์ผ๋ก ์ฑ์ธ ์ ์์ด. fillna()
๊ฐ ๊ทธ๊ฒ์ ๋์์ค ๊ฑฐ์ผ:
# '๋์ด' ์ด์ ๋๋ฝ๋ ๊ฐ์ ํ๊ท ๊ฐ์ผ๋ก ์ฑ์ฐ๊ธฐ
df['๋์ด'] = df['๋์ด'].fillna(df['๋์ด'].mean())
print(df)
๋ฐ์ดํฐ ํ์ ๋ณํ
๋ฐ์ดํฐ ๋ณํ์ ํ ์คํธ ๋ฐ์ดํฐ๊ฐ ์์๋๋ ์ซ์ ์๋ฆฌ์์ ๋์ค๋ ๊ฑธ ๋ฐฉ์งํ๊ธฐ ์ํด ํ์ํ ๋๊ฐ ์์ด:
# '๋์ด' ์ด์ ๋ฐ์ดํฐ ํ์
์ ์ ์๋ก ๋ณํ
df['๋์ด'] = df['๋์ด'].astype(int)
print(df)
3. ์ค์ ๋ฐ์ดํฐ์ ์ ๋ฆฌ: ์์
์ด์ ๊ฐ์์ Excel ํ์ผ๋ก ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฆฌํ๊ณ ํฌ๋งทํ ํด๋ณด์. ํ๋งค ์ ๋ณด๊ฐ ๋ด๊ธด ๋ฐ์ดํฐ๋ก ์์ ํด๋ณผ๊ฒ.
# Excel์์ ๋ฐ์ดํฐ ๋ก๋
filename = "sales_data.xlsx"
df = pd.read_excel(filename)
# ๋๋ฝ๋ ๊ฐ์ด ์๋ ํ ์ญ์
df = df.dropna()
# ์ค๋ณต๋ ํ ์ญ์
df = df.drop_duplicates()
# 'ํ๋งค' ์ด์ ๋๋ฝ๋ ๊ฐ์ ํ๊ท ๊ฐ์ผ๋ก ์ฑ์ฐ๊ธฐ
df['ํ๋งค'] = df['ํ๋งค'].fillna(df['ํ๋งค'].mean())
# ๋ฐ์ดํฐ ํ์
๋ณํ
df['์ ํ ์ฝ๋'] = df['์ ํ ์ฝ๋'].astype(str)
# ์ ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฅผ Excel๋ก ์ ์ฅ
df.to_excel("cleaned_sales_data.xlsx", index=False)
๊ฒฐ๊ณผ์ ์ผ๋ก, ๋ถ์๊ณผ ๋ณด๊ณ ์ ์์ฑ์ ์ ํฉํ ๊น๋ํ๊ณ ์ ๋ฆฌ๋ Excel ํ์ผ์ ์ป๊ฒ ๋ ๊ฑฐ์ผ.
4. ๋ฐ์ดํฐ ์ ๋ฆฌ ์์ ์์ ํํ ์ค์
์ ์ ์ ํ ์๋ฆฌ์ ๋ง์ฐฌ๊ฐ์ง๋ก, ๋ฐ์ดํฐ ์์ ์์๋ ์ค์๊ฐ ์๊ธธ ์ ์์ด. ๋ค์์ ํผํด์ผ ํ ๋ช ๊ฐ์ง ํํ ์ค์์ผ:
์ ์ฉํ ์ ๋ณด๋ฅผ ์ค๋ณต ๋ฐ์ดํฐ์ ํจ๊ป ์ญ์ ํ๋ ๊ฒฝ์ฐ. ๋๋ก๋ ์ค๋ณต ๋ฐ์ดํฐ๊ฐ ๋ฐ์ดํฐ ์ค๋ฅ์ ์ ํธ์ผ ์ ์์ผ๋ฉฐ, ๊ทธ๋ค์ ์์ธ์ ์ดํด๋ณด๋ ๊ฒ์ด ์ข์. ๋ฐ์ดํฐ ํ์ ํผ๋. ํ์ ๋ณํ์ด ๊ฐ๋จํด ๋ณด์ผ ๋๋ ์์ง๋ง, ๋ณํ์ด ํ์ฉ ๊ฐ๋ฅํ์ง ํ์ธํ์ง ์์ผ๋ฉด ๋ฐ์ดํฐ ์์ค๋ก ์ด์ด์ง ์ ์์ด.
์ด ํ๋ค์ ๋ฐ๋ฅด๊ณ ์ ์๋ ๋จ๊ณ๋ฅผ ์ํํ๋ฉด, ๋ฐ์ดํฐ์ ์นํ๊ฒ ์ง๋ผ ์ ์๊ณ , ์ฌ์ง์ด ๊ฐ์ฅ ๋์ฐํ ๋ถ์๊ฐ์ ์ ๋ชฝ์ฒ๋ผ ๋ณด์ด๋ ๋ฐ์ดํฐ๋ ๋ค๋ฃฐ ์ ์์ ๊ฑฐ์ผ. ๊ทธ๋ฆฌ๊ณ ๊ธฐ์ตํด, ๋ฐ์ดํฐ์ ๋น์ ์ ์ฝ๋ ๋ชจ๋ ๊นจ๋ํด์ผ ํด!
GO TO FULL VERSION