๋Ÿฌ๋‹์Šคํ‘ผ ์ˆ˜์—… ์ •๋ฆฌ 

 

* ํŒ๋‹ค์Šค ๊ธฐ๋ณธ ํ•จ์ˆ˜ 

๋ฐ์ดํ„ฐ ํŒŒ์ผ ์ฝ๊ธฐ : read_excel(), read_csv()

๋ฐ์ดํ„ฐ ์„ ํƒํ•˜๊ธฐ : df.loc(), df.iloc()

์ธ๋ฑ์Šค/ ์ปฌ๋Ÿผ ๋ณ€๊ฒฝํ•˜๊ธฐ : columns/ index , reset_index() 

 

 

 


 

 pandas vs excel 

pandas : ๊ฐ€๋ณ๊ณ  ๋นจ๋ผ์„œ ๋Œ€์šฉ๋Ÿ‰ ํŒŒ์ผ ์ž‘์—…์„ ์ž์œ ๋กญ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค. 

excel : ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ๋ˆˆ์— ๋ณด์ธ๋‹ค. (๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์•„ ์ง์ ‘ ๋ณด๊ธฐ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ๋‹ค. ) 

 

 

 pandas ๊ตฌ์กฐ 
  • DataFrame : ํ‘œ ํ˜•ํƒœ 

- index : DB์˜ key ๊ฐœ๋… , ์—‘์…€์—์„œ๋Š” ๋ณดํ†ต ์ฒซ ๋ฒˆ์งธ ์—ด์— ๋ฐฐ์น˜ํ•˜๋Š” ๋ฐ์ดํ„ฐ (vlookup ๋“ฑ์— ํ™œ์šฉ) 

- columns : ํ•˜๋‚˜์˜ ์†์„ฑ์„ ๊ฐ€์ง„ ๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ -> index + column ํ•˜๋‚˜๋กœ ๋‚˜๋ˆ„์–ด ์‚ดํŽด ๋ณผ ์ˆ˜ ์žˆ์Œ 

  • Series : ํ•˜๋‚˜์˜ ์†์„ฑ์„ ๊ฐ€์ง„ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ ( DataFrame ์—์„œ ํ•˜๋‚˜์˜ ์—ด ๋ฐ์ดํ„ฐ ) 
  •  

 

 1. Pandas ๋ถˆ๋Ÿฌ์˜ค๊ธฐ 

- pandas ์„ค์น˜ 

!pip install pandas

- pandas ๋ถˆ๋Ÿฌ์˜ค๊ธฐ 

import pandas as pd

 

 

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

* ํŒŒ์ผ์˜ ๊ฒฝ๋กœ 

- ์ ˆ๋Œ€๊ฒฝ๋กœ : "c:ํด๋”1/ํด๋”2/.../ํŒŒ์ผ๋ช….ํ™•์žฅ์ž" 

- ์ƒ๋Œ€๊ฒฝ๋กœ : "./ํด๋”3/.../ํŒŒ์ผ๋ช….ํ™•์žฅ์ž" , "../ํด๋”4/.../ํŒŒ์ผ๋ช….ํ™•์žฅ์ž" (์ฅฌํ”ผํ„ฐ ๋…ธํŠธ๋ถ ํŒŒ์ผ ์œ„์น˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ง€์ •) 

- ./ : ํ˜„์žฌ ์œ„์น˜ ../ : ๋ถ€๋ชจ ํด๋”

 

* ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ๋“ค์ธ ๋’ค์—๋Š” head(), info(), descrive() ๋ช…๋ น์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์‚ดํŽด๋ณด๋Š” ์Šต๊ด€ ๊ฐ–๊ธฐ 

 

temp = pd.read_excel('./data/exam.xlsx')
temp

temp.head(2)

head ์ธ์ž์— ๊ฐœ์ˆ˜๋ฅผ ์ง€์ •ํ•ด ์ค„ ์ˆ˜ ์žˆ๋‹ค. 

temp.tail()

 

- info () : ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์˜ ์ธ๋ฑ์Šค, ์ปฌ๋Ÿผ์˜ ๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜์™€ ์ข…๋ฅ˜ ํ™•์ธ 

temp.info()

- describe() : ์ˆ˜์น˜ํ˜• ๋ฐ์ดํ„ฐ (inf, float) ๊ฐ€ ๋“ค์–ด์žˆ๋Š” ์ปฌ๋Ÿผ์˜ ๊ธฐ์ดˆํ†ต๊ณ„๋Ÿ‰ (๊ฐœ์ˆ˜,ํ‰๊ท ,ํ‘œ์ค€ํŽธ์ฐจ,์‚ฌ๋ถ„์œ„ ๋“ฑ) ํ™•์ธ

temp.describe()

 

 

 

 2-1 ์ธ๋ฑ์Šค ์ง€์ • 

- set_index() : ์ธ๋ฑ์Šค ์ปฌ๋Ÿผ ์ง€์ •ํ•˜๊ธฐ (์ปฌ๋Ÿผ -> ์ธ๋ฑ์Šค) 

data = temp.set_index('๋ฒˆํ˜ธ')
data.head()

set_index๋ฅผ ์ด์šฉํ•˜์—ฌ '๋ฒˆํ˜ธ' ์ปฌ๋Ÿผ์„ ์ธ๋ฑ์Šค๋กœ ์ง€์ •ํ•ด ์ฃผ์—ˆ๋‹ค. 

 

 

- index_col : ์—‘์…€ ํŒŒ์ผ ์ฝ์–ด์˜ฌ ๋•Œ ์ธ๋ฑ์Šค ์ง€์ • 

temp2 = pd.read_excel('./data/exam.xlsx', index_col = 0) # index_col = '๋ฒˆํ˜ธ' (์ปฌ๋Ÿผ๋ช… ํ™œ์šฉ)
temp2.head()

 

 

 

 3. ๋ฐ์ดํ„ฐ ์„ ํƒํ•˜๊ธฐ 

- ์…€ ์„ ํƒํ•˜๊ธฐ (1๊ฐœ)

df.iloc[row, column] : ์ธ๋ฑ์Šค ๋ฒˆํ˜ธ

df.lic[row, column] : ์ด๋ฆ„ 

data

data.iloc[1, 2]

55

data.loc['1๋ฒˆ','์ˆ˜ํ•™']

75

print(data.loc['3๋ฒˆ','์˜์–ด'])
print(data.iloc[2, 1])

100

100

print(data.loc['1๋ฒˆ', '๊ตญ์–ด'])
print(data.iloc[0, 0])

70

70

 

 

- ์…€ ์„ ํƒํ•˜๊ธฐ (๋ณต์ˆ˜) 

: ๋ฆฌ์ŠคํŠธ ( [์กฐ๊ฑด1, ์กฐ๊ฑด2, ... ์กฐ๊ฑดn] ) ํ˜น์€ ์‹œ์ž‘:์ข…๋ฃŒ ํ˜•ํƒœ๋กœ ๋ฒ”์œ„ ์ง€์ • 

data.loc['1๋ฒˆ', ['๊ตญ์–ด', '์˜์–ด']]

๊ตญ์–ด 70

์˜์–ด 80

Name: 1๋ฒˆ, dtype: int64

data.loc[ ['1๋ฒˆ','2๋ฒˆ'] , '์ˆ˜ํ•™']

๋ฒˆํ˜ธ

1๋ฒˆ 75

2๋ฒˆ 55

Name: ์ˆ˜ํ•™, dtype: int64

 

data.loc['1๋ฒˆ', '์˜์–ด': ]

์˜์–ด 80

์ˆ˜ํ•™ 75

Name: 1๋ฒˆ, dtype: int64

 

 

- ์ปฌ๋Ÿผ ์„ ํƒํ•˜๊ธฐ (1๊ฐœ)

: data.์ปฌ๋Ÿผ๋ช… or data.['์ปฌ๋Ÿผ๋ช…']

data.loc[ : , '์ˆ˜ํ•™']

data['์ˆ˜ํ•™']

data['์˜์–ด']

 

 

- ์ปฌ๋Ÿผ ์„ ํƒํ•˜๊ธฐ (๋ณต์ˆ˜)

: ์›ํ•˜๋Š” ์ˆœ์„œ๋Œ€๋กœ ์„ ํƒ ๊ฐ€๋Šฅ

data[ ['์ˆ˜ํ•™','์˜์–ด'] ]

data[  ['์ˆ˜ํ•™','์˜์–ด','๊ตญ์–ด']  ]

์›๋ž˜๋Š” ๊ตญ์–ด ์˜์–ด ์ˆ˜ํ•™ ์ˆœ์„œ์˜€๋Š”๋ฐ ์œ„์™€๊ฐ™์ด ์ˆœ์„œ๋ฅผ ๋‹ฌ๋ฆฌ ํ•˜์—ฌ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

 

- ํŠน์ • ์กฐ๊ฑด ๋ฐ์ดํ„ฐ ์„ ํƒํ•˜๊ธฐ (ํ•œ๊ฐœ)

pd[condition] : True์ธ ๋ฐ์ดํ„ฐ๋งŒ ์ถœ๋ ฅ 

-> condition : True / False ๋กœ ๊ตฌ์„ฑ๋œ ๋ฆฌ์ŠคํŠธ or ์‹œ๋ฆฌ์ฆˆ 

data

cond = data['์ˆ˜ํ•™'] < 80
cond

์ด๋ ‡๊ฒŒ ์ˆ˜ํ•™ ์ปฌ๋Ÿผ์— ๋Œ€ํ•ด ์กฐ๊ฑด์„ ์ƒ์„ฑํ•˜๋ฉด boolํƒ€์ž…์„ ๋ฐ˜ํ™˜ํ•ด ์ค€๋‹ค. 

data[ cond ]

์œ„์˜ ์กฐ๊ฑด์„ ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์— ์ ์šฉํ•˜๋ฉด True์ธ row๋“ค๋งŒ ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค. 

cond = [True, False, True]    # data['์˜์–ด'] >  80
data[cond]

๋ฆฌ์ŠคํŠธ์— ์ง์ ‘ boolํƒ€์ž…์„ ๋„ฃ์–ด ๋ฝ‘์•„์ค„ ์ˆ˜๋„ ์žˆ๋‹ค. ์ด ๋•Œ ๋ฆฌ์ŠคํŠธ์˜ ๊ฐœ์ˆ˜์™€ row์˜ ๊ฐœ์ˆ˜๋Š” ๊ฐ™์•„์•ผ ํ•œ๋‹ค. 

 

 

- ํŠน์ • ์กฐ๊ฑด ๋ฐ์ดํ„ฐ ์„ ํƒํ•˜๊ธฐ (์—ฌ๋Ÿฌ๊ฐœ์˜ ์กฐ๊ฑด)

& : and , ๋ชจ๋“  ์กฐ๊ฑด ๋งŒ์กฑ True

| : or , ํ•œ ๊ฐœ๋ผ๋„ ๋งŒ์กฑํ•˜๋ฉด True

cond3 = (data['์˜์–ด'] > 80)
cond4 = (data['์ˆ˜ํ•™'] > 80)

data[ cond3 | cond4]

cond3 = (data['์˜์–ด'] > 80)
cond4 = (data['์ˆ˜ํ•™'] > 80)

cond = cond3 & cond4
data[ cond ]

cond = (data['์˜์–ด'] >= 70)  & (data['์ˆ˜ํ•™'] >= 70)  & (data['์ˆ˜ํ•™'] < 90) 
data[ cond ]

cond = (data['์˜์–ด'] >= 70) \
    & (data['์ˆ˜ํ•™'] >= 70) \
     & (data['์ˆ˜ํ•™'] < 90) 

data[ cond ]

์ค„์„ ๋ฐ”๊ฟ€ ๋• \(์—ญ์Šฌ๋ž˜์‰ฌ) ๋ฅผ ์‚ฌ์šฉํ•ด ์ค€๋‹ค. ๊ฐ€๋…์„ฑ์ด ์ข‹์•„์ง„๋‹ค. 

cond_first  =  ( data['๊ตญ์–ด']  > 80)
cond_second =  ( data['์˜์–ด']  > 80)

cond = cond_first   &   cond_second
data[cond]

 

cond_first  =  ( data['๊ตญ์–ด'] > 80 )
cond_second = ( data['์˜์–ด'] > 80 )


cond = cond_first     |   cond_second

data[cond]

 

 

 

 index & column 
data.index

Index(['1๋ฒˆ', '2๋ฒˆ', '3๋ฒˆ'], dtype='object', name='๋ฒˆํ˜ธ')

 

data.index = ['๊ฐ€๋ฐ˜', '๋‚˜๋ฐ˜', '๋‹ค๋ฐ˜']

์ธ๋ฑ์Šค๋ฅผ ๋ฆฌ์ŠคํŠธ๋กœ ์„ค์ •ํ•ด ์ค„ ์ˆ˜ ์žˆ๋‹ค. 

data

์„ค์ •ํ•œ ๋Œ€๋กœ ๋ฐ”๋€ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. 

data.columns

Index(['๊ตญ์–ด', '์˜์–ด', '์ˆ˜ํ•™'], dtype='object')

data.columns = ['Korean','English', 'Math']

๋™์ผํ•˜๊ฒŒ ์ปฌ๋Ÿผ๋„ ๋ฐ”๊ฟ”์ค„ ์ˆ˜ ์žˆ๋‹ค. 

data

data.reset_index()

* reset_index : drop=False๊ฐ€ ๊ธฐ๋ณธ ๊ฐ’ ( ํ˜„์žฌ ์ธ๋ฑ์Šค๋ฅผ ์ปฌ๋Ÿผ์œผ๋กœ ์˜ฎ๊ฒจ ์ฃผ๊ณ  ์ธ๋ฑ์Šค๋ฅผ ๋ฆฌ์…‹) , 

drop = True ( ํ˜„์žฌ ์ธ๋ฑ์Šค์— ์žˆ๋Š” ๊ฐ’์„ ์ปฌ๋Ÿผ์œผ๋กœ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ์ธ๋ฑ์Šค ์ดˆ๊ธฐํ™” ) 

 


 

 

 

+ Recent posts