๋ฉ‹์Ÿ์ด์‚ฌ์ž์ฒ˜๋Ÿผ เป’(โŠ™แด—โŠ™)เฅญโœŽ

[๋ฉ‹์Ÿ์ด์‚ฌ์ž์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐ๋ถ„์„ ๋ถ€ํŠธ์บ ํ”„ 5๊ธฐ] ๋ฐ์ดํ„ฐ ๋ถ„์„์„ ์œ„ํ•œ ์ „์ฒ˜๋ฆฌ ๊ณผ์ • ์•Œ์•„๋ณด๊ธฐ

๊ฐ์ž์Šˆ๋‹ˆ 2025. 5. 9. 13:26

0. ํ•™์Šต๋ชฉํ‘œ

- ๋ฐ์ดํ„ฐ ๋ถ„์„์„ ์œ„ํ•œ ๋Œ€ํ‘œ์ ์ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ Pandas, Numpy, scipy... ์‚ฌ์šฉ์— ์ต์ˆ™ํ•ด ์ง€๋Š” ๊ฒƒ
- ์กฐ๊ฑด์— ํ•ด๋‹นํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ง‰ํž˜์—†์ด ์ถ”์ถœํ•˜๊ธฐ

 


1. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ์ „ ๊ฐ€์žฅ ๋จผ์ € ์ˆ˜ํ–‰ํ•ด์•ผ ํ•  ๊ฒƒ์€
๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
์ด๋‹ค.

import pandas as pd
import numpy as np

 

๊ตฌ๋ถ„ Pandas Numpy
๐Ÿ” ์ฃผ์š” ๋ชฉ์  ํ‘œ ํ˜•ํƒœ(tabular data) ๋‹ค๋ฃจ๊ธฐ (์—‘์…€ ๋А๋‚Œ) ํ–‰๋ ฌ ๋‹ค๋ฃจ๋“ฏ์ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌ
๐Ÿ“ฆ ์ฃผ์š” ๊ฐ์ฒด DataFrame, Series ndarray (N-dimensional array)
๐Ÿ“ ๊ตฌ์กฐ ์—ด(column) ์ด๋ฆ„๊ณผ ํ–‰(row) ์ธ๋ฑ์Šค๋ฅผ ๊ฐ€์ง ์ˆซ์ž๋งŒ ์žˆ๋Š” ๋‹ค์ฐจ์› ๋ฐฐ์—ด
โšก ์„ฑ๋Šฅ ๋น„๊ต์  ๋А๋ฆผ (ํ•˜์ง€๋งŒ ์œ ์—ฐํ•จ) ๋งค์šฐ ๋น ๋ฆ„ (C๊ธฐ๋ฐ˜, ๋ฒกํ„ฐํ™” ์—ฐ์‚ฐ)

 


2. ๋ฐ์ดํ„ฐ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

df1 = pd.read_csv('csv ํŒŒ์ผ ๊ฒฝ๋กœ', encoding = 'euc-kr')
df1

์œ„ ์ฝ”๋“œ๋Š” csv ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ ์ฝ”๋“œ์ด๋‹ค.
ํ•œ๊ธ€์ด ์žˆ๋Š” ํŒŒ์ผ์€ ๋ถˆ๋Ÿฌ์˜ค๋ฉด์„œ ๊นจ์งˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— encoding = 'euc-kr'์„ ๋ถ™์—ฌ์ฃผ๋ฉด ๊นจ์ง€์ง€ ์•Š๋Š”๋‹ค.

๋งŒ์•ฝ ๋‹ค๋ฅธ ํฌ๋ฉง๋“ค๋„ ๋ถˆ๋Ÿฌ์˜ค๊ณ  ์‹ถ๋‹ค๋ฉด ์•„๋ž˜ ํ‘œ ์ฐธ๊ณ 

ํ•จ์ˆ˜ ์ฝ๋Š” ํŒŒ์ผ ํ˜•์‹ ์˜ˆ์‹œ ํŒŒ์ผ๋ช… ์„ค๋ช…
pd.read_csv() CSV ํŒŒ์ผ 'data.csv' ์ฝค๋งˆ(,)๋กœ ๊ตฌ๋ถ„๋œ ํ…์ŠคํŠธ ํŒŒ์ผ
pd.read_excel() Excel ํŒŒ์ผ (.xlsx, .xls) 'data.xlsx' ์—‘์…€ ์‹œํŠธ ๋ฐ์ดํ„ฐ
pd.read_json() JSON ํŒŒ์ผ 'data.json' ๋”•์…”๋„ˆ๋ฆฌ/๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ ๋ฐ์ดํ„ฐ
pd.read_html() HTML ํ…Œ์ด๋ธ” 'http://example.com' ์›นํŽ˜์ด์ง€์— ์žˆ๋Š” ํ…Œ์ด๋ธ” ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
pd.read_sql() SQL ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ SQL ์—ฐ๊ฒฐ ํ•„์š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ

 


3.  reindex, loc, iloc ๋ณต์Šตํ•˜๊ธฐ

์˜ˆ์ œ๋ฅผ ์—ฐ์Šตํ•  ๋ฐ์ดํ„ฐ ํ”„๋ ˆ์ž„(df1)์€ ํ•™์ƒ๋“ค์˜ ๊ธฐ๋ณธ ์ •๋ณด์™€ ๊ณผ๋ชฉ๋ณ„ ์„ฑ์  ๋ฐ์ดํ„ฐ์ด๋‹ค.


์˜ˆ์ œ1) ์ปฌ๋Ÿผ ์ˆœ์„œ๋ฅผ ๊ณผํ•™, ์ˆ˜ํ•™, ์˜์–ด, ๊ตญ์–ด, ์„ฑ๋ณ„, ํ•™๋…„, ์ด๋ฆ„ ์ˆœ์œผ๋กœ ๋ฐ”๊พธ์–ด๋ผ.

โžก๏ธ reindex ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์ž

๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„.reindex(columns = [์ปฌ๋Ÿผ1, ์ปฌ๋Ÿผ2, ์ปฌ๋Ÿผ3,......])

df2 = df1.reindex(columns = ['๊ณผํ•™', '์ˆ˜ํ•™', '์˜์–ด', '๊ตญ์–ด', '์„ฑ๋ณ„', 'ํ•™๋…„', '์ด๋ฆ„'])
df2


์˜ˆ์ œ 1-1)

๊ทธ๋Ÿผ ์—ฌ๊ธฐ์„œ columns = [ ์—ฌ๊ธฐ์— ๊ธฐ์กด ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„ ์ปฌ๋Ÿผ๋ช…์„ ๋‹ค ์“ฐ์ง€ ์•Š๊ณ  ์ผ๋ถ€๋งŒ ๋„ฃ๋Š”๋‹ค๋ฉด] ์–ด๋–ป๊ฒŒ ๋ ๊นŒ?
๊ตญ์–ด, ์˜์–ด, ์ˆ˜ํ•™ ์ปฌ๋Ÿผ๋งŒ ๋„ฃ๊ณ  ์ถœ๋ ฅํ•ด๋ณด์ž.

df3 = df1.reindex(columns = ['๊ตญ์–ด', '์˜์–ด', '์ˆ˜ํ•™'])
df3


๊ทธ๋Ÿผ ์ •ํ™•ํžˆ ๊ตญ์–ด, ์˜์–ด, ์ˆ˜ํ•™ ์ปฌ๋Ÿผ๋งŒ ๋ฝ‘ํžŒ๋‹ค.
reindex๋Š” ์›ํ•˜๋Š” ์ปฌ๋Ÿผ๋งŒ ์ถ”์ถœ ํ•  ๋•Œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.


 

์˜ˆ์ œ2) ์ธ๋ฑ์Šค๊ฐ€ 0, 2, 4์ธ ๋ฐ์ดํ„ฐ๋งŒ ๊ฐ€์ ธ์˜ค๊ธฐ

โžก๏ธ ์ธ๋ฑ์Šค์— ์ ‘๊ทผํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ๋Š” loc[] ์„ ์‚ฌ์šฉํ•œ๋‹ค.
๊ฐ€์ ธ์˜ฌ ์ธ๋ฑ์Šค๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ์ด๊ธฐ ๋•Œ๋ฌธ์— [0, 2, 4] ๋ฆฌ์ŠคํŠธ๋กœ ํ•œ ๋ฒˆ ๋ฌถ์–ด์„œ loc[]์— ๋„ฃ์–ด์ค€๋‹ค.

df2 = df1.loc[[0, 2, 4]]
df2

 

โญ๏ธ ๊ผญ ์•Œ๊ณ ๊ฐ€์ž !!

์ธ๋ฑ์Šค๋Š” ์ˆœ์„œ๊ฐ’์ด ์•„๋‹ˆ๋‹ค โŒโŒโŒ
๊ฐ ํ–‰์„ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ ์‹๋ณ„์ž์ด๋‹ค.๐Ÿ™†‍โ™‚๏ธ๐Ÿ™†‍โ™‚๏ธ๐Ÿ™†‍โ™‚๏ธ


 

์˜ˆ์ œ3) ํ–‰์˜ ๋‚˜์—ด๋œ ์ˆœ์„œ๊ฐ€ 3, 1, 2 ๋ฒˆ์งธ์— ์žˆ๋Š” ์ˆœ์„œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ

โžก๏ธ ์ˆœ์„œ๊ฐ’์— ์ ‘๊ทผํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ๋Š” iloc[] ์„ ์‚ฌ์šฉํ•œ๋‹ค.

ํ˜„์žฌ ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์˜ ์ธ๋ฑ์Šค๊ฐ€ ํ–‰ ์ˆœ์„œ๋Œ€๋กœ ์ ์šฉ๋˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—,
์ธ๋ฑ์Šค๋ฅผ '์ด๋ฆ„'์œผ๋กœ ์žฌ์„ค์ • ํ•˜๊ณ  ํ•ด๋‹น ์˜ˆ์ œ๋ฅผ ํ’€ ๊ฒƒ์ด๋‹ค.

์œ„์˜ ๊ฒฝ์šฐ 3๋ฒˆ์งธ-1๋ฒˆ์งธ-2๋ฒˆ์งธ ์ˆœ์„œ๋ผ๋ฉด ์ˆ˜ํ˜„-์˜ํฌ-๋ฏผ์ˆ˜ ์ˆœ์„œ๋กœ ์ถœ๋ ฅ๋˜์–ด์•ผ ํ•œ๋‹ค.

df3 = df1.iloc[[3, 1, 2]]
df3

 


4. filter ์‚ฌ์šฉํ•˜๊ธฐ

์˜ˆ์ œ4) ์ด๋ฆ„, ๊ตญ์–ด, ์˜์–ด ์ปฌ๋Ÿผ๋งŒ ํ•„ํ„ฐ๋ง ํ•ด์˜ค๊ธฐ

โžก๏ธ filter() ๋ฅผ ์‚ฌ์šฉํ•˜์ž

df2 = df1.filter(['์ด๋ฆ„', '๊ตญ์–ด', '์˜์–ด'])
display(df2)

๐Ÿ’ญ ์ง€๊ธˆ๋ณด๋‹ˆ ์ปฌ๋Ÿผ๋ช…์œผ๋กœ ์›ํ•˜๋Š” ์ปฌ๋Ÿผ์„ ์ถ”์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๊ต‰์žฅํžˆ ๋งŽ๋‹ค.


์˜ˆ์ œ5) ์ธ๋ฑ์Šค๊ฐ€ 3, 0, 2, 8์ธ ํ–‰์„ ๊ฐ€์ ธ์˜ค๊ธฐ (8์€ ์—†๋Š” ์ธ๋ฑ์Šค โ—๏ธ)

โžก๏ธ filter() ์—์„œ ์˜ต์…˜์œผ๋กœ axis = 0 ์„ ๋„ฃ์–ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

df3 = df1.filter([3, 0, 2, 8], axis = 0)
display(df3)

์—†๋Š” ์ธ๋ฑ์Šค์ธ 8์€ ๋ฌด์‹œํ•˜๊ณ , 3, 0, 2 ์ธ๋ฑ์Šค๋งŒ ๊ฐ€์ ธ์˜จ๋‹ค.


์ฐธ๊ณ  !!
loc[], iloc[] ์—์„œ ์—†๋Š” ์ธ๋ฑ์Šค/์ˆœ์„œ๊ฐ’์„ ๋„ฃ์œผ๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋‚˜์ง€๋งŒ
filter() ์—์„œ๋Š” ์˜ค๋ฅ˜๊ฐ€ ๋‚˜์ง€ ์•Š๋Š”๋‹ค.


5. ๋ฐ์ดํ„ฐ ์ •๋ ฌํ•˜๊ธฐ

sort_values() ์‚ฌ์šฉ

์˜ˆ์ œ6) '๊ตญ์–ด' ์ปฌ๋Ÿผ์„ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•˜๊ธฐ

โžก๏ธ sort_values()์˜ ๋””ํดํŠธ ๊ฐ’์€ "์˜ค๋ฆ„์ฐจ์ˆœ" ์ด๋‹ค.
๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ascending = False ์˜ต์…˜์„ ๋„ฃ๋Š”๋‹ค.

df2 = df1.copy()

df2.sort_values('๊ตญ์–ด', inplace = True)

display(df1)
display(df2)

๊ตญ์–ด ์ ์ˆ˜๊ฐ€ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ ๊ฒƒ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค.


์˜ˆ์ œ7) ์„ฑ๋ณ„์„ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ(๋‚จ์ž๊ฐ€ 0, ์—ฌ์ž๊ฐ€ 1) ์ •๋ ฌ ํ•˜๊ณ , ๊ฐ™์€ ์„ฑ๋ณ„ ๋‚ด์—์„œ ๊ตญ์–ด ์„ฑ์ ์ด ๋†’์€ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌํ•˜์—ฌ๋ผ.

์„ฑ๋ณ„ ์ปฌ๋Ÿผ์œผ๋กœ ์šฐ์„  ์ •๋ ฌํ•œ ํ›„ ๊ตญ์–ด๋ฅผ ์ •๋ ฌํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ['์„ฑ์ ', '๊ตญ์–ด'] ์ˆœ์œผ๋กœ ์ ‘๊ทผํ•œ๋‹ค.
์„ฑ๋ณ„์€ ์˜ค๋ฆ„์ฐจ์ˆœ, ๊ตญ์–ด๋Š” ๋‚ด๋ฆผ์ฐจ์ˆœ ์ด๊ธฐ ๋•Œ๋ฌธ์— ์˜ต์…˜์œผ๋กœ ascending = [True, False] ๋ฅผ ์ค˜์•ผํ•œ๋‹ค.

df2 = df1.copy()

df2.sort_values(['์„ฑ๋ณ„', '๊ตญ์–ด'], inplace=True, ascending = [True, False])

display(df1)
display(df2)

 

์„ฑ๋ณ„์€ ๋‚จ์ž(0) -> ์—ฌ์ž (1) ์˜ค๋ฆ„์ฐจ์ˆœ ๋˜์—ˆ๊ณ ,
๊ตญ์–ด๋Š” ๊ฐ๊ฐ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ ๋˜์—ˆ๋‹ค.


์˜ˆ์ œ8) ์ธ๋ฑ์Šค๊ฐ€ '์ด๋ฆ„'์ผ ๋•Œ, ์ธ๋ฑ์Šค๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•˜์—ฌ๋ผ.

โžก๏ธ sort_index() ๋ฅผ ์‚ฌ์šฉํ•˜์ž.

# ์›๋ณธ ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์„ ํ›ผ์†ํ•˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด copy ๋– ์ฃผ๊ธฐ
df2 = df1.copy()
# ์ธ๋ฑ์Šค๋ฅผ ์ด๋ฆ„์œผ๋กœ ์„ค์ •
df3 = df2.set_index('์ด๋ฆ„')

df3.sort_index()


ํ•œ๊ธ€ ๊ฐ€๋‚˜๋‹ค ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
์ด๋Š” ์ธ๋ฑ์Šค๊ฐ€ ์ˆซ์ž๊ฐ€ ์•„๋‹ˆ๋”๋ผ๋„ ๋ฌธ์ž์—ด ์ •๋ ฌ์ด ๋˜๋Š” ๊ฒƒ์œผ๋กœ ํ™•์ธ๋œ๋‹ค.


์˜ค๋Š˜์˜ ํšŒ๊ณ  ๐Ÿ“™

์˜ˆ์ „์— ๋น…๋ถ„๊ธฐ ์‹ค๊ธฐ ๊ณต๋ถ€ํ–ˆ๋˜ ๊ธฐ์–ต์ด ์ƒˆ๋ก์ƒˆ๋ก ํ”ผ์–ด๋‚ฌ๋‹ค.
filterํ•จ์ˆ˜์— ๋” ๋ณต์žกํ•œ ์กฐ๊ฑด์„ ๊ฑธ์–ด์„œ ์‚ฌ์šฉํ–ˆ๋˜๊ฑฐ ๊ฐ™์€๋ฐ,
์ด๋ฒˆ์— ์‹ค๊ธฐ ๋‹ค์‹œ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ์งš์–ด๋ด์•ผ๊ฒ ๋‹ค.

loc, iloc๋„ ๊ณ„์† ํ—ท๊ฐˆ๋ ธ๋Š”๋ฐ ์ด์ œ ์ ˆ๋Œ€ ์•ˆ๊นŒ๋จน์„๊ฑฐ ๊ฐ™๋‹ค.
loc์€ ์ธ๋ฑ์Šค, iloc์€ ์ˆœ์„œ๊ฐ’ !

์ถœ์ฒ˜ : ๋ฉ‹์Ÿ์ด์‚ฌ์ž์ฒ˜๋Ÿผ, ๊ฐ์ž์Šˆ๋‹ˆ