๐Ÿ Python

[Python]๋ฐ์ดํ„ฐ ์ •๊ทœํ™”์™€ ๊ฒฐ์ธก์น˜ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ

yeun.log 2024. 6. 18. 21:27
๋ฐ˜์‘ํ˜•

 

๋ฐ์ดํ„ฐ ์ •๊ทœํ™”

  • dataFrame ์„ค๊ณ„์—์„œ ์ค‘๋ณต ์ตœ์†Œํ™”→๋ฌด๊ฒฐ์„ฑ์„ ๊ฐ•ํ™”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์กฐํ™”ํ•˜๋Š” process.
  • dataFrame์˜ ์ •๊ทœํ™” ๋ชฉํ‘œ
    : ์ด์ƒ์ด ์žˆ๋Š” ๊ด€๊ณ„๋ฅผ ์žฌ๊ตฌ์„ฑํ•˜์—ฌ ์ž‘๊ณ  ์ž˜ ์กฐ์ง๋œ ๊ด€๊ณ„๋ฅผ ์ƒ์„ฑ.

๋ฐ์ดํ„ฐ ๋ถ„์„
  • ์ˆ˜์ง‘๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํŒจํ„ด์„ ์ถ”์ถœํ•˜๊ณ  ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ถ„์„ํ•˜์—ฌ ํ™œ์šฉ๊ฐ€์น˜๋ฅผ ํŒ๋‹จํ•œ๋‹ค.
  • ๋ฐ์ดํ„ฐ์— ์ค‘๋ณต์ด๋‚˜ ๋ˆ„๋ฝ ๋“ฑ์˜ ๊ฒฐํ•จ์ด ์žˆ์œผ๋ฉด ์‹ ๋ขฐ์„ฑ์ด ๋–จ์–ด์ง€๋ฏ€๋กœ ๋ฐ์ดํ„ฐ ์ •๊ทœํ™”๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

๋ฐ์ดํ„ฐ ๋ถ„์„ ์ •ํ™•๋„
  • ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์‹ ๋ขฐ์„ฑ์€ ์ˆ˜์ง‘๋œ ๋ฐ์ดํ„ฐ์˜ ํ’ˆ์งˆ์— ๋”ฐ๋ผ ๊ฒฐ์ •.
  • ๋ฐ์ดํ„ฐ์˜ ํ’ˆ์งˆ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ฒฐ์ธก์น˜(๋ˆ„๋ฝ ๋ฐ์ดํ„ฐ) ํ™•์ธ๊ณผ ์ค‘๋ณต ๋ฐ์ดํ„ฐ์˜ ์ œ๊ฑฐ ๋“ฑ ์˜ค๋ฅ˜๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์ณ์•ผ ํ•œ๋‹ค.

NaN
Not a Number
๋ˆ„๋ฝ ๋ฐ์ดํ„ฐ
  • ๋ฐ์ดํ„ฐ ๊ฐ’์ด ์กด์žฌํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ๋ˆ„๋ฝ๋œ ๋ฐ์ดํ„ฐ.
  • 0, ?, - ๊ณผ ๊ฐ™์ด ํ‘œ๊ธฐ๋˜๊ธฐ๋„ ํ•˜๋Š”๋ฐ ์ด๋Ÿด ๊ฒฝ์šฐ

์ด๋Ÿฐ ์‹์œผ๋กœ replace๋ณ€ํ™˜ ํ•ด์ค€๋‹ค.
df.info()๋กœ NaN๋ฐ์ดํ„ฐ๊ฐ€ ๋ช‡๊ฐœ์ธ ์ง€ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค.


df.value_count(dropna=False)
→ NaN๊ณผ ๊ณ ์œ ๊ฐ’ ๊ฐœ์ˆ˜ ์ถœ๋ ฅ.


df.isnull().sum()
→ ๊ฐ ์—ด์˜ ๊ฒฐ์ธก์น˜ ๊ฐœ์ˆ˜ ์ถœ๋ ฅ.

isnull()๋งŒ ์‚ฌ์šฉํ–ˆ์„ ๊ฒฝ์šฐ null์ด๋ฉด True๋กœ ํ‘œํ˜„๋œ๋‹ค.
.sum()์„ ๋ถ™์—ฌ์ฃผ๋ฉด null์ธ ๊ฐฏ์ˆ˜ ํ•ฉ๊ณ„๋ฅผ ๋ณด์—ฌ์ค€๋‹ค.


df['์ปฌ๋Ÿผ๋ช…'].fillna(์น˜ํ™˜data, inplace=True)
→ ๊ฒฐ์ธก์น˜ ๋ฐ์ดํ„ฐ๋ฅผ ์น˜ํ™˜.
fill nan
  • ๊ฒฐ์ธก์น˜๋ฅผ ๋ฌด์ž‘์ • ์‚ญ์ œํ•œ๋‹ค๋ฉด ๋ถ„์„ํ•  ๋ฐ์ดํ„ฐ๊ฐ€ ๋„ˆ๋ฌด ์ ์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค.
  • ๋ณดํ†ต ๋ฐ์ดํ„ฐ์˜ ๋ถ„ํฌ์™€ ํŠน์„ฑ์„ ์ž˜ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋Š” ํ‰๊ท ๊ฐ’, ์ตœ๋นˆ๊ฐ’(๊ฐ€์žฅ ๋งŽ์ด ๋‚˜์˜จ ๊ฐ’), ์ค‘๊ฐ„๊ฐ’ ๋“ฑ์œผ๋กœ ์น˜ํ™˜ํ•œ๋‹ค.
  • df['์ปฌ๋Ÿผ๋ช…'].fillna(์น˜ํ™˜data, inplace=True)
    → ์›๋ณธ ๊ฐ์ฒด๋„ ๊ฐ™์ด ๋ณ€๊ฒฝ.

df์˜ ์—ฐ๋ น ์ปฌ๋Ÿผ์—๋Š” ์œ„์™€ ๊ฐ™์ด NaN๊ฒฐ์ธก์น˜๋“ค์ด ์กด์žฌํ•˜๋Š”๋ฐ ํ‰๊ท ๊ฐ’ ๊ตฌํ•ด์„œ
fillna()๋ฅผ ์ด์šฉํ•ด ์น˜ํ™˜ํ•ด์ค€๋‹ค.


df.loc['ํ–‰', '์—ด'] = ์›์†Œ๊ฐ’
→ ๊ฒฐ์ธก์น˜๋ฅผ ํŠน์ • ์›์†Œ๊ฐ’์œผ๋กœ ์น˜ํ™˜.


df.fillna(0).iloc[ํ–‰, ์—ด]
→ NaN๊ฐ’์„ ๋ชจ๋‘ 0์œผ๋กœ ์น˜ํ™˜.

๋ฐ˜์˜ํ•˜๋ ค๋ฉด df = ์ด๋Ÿฐ ์‹์œผ๋กœ ๋Œ€์ž…์‹œ์ผœ์„œ ๋‹ด์œผ๋ฉด ๋œ๋‹ค.


 df.fillna(method='ffill').iloc[ํ–‰, ์—ด]
→ ์•ž ํ–‰์˜ ๊ฐ’์œผ๋กœ ์น˜ํ™˜.

์œ— ๋ถ€๋ถ„์— null์ด ์—†๋Š” ๋ฐ์ดํ„ฐ์—์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•จ. ์•ˆ๊ทธ๋Ÿผ ์œ„์˜ 0๋ฒˆ์งธ 2,3์ฐจ์ฒ˜๋Ÿผ null์ด ๋ฐœ์ƒ.


df.fillna(method='bfill').iloc[ํ–‰, ์—ด]
→ ๋’ค ํ–‰์˜ ๊ฐ’์œผ๋กœ ์น˜ํ™˜.

๋‹น์—ฐํžˆ ์œ„์™€ ๋ฐ˜๋Œ€๋กœ ์•„๋ž˜ ๊ฐ’์ด ๋น„์–ด์žˆ์Œ ์•ˆ๋œ๋‹ค.


df.interpolate().iloc[ํ–‰, ์—ด]
→ ์•ž ๋’ค ์–‘์ชฝ ํ–‰์˜ ์ค‘๊ฐ„๊ฐ’์œผ๋กœ ์น˜ํ™˜.

์œ„์— ๊ฐ’์ด ์—†๋˜ ๊ณณ๋“ค์€ ์—ฌ์ „ํžˆ null๋กœ ๋œฌ๋‹ค.

 

๋ฐ˜์‘ํ˜•