๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Python/ETC

[Python] Pandas ํŒŒ์ด์ฌ ํŒ๋‹ค์Šค ์ƒ์„ฑ, ์ฝ๊ธฐ ์ด ์ •๋ฆฌ :: ๋งˆ์ด์ž๋ชฝ

by ๐ŸŒปโ™š 2020. 3. 10.

Python Pandas

Pyrhon์œผ๋กœ ๋ฐ์ดํ„ฐ๋ถ„์„์„ ์ ‘ํ•ด๋ณธ๋‹ค๋ฉด Python Pandas๋Š” ์ ˆ๋Œ€๋กœ ๋น ์งˆ ์ˆ˜ ์—†๋Š” ๋ชจ๋“ˆ์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๊ฐ€ Pandas์˜ Dataframe๊ณผ Series๋กœ ์ด๋ฃจ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๋ถ„์„์„ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๊ผญ ์•Œ์•„๋‘์–ด์•ผํ•  ๋ชจ๋“ˆ์ž…๋‹ˆ๋‹ค. ์˜ค๋กœ์ง€ ๋ฐ์ดํ„ฐ ๋ถ„์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๋งŒ๋“ค์–ด ๋†“์€ ๋ชจ๋“ˆ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ Dataframe์œผ๋กœ ์ฃผ๋Š” ๊ฒฝ์šฐ๋„ ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ์–ด์ฉŒ๋ฉด Python ์‚ฌ์šฉ์ž๋ผ๋ฉด ํ•„์ˆ˜๋กœ ์•Œ๊ณ  ๋„˜์–ด๊ฐ€์•ผํ•˜๋Š” ๋ถ€๋ถ„์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

 

Python์€ ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ ์—†๋Š”๊ฒŒ ์žฅ์ ์ด์ž ๋‹จ์ ์ธ ์–ธ์–ด๋ผ๊ณ  ํ•˜๋Š”๋ฐ... Python์—์„œ ๋‹ค๋ฃจ๋Š” ์ž๋ฃŒํ˜•์ด ๋‹ค๋ฅธ ์–ธ์–ด๋“ค๊ณผ๋Š” ๋‹ฌ๋ฆฌ, ์ œ์•ฝ์ด ๋งŽ์ด ์—†๊ณ  ์ž์œ ๋กœ์›Œ์„œ ๋‹ค๋ฅธ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋˜ ๋ถ„๋“ค์—๊ฒŒ ํ˜ผ๋™์„ ์ค„์ˆ˜๋„ ์žˆ์ง€๋งŒ, ์ƒˆ๋กœ์šด ๋ฐฉ์‹์ด๊ธฐ ๋•Œ๋ฌธ์— ํ˜์‹ ์ ์œผ๋กœ ๋ฐ”๋ผ๋ณผ ์ˆ˜๋„ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ œ ๊ฐœ์ธ์ ์ธ ์ƒ๊ฐ์œผ๋กœ๋Š” ์ž๋ฐ”๋‚˜ ๋‹ค๋ฅธ ์–ธ์–ด์—์„œ ์‚ฌ์šฉํ•˜๋Š” Map, Array ๋“ฑ๋“ฑ ์ด๋Ÿฐ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ฝ๊ธฐ ํŽธํ•˜๊ฒŒ ํ•ฉ์ณ๋†“์€๊ฒŒ Python Pandas์˜ ๊ฐ•์ ์ด๋ผ๊ณ  ํ•ด์•ผํ• ๊นŒ์š”?

 

๋ˆ„๋ฝ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์—ฐํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฑฐ๋‚˜, ๋งˆ์น˜ ์—‘์…€์˜ ์‹œํŠธ๋ฅผ ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์œผ๋กœ ๋งŒ๋“ค์–ด ๋†“์€ ๋Š๋‚Œ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์˜ค๋Š˜์€  Python Pandas์—์„œ DataFrame๊ณผ Series๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋Š” ๋‚ด์šฉ์„ ๋‹ค๋ค„๋ณผ๊นŒ ํ•ฉ๋‹ˆ๋‹ค. Dataframe์„ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์ฝ๋Š” ๋ฐฉ๋ฒ•์ด ์›Œ๋‚™ ๋‹ค์–‘ํ•ด์„œ... ํ•˜๋‚˜์˜ ๊ธ€์— ์ „์ฒด์ ์œผ๋กœ ์ •๋ฆฌํ•˜๋ฉด ์กฐ๊ธˆ ๋” ์‰ฝ๊ฒŒ Python Pandas ๋ชจ๋“ˆ์˜ Dataframe์„ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์ง€ ์•Š์„๊นŒ ํ•˜๋Š” ์ƒ๊ฐ์œผ๋กœ ์‹ค์Šต์„ ์ง„ํ–‰ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

import pandas as pd

Python Pandas๋Š” Anaconda๋ฅผ ํ†ตํ•ด์„œ Python์„ ์„ค์น˜ํ–ˆ๋‹ค๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋“ˆ์ด ์„ค์น˜๋˜์—ˆ๊ณ  ์—†๋‹ค๋ฉด pip๋ฅผ ํ†ตํ•ด์„œ ์„ค์น˜ํ•ด์ฃผ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๊ด€๋ก€์ ์œผ๋กœ pd๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค.

 

 

Series

Series๋Š” ํ…Œ์ด๋ธ” ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ๋กœ ๋ดค์„๋•Œ ํ•˜๋‚˜์˜ ๋ ˆ์ฝ”๋“œ ์ฆ‰, ํ–‰ ๊ฐ’์œผ๋กœ ์ƒ๊ฐํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

 

-Series ์ƒ์„ฑ

s1 = pd.Series([5000,30000,20000,15000])

Series์™€ Dataframe์„ ๊ฐ–๊ณ  ๊ฐœ๋ฐœ์„ ํ• ๋•Œ ์ •๋ง ํ–‡๊ฐˆ๋ฆฌ๋Š” ๋ถ€๋ถ„์ด ์žˆ์–ด์š”. Series๋Š” ํ–‰ ๊ฐ’์ธ๋ฐ ์ถœ๋ ฅ์€ ์„ธ๋กœ๋กœ ๋˜์ฃ ?

๊ทธ๋ฆฌ๊ณ  index ๊ฐ’์œผ๋กœ 0 ๋ถ€ํ„ฐ ์ˆœ์ฐจ์ ์œผ๋กœ ์ธ๋ฑ์‹ฑ๋˜๋Š”๊ฒŒ ๋งˆ์น˜ Series ํ•˜๋‚˜๋ฅผ ๋งŒ๋“ค์—ˆ๋Š”๋ฐ ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. Series๋Š” ํ–‰ ๋ฐ์ดํ„ฐ๋ผ๋Š” ๊ฒƒ์„ ๋ช…์‹ฌํ•˜๊ณ  ๊ฐœ๋ฐœ์„ ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

 

s1 = pd.Series({
    '2020-03-03' : 5000,
    '2020-03-04' : 30000,
    '2020-03-05' : 20000,
    '2020-03-06' : 15000,
})

dictionary ํ˜•์‹์œผ๋กœ๋กœ index์„ ์„ค์ •ํ•˜๋ฉด์„œ ๋™์‹œ์— ์ƒ์„ฑ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

 

--Series index & names ๋”ฐ๋กœ ์ง€์ •

s1.index = ('2020-03-03','2020-03-04','2020-03-05', '2020-03-06')
s1.index.name = 'dates'
s1.name = 'durian'

Series์— index ๋ถ€๋ถ„์€ ๊ฐ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์—ด ์†์„ฑ์ž…๋‹ˆ๋‹ค.

index์˜ name์€ ํ™•์ธ์šฉ์œผ๋กœ index์˜ ์˜๋ฏธ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์ง€์ •ํ•ด์ฃผ๊ณ 

Series ์ „์ฒด์˜ name์€ ํ•˜๋‚˜์˜ ํ–‰ ๋ฐ์ดํ„ฐ์ด๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ํ–‰์„ ๋Œ€ํ‘œํ•˜๋Š” ๊ฐ’์ž…๋‹ˆ๋‹ค.

๋‚˜์ค‘์— Dataframe์— ์‚ฝ์ž…ํ• ๋•Œ name ์†์„ฑ์€ ํ•„์ˆ˜๋กœ ์š”๊ตฌ๋ฉ๋‹ˆ๋‹ค.

 

ํ•ด๋‹น Series๋ฅผ ๋ณด๋ฉด durian์˜ ๊ฐ ๋‚ ์งœ๋ณ„ ๊ฐ€๊ฒฉ์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

--Series index & namesํ•จ๊ป˜ ์ƒ์„ฑ

s1 = pd.Series([5000,30000,20000,15000],
              index=['2020-03-03','2020-03-04','2020-03-05', '2020-03-06'],
              name='durian')
s1.index.name = 'dates'

index_name ๊ฐ’์€ ์ƒ์„ฑ ์ธ์ž๋กœ ๋ฐ›์ง€ ์•Š์•„ ๋”ฐ๋กœ ๋„ฃ์–ด์คฌ์Šต๋‹ˆ๋‹ค.

 

 

-Series ์ฝ๊ธฐ

Series ์ฝ๊ธฐ ์ž‘์—…์€ ์œ„์˜ ์ƒ์„ฑ๋œ s1 Series๋ฅผ ๊ฐ–๊ณ  ์‹ค์Šตํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

--Series ์ˆœ์„œ index๋กœ ์ฝ๊ธฐ

s1[0]

Series๋Š” ์ผ์ฐจ ๋ฐฐ์—ด ํ˜•์‹์˜ ํ–‰ ๋ฐ์ดํ„ฐ์ด๋ฏ€๋กœ ์ˆซ์ž ํ˜•ํƒœ์˜ index๋กœ ๋ฐ›์•„์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹จ, ๋งŒ์•ฝ indexing ์ž‘์—…์„ ํ…์ŠคํŠธ๊ฐ€ ์•„๋‹Œ ์ˆซ์ž๋กœ ํ–ˆ์„ ๊ฒฝ์šฐ, ํ•ด๋‹น ์ˆซ์ž ๋‚ด์˜ index์—์„œ๋งŒ ํ˜ธ์ถœ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฒˆ ์˜ˆ์ œ ์—์„œ๋Š” ๊ฐ๊ฐ ๋‚ ์งœ๋ฅผ ์‚ฌ์šฉํ•ด์„œ indexing์„ ํ•ด์คฌ๊ธฐ ๋•Œ๋ฌธ์— '0'์œผ๋กœ ํ˜ธ์ถœ์ด ๊ฐ€๋Šฅํ–ˆ์Šต๋‹ˆ๋‹ค.

 

--Series index ์ด๋ฆ„์œผ๋กœ ์ฝ๊ธฐ

s1['2020-03-03']

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ฐฐ์—ดํ˜•์‹์œผ๋กœ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋งŒ์•ฝ, index๊ฐ€ ์ˆซ์ž๊ฐ€ ๋ณดํ•จ๋˜์ง€ ์•Š์€ ๋‹จ์–ดํ˜•ํƒœ๋กœ ๋˜์–ด์žˆ์œผ๋ฉด

s1.word

'.'๊ณผ index๋กœ ์„ค์ •ํ•œ ๋ช…์นญ์œผ๋กœ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

s1[['2020-03-03','2020-03-04']]

๋ฐฐ์—ด ํ–‰ํƒœ๋กœ 2๊ฐœ์ด์ƒ์˜ index๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด Series ํƒ€์ž…์œผ๋กœ ๊ฐ’์„ ์ค๋‹ˆ๋‹ค.

slicing์ž‘์—…์„ ํ†ตํ•ด ๋ถ€๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

Dataframe

Dataframe์€ Series๋“ค์˜ ์ง‘ํ•ฉ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ๊ฐœ์˜ Series(ํ–‰)์ด ๋ชจ์—ฌ ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

-Dataframe ์ƒ์„ฑ

df = pd.DataFrame(
    [
        [4000,20000,10000],
        [5000,8000,11000],
        [6000,9000,12000]
    ], 
)

index ๊ฐ’๊ณผ column ๊ฐ’ ์—†์ด ์ƒ์„ฑํ•˜๊ฒŒ ๋˜๋ฉด ์ˆซ์žํ˜•ํƒœ๋กœ 0 ๋ถ€ํ„ฐ ์ž๋™์œผ๋กœ ๋งค๊ฒจ์ง‘๋‹ˆ๋‹ค. Dataframe์„ ์ œ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๋ ค๋ฉด index์™€ column ๊ฐ’์„ ๋„ฃ์–ด์„œ ์ƒ์„ฑ์„ ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

df = pd.DataFrame({
    "2020-03-03" : [4000,5000,6000],
    "2020-03-04" : [20000,8000,9000],
    "2020-03-05" :[10000,11000,12000]
}, index=['apple','bannana','cherry']
)

dictionary ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์–ด์ฃผ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. dictionary ํ˜•ํƒœ๋กœ ๊ฐ’์„ ๋„ฃ์–ด์ฃผ๋ฉด, key ๊ฐ’์ด ๊ฐ column์ด ๋˜๊ณ  value ๊ฐ’์ด ๊ฐ’์ด ๋ฉ๋‹ˆ๋‹ค. index๋ฅผ ์•ˆ ๋„ฃ์–ด์ฃผ๋ฉด ์ˆซ์žํ˜•ํƒœ๋กœ ๋˜๋‹ˆ ์›ํ•˜๋Š” ํ˜•ํƒœ๋กœ index ๊ฐ’์„ ๋„ฃ์–ด๋ดค์Šต๋‹ˆ๋‹ค.

 

--Dataframe index & column ๋”ฐ๋กœ ๋„ฃ๊ธฐ

df = pd.DataFrame(
    [
        [4000,20000,10000],
        [5000,8000,11000],
        [6000,9000,12000]
    ], 
)
df.index = [['apple','bannana','cherry']]
df.columns = [['2020-03-03','2020-03-04','2020-03-05']];

Dataframe์„ ์ƒ์„ฑํ•˜๋Š”๋ฐ๋„ index์™€ column์„ ๋”ฐ๋กœ๋”ฐ๋กœ ์„ค์ •ํ•ด์ฃผ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

--Dataframe index & column ํ•จ๊ป˜ ์ƒ์„ฑ

df = pd.DataFrame(
    [
        [4000,20000,10000],
        [5000,8000,11000],
        [6000,9000,12000]
    ], 
    index=['apple','bannana','cherry'],
    columns=['2020-03-03','2020-03-04','2020-03-05']
)

index์™€ column์„ ๋”ฐ๋กœ ๋„ฃ์–ด์ค€ ๊ฒƒ์ฒ˜๋Ÿผ ์•ˆ์—๋‹ค ์ธ์ž๋กœ ์ฒ˜๋ฆฌํ•ด์ฃผ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

--Dataframe Series๋กœ ์ƒ์„ฑ

s1 = pd.Series(
    [4000,20000,10000], 
    index = ['2020-03-03', '2020-03-04', '2020-03-05'], 
    name='apple')

s2 = pd.Series(
    [5000,8000,11000], 
    index = ['2020-03-03', '2020-03-04', '2020-03-05'], 
    name='bannana')

s3 = pd.Series(
    [6000,9000,12000], 
    index = ['2020-03-03', '2020-03-04', '2020-03-05'], 
    name='cherry')


df = pd.DataFrame([s1,s2,s3])

์œ„์—์„œ ์„ค๋ช…ํ–ˆ๋“ฏ์ด Dataframe์€ Series๋“ค๋กœ ๊ตฌ์„ฑ๋œ ํ…Œ์ด๋ธ”ํ˜•ํƒœ์˜ ๊ตฌ์กฐ๋ผ๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค. 3๊ฐœ์˜ Series๋ฅผ ๋งŒ๋“ค์–ด์„œ ํ•˜๋‚˜์˜ Dataframe์•ˆ์— ๋„ฃ์–ด ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ „์—๋Š” Series์˜ index๋‚˜ name ๊ทธ๋ฆฌ๊ณ  Dataframe์˜ index์™€ column์ด ๋งŽ์ด ํ–‡๊ฐˆ๋ ธ์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ์œ„ ์˜ˆ์ œ๋ฅผ ์ž˜ ๋ณด๋ฉด ๋‘๊ฐœ์˜ ๊ตฌ๋ถ„๊ณผ ์ดํ•ดํ•˜๋Š”๋ฐ ๋งŽ์€ ๋„์›€์ด ๋ ๊ฑฐ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

 

Dataframe ์ƒ์„ฑ๊ณผ๋Š” ๊ฑฐ๋ฆฌ๊ฐ€ ์กฐ๊ธˆ ์žˆ์ง€๋งŒ, ๋” ํ™•์‹คํ•œ ์ดํ•ด๋ฅผ ์œ„ํ•ด ํ•ด๋‹น Dataframe ์•ˆ์— Series ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜ ๋” ๋„ฃ์–ด๋ณด๋Š” ๊ฒƒ์„ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

s4 = pd.Series(
    [5000,30000,20000,15000],
    index=['2020-03-03','2020-03-04','2020-03-05', '2020-03-06'],
    name='durian'
)

df.append(s4)

durian์ด๋ผ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์—ˆ์Šต๋‹ˆ๋‹ค. Series์˜ name๊ฐ’์ด Dataframe์˜ index๋กœ ์‚ฌ์šฉ๋˜๋Š”๋ฐ ์ด๋ฒˆ์—๋Š” 3๊ฐœ๊ฐ€ ์•„๋‹Œ 4๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์–ด๋ดค์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๊ฐœ๋ฐœ ์–ธ์–ด๋ผ๋ฉด ์—๋Ÿฌ๊ฐ€๋ฐœ์ƒํ•˜๊ณ  ๋ง‰ ๊ทธ๋žฌ์„ํ…๋ฐ, ํŒŒ์ด์ฌ์˜ ์žฅ์ ์ด์ž ๋‹จ์ ?์œผ๋กœ ๋‹ค๋ฅธ ๊ฐ’์€ NaN์œผ๋กœ ์ฒ˜๋ฆฌ๊ฐ€๋˜๊ณ  ์—๋Ÿฌ๋Š” ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๋ฐ์ดํ„ฐ๊นŒ์ง€ ํ•˜๋‚˜ ๋” ์ถ”๊ฐ€ํ•ด๋ณด๋‹ˆ๊นŒ ํ™•์‹คํžˆ Series์™€ Dataframe์˜ ๊ตฌ์กฐ๊ฐ€ ์ดํ•ด๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

 

-Dataframe ์ฝ๊ธฐ

์ด๋ฒˆ์—๋Š” Dataframe์˜ ๊ฐ’์„ ์ฝ์–ด๋ณด๋Š” ์‹ค์Šต์„ ์ง„ํ–‰ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Dataframe ์ฝ๋Š” ๋ฐฉ๋ฒ•์€ ๋„ˆ๋ฌด๋‚˜๋„ ๋‹ค์–‘ํ•ด์„œ Dataframe ์ •๋ณด ์ฝ๊ธฐ, ํ–‰ ์ฝ๊ธฐ, ์—ด ์ฝ๊ธฐ, ํ–‰ ์ˆซ์ž index ์ฝ๊ธฐ, ๋ณตํ•ฉ ์ฝ๊ธฐ ์ด๋ ‡๊ฒŒ 5๊ฐ€์ง€๋กœ ๋‚˜๋ˆ ์„œ ๋ด์•ผํ• ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์ด๋ถ€๋ถ„์ด ์ œ์ผ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

 

--Dataframe ์ •๋ณด ์ฝ๊ธฐ

df.index

df.columns

df.values

df.describe()

๊ฐ๊ฐ Dataframe์˜ index, column, ๊ฐ’, ์š”์•ฝ์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰ describe ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ๋‹ค์Œ ๊ธ€์—์„œ Dataframe ํ†ต๊ณ„์™€ ๊ด€๋ จ๋œ ๋‚ด์šฉ์„ ๋‹ค๋ฃจ๊ธฐ ์ „์— ์ด๋Ÿฐ ๊ธฐ๋Šฅ๋“ค์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์—ฌ๋“œ๋ฆฌ๊ณ  ์‹ถ์–ด ๋„ฃ์–ด๋ดค์Šต๋‹ˆ๋‹ค.

 

๋‚˜๋จธ์ง€ index, columns๋‚˜ values๋ฅผ ํ™œ์šฉํ•ด์„œ ๋ฐ˜๋ณต๋ฌธ์„ ํ†ตํ•ด ์–ด๋–ค ํŠน์ • ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์—ฌ๋“œ๋ฆด๋ ค๊ณ  Dataframe์— ๋Œ€ํ•œ ์ •๋ณด๋“ค์„ ์ฝ๋Š” ๋ฐฉ๋ฒ•์„ ์‹ค์Šต์— ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

 

--Dataframe ์—ด ์ฝ๊ธฐ

df['2020-03-03']

Dataframe์˜ ์—ด ์ฆ‰ column์„ ์ฝ๋Š” ๊ฒƒ์€ ๋ฐฐ์—ด์„ ์ฝ๋Š” ๋ฐฉ์‹์ด๋ž‘ ๋˜‘๊ฐ™์ด ์‚ฌ์šฉํ•˜๋ฉด๋ฉ๋‹ˆ๋‹ค.

column์˜ ๋” ์„ธ๋ถ€์ ์ธ ๋ฐ์ดํ„ฐ๋Š” 2์ฐจ์› ๋ฐฐ์—ด์„ ์ฝ๋“ฏ์ด ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

--Dataframe  ํ–‰ ์ฝ๊ธฐ

df.loc['apple']

 Dataframe์˜ ํ–‰ ์ฆ‰ index๋กœ ์ฝ๋Š” ๊ฒƒ์€ dataframe์˜ loc๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

--Dataframe ํ–‰ ์ˆซ์ž index ์ฝ๊ธฐ

df.iloc[0]

iloc๋ฅผ ์ด์šฉํ•ด์„œ index์˜ ์ˆซ์ž index๋กœ ์ฝ์–ด์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

--Dataframe ๋ณตํ•ฉ ์ฝ๊ธฐ

df.loc['apple':'cherry', '2020-03-04':'2020-03-05']

๋ณตํ•ฉ์ฝ๊ธฐ๋ผ๊ณ  ํ‘œํ˜„ํ–ˆ๋Š”๋ฐ, ๊ทธ๋ƒฅ ํ–‰๊ณผ์—ด์„ ์„ ํƒํ•ด์„œ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. python slicing ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ด์„œ loc์˜ ์ฒซ๋ฒˆ์งธ์— index๋ฅผ ๋‘๋ฒˆ์งธ์— column์„ ๋„ฃ์–ด์„œ ์›ํ•˜๋Š” ๋ถ€๋ถ„๋งŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๋ณตํ•ฉ์ฝ๊ธฐ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

 

df.loc[df['2020-03-03']>4000,:]

df[df['2020-03-03':]>4000]

์ด๋Ÿฐ ๋ฐฉ์‹๋“ค๋กœ ์กฐ๊ฑด์„ ๋„ฃ์–ด์„œ Dataframe์„ ๊ฐ€๊ณตํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์˜ค๋Š˜์€ Python Pandas  Series์™€ Dataframe ์ƒ์„ฑ๊ณผ ์ฝ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ดค์Šต๋‹ˆ๋‹ค. ์ƒ์„ฑ๊ณผ ์ฝ๋Š” ๋ฐฉ๋ฒ•๋งŒ ์•Œ์•„๋ณด๋Š”๋ฐ๋„ ๋งŽ์€ ๊ธ€์„ ์“ฐ๊ฒŒ๋˜์—ˆ๋„ค์š”... ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ด์„œ Dataframe์„ ์ฝ๊ณ  ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ์ฝ๋Š” ๋ฐฉ๋ฒ•์€ ์ œ๊ฐ€ ์•ˆ๋‚ดํ•ด๋“œ๋ฆฐ ๋ฐฉ๋ฒ• ์™ธ๋กœ๋„ ์ž˜ ํ™œ์šฉํ•˜๋ฉด ์›ํ•˜๋Š” ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๊ธ€์—์„œ๋Š” ๋ฐ์ดํ„ฐ ์‚ฝ์ž…๊ณผ ์ˆ˜์ • ๋“ฑ Python Pandas๋ฅผ ์ด์šฉํ•œ Dataframe์˜ ๊ฐ€๊ณต๊ณผ ๊ด€๋ จํ•ด์„œ ๋” ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋Œ“๊ธ€