CodeGym /์ž๋ฐ” ์ฝ”์Šค /Python SELF KO /๋ฐ์ดํ„ฐ ํฌ๋งทํŒ…๊ณผ ํ…Œ์ด๋ธ”์—์„œ ๋ถˆํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๋ฐฉ๋ฒ•

๋ฐ์ดํ„ฐ ํฌ๋งทํŒ…๊ณผ ํ…Œ์ด๋ธ”์—์„œ ๋ถˆํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๋ฐฉ๋ฒ•

Python SELF KO
๋ ˆ๋ฒจ 28 , ๋ ˆ์Šจ 2
์‚ฌ์šฉ ๊ฐ€๋Šฅ

1. ์™œ ํ•„์š”ํ•œ๊ฐ€?

๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ณต์žฅ์˜ ์—”์ง€๋‹ˆ์–ด๋ผ๊ณ  ์ƒ์ƒํ•ด๋ด. ์ด์ œ ๋‹น์‹ ์€ ์›์ž์žฌ(๋ฐ์ดํ„ฐ)๋ฅผ ๋ถ„์„ํ•˜๊ณ  ์ •๋ฆฌํ•ด์„œ ์ตœ์ข… ์ œํ’ˆ(ํ†ต์ฐฐ, ๋ณด๊ณ ์„œ)์„ ๋งŒ๋“ค์–ด์•ผ ํ•ด. ์ •๋ฆฌ์™€ ํฌ๋งทํŒ…์ด ์—†์œผ๋ฉด ๋ฐ์ดํ„ฐ๋Š” ์—ฌ๊ธฐ์ €๊ธฐ ๋„๋ธŒ๋Ÿฌ์ง„ ๋ถ€ํ’ˆ์ฒ˜๋Ÿผ ๋‚จ์•„์„œ ์กฐ๋ฆฝํ•˜๊ธฐ ์–ด๋ ต๊ฒŒ ๋˜์ง€.

๊นจ๋—ํ•˜๊ณ  ํฌ๋งทํŒ…๋œ ๋ฐ์ดํ„ฐ๋Š” ๋‹จ์ˆœํžˆ ๋ณด๊ธฐ ์ข‹๊ณ  ์ฝ๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ ์ •ํ™•ํ•œ ๋ถ„์„๊ณผ ๋ชจ๋ธ ๊ตฌ์ถ•์˜ ์ค‘์š”ํ•œ ์กฐ๊ฑด์ด์•ผ. ์ž˜๋ชป ์ฒ˜๋ฆฌ๋œ ๋ฐ์ดํ„ฐ๋Š” ์ž˜๋ชป๋œ ๊ฒฐ๋ก ์„ ์ดˆ๋ž˜ํ•  ์ˆ˜๋„ ์žˆ๊ณ , ํ•˜๋ฃจ ์ผ์„ ๋งˆ์น  ๋•Œ๊ฐ€ ๋ผ์„œ์•ผ ์ง์›๋“ค์˜ ํ‰๊ท  ์—ฐ๋ น์„ ์—ฐ๋„๋กœ๊ฐ€ ์•„๋‹ˆ๋ผ ๋ฐ์ดํ„ฐ ํŒŒํŽธ์œผ๋กœ ๊ณ„์‚ฐํ–ˆ๋‹ค๋Š” ๊ฑธ ๊นจ๋‹ซ๊ฒŒ ๋˜๋Š” ๊ทธ๋Ÿฐ ์ƒํ™ฉ์€ ๋ˆ„๊ตฌ๋„ ์›ํ•˜์ง€ ์•Š์ž–์•„.

ํฌ๋งทํŒ…์˜ ์ฃผ์š” ๋ชฉํ‘œ

์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์ „์— ํฌ๋งทํŒ…์„ ํ†ตํ•ด ์šฐ๋ฆฌ๊ฐ€ ํ•ด๊ฒฐํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ์‚ดํŽด๋ณด์ž:

  • ๋นˆ ํ–‰๊ณผ ์—ด ์ œ๊ฑฐ: ๋นˆ ์ฃผ๋จธ๋‹ˆ์ฒ˜๋Ÿผ ์•„๋ฌด๋Ÿฐ ์ด์ต๋„ ์—†์ง€๋งŒ ์‰ฝ๊ฒŒ ํ˜ผ๋ž€์„ ์ค€๋‹ค.
  • ์ค‘๋ณต ์ œ๊ฑฐ: ๋ฐ˜๋ณต๋˜๋Š” ๋ฐ์ดํ„ฐ๋Š” ๋…ธ์ด์ฆˆ๋ฅผ ์ผ์œผํ‚จ๋‹ค.
  • ๋ˆ„๋ฝ๋œ ๊ฐ’ ์ฑ„์šฐ๊ธฐ: ์น˜์ฆˆ์˜ ๊ตฌ๋ฉ์„ ์ฑ„์šฐ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋•Œ๋กœ๋Š” ๋ง›์žˆ๋Š” ๋ฌด์–ธ๊ฐ€๋กœ ์ฑ„์›Œ์•ผ ํ•ด.
  • ๋ฐ์ดํ„ฐ ํƒ€์ž… ๋ณ€ํ™˜: ๋‚˜์ด๋Š” ์ˆซ์ž์—ฌ์•ผ ํ•˜๊ณ  ํ…์ŠคํŠธ๊ฐ€ ๋˜๋ฉด ์•ˆ ๋œ๋‹ค๋Š” ๊ฑธ ํ™•์ธํ•˜๋Š” ๊ฒŒ ์ค‘์š”ํ•ด. "25๋…„ ๊ฒฝ๋ ฅ"๊ณผ ๊ฐ™์€ ํ…์ŠคํŠธ์™€ ํ˜ผ๋™ํ•˜์ง€ ์•Š๋„๋ก.

2. ๋ฐ์ดํ„ฐ ์ •๋ฆฌ์™€ ํฌ๋งทํŒ…์„ ์œ„ํ•œ ๋„๊ตฌ

์ด์ œ ์™œ ์ด๊ฒŒ ํ•„์š”ํ•œ์ง€ ์•Œ์•˜์œผ๋‹ˆ, ์ด ์ž‘์—…์„ ๋„์™€์ค„ ๋„๊ตฌ๋“ค์„ ์‚ดํŽด๋ณด์ž. ๋งˆ์น˜ ํ•˜์ดํ‚น์—์„œ ์Šค์œ„์Šค ์•„๋ฏธ ๋‚˜์ดํ”„ ๊ฐ™์€ ์กด์žฌ๋“ค์ด์•ผ:

  • ๋นˆ ๊ฐ’ ์ œ๊ฑฐ: dropna()
  • ์ค‘๋ณต ์ฒ˜๋ฆฌ: duplicated() ์™€ drop_duplicates()
  • ๋ˆ„๋ฝ๋œ ๊ฐ’ ์ฑ„์šฐ๊ธฐ: fillna()
  • ๋ฐ์ดํ„ฐ ํƒ€์ž… ๋ณ€ํ™˜: astype()

๋นˆ ๊ฐ’ ์ œ๊ฑฐ

๋นˆ ๊ฐ’์€ ํ•ญ์ƒ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์ˆœ๊ฐ„์— ๋‚˜ํƒ€๋‚˜๋Š” ๊ฒƒ ์ค‘ ํ•˜๋‚˜์•ผ. dropna()๋กœ ๋ถˆํ•„์š”ํ•œ ๊ฒƒ๋“ค์„ ์˜ค๋ž˜๋œ ๋‚ก์€ ์–‘๋ง์ฒ˜๋Ÿผ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์–ด. ์˜ˆ์ œ๋ฅผ ๋ณด์ž:

Python

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()๋กœ ๊ฑธ๋Ÿฌ๋‚ผ ์ˆ˜ ์žˆ์–ด.

Python

# ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š” DataFrame ์ƒ์„ฑ
data = {'์ด๋ฆ„': ['์•ˆ๋‚˜', '์ด๋ฐ˜', '์•ˆ๋‚˜', '๋งˆ๋ฆฌ์•„'],
        '๋‚˜์ด': [29, 34, 29, 23]}

df = pd.DataFrame(data)

# ์ค‘๋ณต๋œ ํ–‰ ์‚ญ์ œ
unique_df = df.drop_duplicates()

print(unique_df)

๋ˆ„๋ฝ๋œ ๊ฐ’ ์ฑ„์šฐ๊ธฐ

๋ˆ„๋ฝ๋œ ๊ฐ’์„ ์ฑ„์šฐ๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์–‘ํ•ด. ์˜ˆ๋ฅผ ๋“ค์–ด ํ‰๊ท  ๊ฐ’์ด๋‚˜ ๊ณ ์ •๋œ ๊ฐ’์œผ๋กœ ์ฑ„์šธ ์ˆ˜ ์žˆ์–ด. fillna()๊ฐ€ ๊ทธ๊ฒƒ์„ ๋„์™€์ค„ ๊ฑฐ์•ผ:

Python

# '๋‚˜์ด' ์—ด์˜ ๋ˆ„๋ฝ๋œ ๊ฐ’์„ ํ‰๊ท ๊ฐ’์œผ๋กœ ์ฑ„์šฐ๊ธฐ
df['๋‚˜์ด'] = df['๋‚˜์ด'].fillna(df['๋‚˜์ด'].mean())

print(df)

๋ฐ์ดํ„ฐ ํƒ€์ž… ๋ณ€ํ™˜

๋ฐ์ดํ„ฐ ๋ณ€ํ™˜์€ ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ๊ฐ€ ์˜ˆ์ƒ๋˜๋Š” ์ˆซ์ž ์ž๋ฆฌ์—์„œ ๋‚˜์˜ค๋Š” ๊ฑธ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•  ๋•Œ๊ฐ€ ์žˆ์–ด:

Python

# '๋‚˜์ด' ์—ด์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์ •์ˆ˜๋กœ ๋ณ€ํ™˜
df['๋‚˜์ด'] = df['๋‚˜์ด'].astype(int)

print(df)

3. ์‹ค์ œ ๋ฐ์ดํ„ฐ์…‹ ์ •๋ฆฌ: ์˜ˆ์ œ

์ด์ œ ๊ฐ€์ƒ์˜ Excel ํŒŒ์ผ๋กœ ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ฆฌํ•˜๊ณ  ํฌ๋งทํŒ…ํ•ด๋ณด์ž. ํŒ๋งค ์ •๋ณด๊ฐ€ ๋‹ด๊ธด ๋ฐ์ดํ„ฐ๋กœ ์ž‘์—…ํ•ด๋ณผ๊ฒŒ.

Python

# 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. ๋ฐ์ดํ„ฐ ์ •๋ฆฌ ์ž‘์—…์—์„œ ํ”ํ•œ ์‹ค์ˆ˜

์ „์ž ์ œํ’ˆ ์ˆ˜๋ฆฌ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ๋ฐ์ดํ„ฐ ์ž‘์—…์—์„œ๋„ ์‹ค์ˆ˜๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ์–ด. ๋‹ค์Œ์€ ํ”ผํ•ด์•ผ ํ•  ๋ช‡ ๊ฐ€์ง€ ํ”ํ•œ ์‹ค์ˆ˜์•ผ:

์œ ์šฉํ•œ ์ •๋ณด๋ฅผ ์ค‘๋ณต ๋ฐ์ดํ„ฐ์™€ ํ•จ๊ป˜ ์‚ญ์ œํ•˜๋Š” ๊ฒฝ์šฐ. ๋•Œ๋กœ๋Š” ์ค‘๋ณต ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ์ดํ„ฐ ์˜ค๋ฅ˜์˜ ์‹ ํ˜ธ์ผ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ทธ๋“ค์˜ ์›์ธ์„ ์‚ดํŽด๋ณด๋Š” ๊ฒƒ์ด ์ข‹์•„. ๋ฐ์ดํ„ฐ ํƒ€์ž… ํ˜ผ๋™. ํ˜•์‹ ๋ณ€ํ™˜์ด ๊ฐ„๋‹จํ•ด ๋ณด์ผ ๋•Œ๋„ ์žˆ์ง€๋งŒ, ๋ณ€ํ™˜์ด ํ—ˆ์šฉ ๊ฐ€๋Šฅํ•œ์ง€ ํ™•์ธํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฐ์ดํ„ฐ ์†์‹ค๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ์–ด.

์ด ํŒ๋“ค์„ ๋”ฐ๋ฅด๊ณ  ์ œ์•ˆ๋œ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด, ๋ฐ์ดํ„ฐ์™€ ์นœํ•˜๊ฒŒ ์ง€๋‚ผ ์ˆ˜ ์žˆ๊ณ , ์‹ฌ์ง€์–ด ๊ฐ€์žฅ ๋”์ฐํ•œ ๋ถ„์„๊ฐ€์˜ ์•…๋ชฝ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ๋ฐ์ดํ„ฐ๋„ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์„ ๊ฑฐ์•ผ. ๊ทธ๋ฆฌ๊ณ  ๊ธฐ์–ตํ•ด, ๋ฐ์ดํ„ฐ์™€ ๋‹น์‹ ์˜ ์ฝ”๋“œ ๋ชจ๋‘ ๊นจ๋—ํ•ด์•ผ ํ•ด!

์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION