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

[Python] Jupyter Notebook ๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ ๊ธฐ์ดˆ(์—‘์…€ ํŒŒ์ผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ)

by ITyranno 2023. 11. 30.
728x90
๋ฐ˜์‘ํ˜•

 

 

 

 

 

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์„ธ๊ณ„๋ฅผ ํƒ๊ตฌํ•ฉ์‹œ๋‹ค.

 

 

 

 

 

<ํŒ๋‹ค์Šค(pandas)>


 - ํ–‰๋ ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ํ•จ์ˆ˜๋ฅผ ์ง€์›ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
 - ํŒŒ์ผ ์ฝ๊ธฐ, ์ €์žฅ, ํ–‰๋ ฌ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ, ๊ธฐ๋ณธ์‹œ๊ฐํ™” ๋“ฑ ์ง€์›
 - ๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ ๊ณผ์ •์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ๋จ

 


<๋ฐ์ดํ„ฐ ๋ถ„์„๊ณผ์ •>


 ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ > ๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ > ๋ฐ์ดํ„ฐ ๊ฐ€๊ณต(ํ•„์š”์‹œ ์ „์ฒ˜๋ฆฌ) >
 ๋ฐ์ดํ„ฐ ๋ถ„์„ ํƒ์ƒ‰/์‹œ๊ฐํ™”(ํ•„์š”์‹œ ์ „์ฒ˜๋ฆฌ) > ํ•„์š”์‹œ ๋ชจ๋ธ ํ›ˆ๋ จ(๋จธ์‹ ๋Ÿฌ๋‹ or ๋”ฅ๋Ÿฌ๋‹) >
 ์›น์„œ๋น„์Šค ๋˜๋Š” ๋ถ„์„๋ณด๊ณ ์„œ
 * ์ผ๋ฐ˜์ ์œผ๋กœ ์ฑ…์—์„œ๋Š” : ๋ฐ์ดํ„ฐ์ˆ˜์ง‘ > ์ „์ฒ˜๋ฆฌ > ๋ถ„์„ > ์‹œ๊ฐํ™”๋กœ ์„ค๋ช…ํ•˜๊ณ  ์žˆ์Œ
 * ๋ถ„์„๊ณผ์ •์€ ํšŒ์‚ฌ์— ๋”ฐ๋ผ ๋‹ค๋ฆ„

 

 

< ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ์‹œ ํ™•์ธ ์‚ฌํ•ญ>


 - ๋‚ ์งœ ํ™•์ธ : ๊ธฐ์ค€์ผ๋กœ ์‚ฌ์šฉ
 - ๋ฒ”์ฃผํ˜• ๋ฐ์ดํ„ฐ ํ™•์ธ : ์˜ˆ๋กœ ๋‚จ์ž ๋˜๋Š” ์—ฌ์ž์™€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ

 

 

 

1.  ๋ฐ์ดํ„ฐ ์ฝ์–ด๋“ค์ด๊ธฐ

 

 

[  ํŒŒ์ผ ์œ„์น˜ ์ง€์ •  ]

 

### ํŒŒ์ผ ์œ„์น˜ ์ง€์ •
file_path = "./files/sample_1.xlsx"

 

 

 

[  ํŒŒ์ผ ๋ฐ์ดํ„ฐ ์ถ”์ถœํ•˜๊ธฐ  ]

 

### ํŒŒ์ผ ๋ฐ์ดํ„ฐ ์ถ”์ถœํ•˜๊ธฐ
# - ์ฒซ๋ฒˆ์งธ : ํŒŒ์ผ ์ง€์ •(์œ„์น˜ ํฌํ•จ)
# - ๋‘๋ฒˆ์งธ : ์ปฌ๋Ÿผ๋ช…์œผ๋กœ ์‚ฌ์šฉํ•  ํ–‰์˜ ์œ„์น˜ (๋””ํดํŠธ 0)
# - ์„ธ๋ฒˆ์งธ : ํ–‰์˜ ๊ฐ€์žฅ ๋ฐ‘์—์„œ๋ถ€ํ„ฐ ํฌํ•จํ•˜์ง€ ์•Š์„ ํ–‰์˜ ๊ฐฏ์ˆ˜ (๋””ํดํŠธ 0)
# - ๋„ค๋ฒˆ์งธ : ๊ฐ€์ง€๊ณ  ์˜ฌ ์—ด์˜ ๋ฒ”์œ„(A:C A๋ถ€ํ„ฐ C๊นŒ์ง€์˜ ์—ด) (๋””ํดํŠธ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š” ๋ชจ๋“  ์—ด)
sample_1 = pd.read_excel(file_path,
                         header=1,
                         skipfooter=2,
                         usecols="A:C")

 

sample_1

 

 

[  ๊ฒฐ๊ณผ  ]

 

 

 

 

 

 

[  ๋ฐ์ดํ„ฐ ์ •๋ณด ํ™•์ธํ•˜๊ธฐ  ]

 

### ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„ ์ •๋ณด ํ™•์ธํ•˜๊ธฐ
# - DataFrame ํƒ€์ž… : ํ–‰๋ ฌ์„ ์ €์žฅ ๊ด€๋ฆฌํ•˜๋Š” ํƒ€์ž…
# - (์ค‘์š”) info() ํ•จ์ˆ˜๋Š” ๋ฐ์ดํ„ฐ์˜ ๊ฒฐ์ธก์น˜(nan, nulll) ๋ฐ์ดํ„ฐ ํ™•์ธ ๊ฐ€๋Šฅ
# - RangeIndex : ์ „์ฒด ํ–‰(row)์˜ ๊ฐฏ์ˆ˜
# - ์ „์ฒด ํ–‰์˜ ๊ฐฏ์ˆ˜์™€ ๊ฐ ์ปฌ๋Ÿผ์˜ ๊ฐฏ์ˆ˜(Non-Null)๊ฐ€ ์•ˆ ๋งž์œผ๋ฉด -> ๊ฒฐ์ธก ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•œ๋‹ค๋Š” ์˜๋ฏธ
sample_1.info()

 

 

 

[  ๊ฒฐ๊ณผ  ]

 

 

 

 

 

[  ๋ฐ์ดํ„ฐ ํ–‰/์—ด์ด ๋งŽ์€ ๊ฒฝ์šฐ  ]

### ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„ ์ถœ๋ ฅ
# - ๋ฐ์ดํ„ฐ ํ–‰/์—ด์ด ๋งŽ์€ ๊ฒฝ์šฐ -> ๊ธฐ๋ณธ ์ƒ์œ„ 5๊ฐœ, ํ•˜์œ„ 5๊ฐœ๋ฅผ ์ถ”์ถœํ•ด์„œ ๋ณด์—ฌ์คŒ
# - ๋ฐ์ดํ„ฐ ํ–‰/์—ด์˜ ๊ฐฏ์ˆ˜๊ฐ€ ์ž‘์œผ๋ฉด ๋ชจ๋‘ ๋ณด์—ฌ์คŒ
sample_1

 

 

[  ๊ฒฐ๊ณผ  ]

 

 

 

 

 

[  head() : ์ƒ์œ„ ๋ฐ์ดํ„ฐ ์กฐํšŒํ•  ๋•Œ  ]

 

### head() : ์ƒ์œ„ ๋ฐ์ดํ„ฐ ์กฐํšŒํ•  ๋•Œ
sample_1.head()
sample_1.head(1)

 

 

 

 

 

 

 tail() : ํ•˜์œ„ ๋ฐ์ดํ„ฐ ์กฐํšŒํ•  ๋•Œ  ]

 

### tail() : ๋งˆ์ง€๋ง‰ ๋ฐ์ดํ„ฐ ํ™•์ธ (๊ธฐ๋ณธ 5๊ฐœ)
sample_1.tail()
sample_1.tail(1)

 

 

 

[  ๊ฒฐ๊ณผ  ]

 

 

 

 

 

 

[  ๊ธฐ์ดˆํ†ต๊ณ„ ๋ฐ์ดํ„ฐ describe()  ]

 

 

# - count : ๋ฐ์ดํ„ฐ ํ–‰์˜ ๊ฐฏ์ˆ˜
# - mean : ๋ฐ์ดํ„ฐ ํ‰๊ท 
# - std : ํ‘œ์ค€ํŽธ์ฐจ
# - min : ์ตœ์†Œ๊ฐ’
# - max : ์ตœ๋Œ€๊ฐ’
# 25%, 50%, 75% : 4๋ถ„์œ„์ˆ˜ ๋ฐ์ดํ„ฐ(50% -> ์ค‘์•™๊ฐ’)
#  -> 4๋ถ„์œ„์ˆ˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ด์šฉํ•ด์„œ ์ด์ƒ์น˜(์ด์ƒํ•œ) ๋ฐ์ดํ„ฐ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
# - ๊ธฐ์ดˆํ†ต๊ณ„ ๋ฐ์ดํ„ฐ๋Š” ์ˆซ์ž๊ฐ’์„ ๊ฐ€์ง€๋Š” ์ปฌ๋Ÿผ์— ๋Œ€ํ•ด์„œ๋งŒ ํ™•์ธ

 

### ๊ธฐ์ดˆํ†ต๊ณ„ ๋ฐ์ดํ„ฐ
# - count : ๋ฐ์ดํ„ฐ ํ–‰์˜ ๊ฐฏ์ˆ˜
# - mean : ๋ฐ์ดํ„ฐ ํ‰๊ท 
# - std : ํ‘œ์ค€ํŽธ์ฐจ
# - min : ์ตœ์†Œ๊ฐ’
# - max : ์ตœ๋Œ€๊ฐ’
# 25%, 50%, 75% : 4๋ถ„์œ„์ˆ˜ ๋ฐ์ดํ„ฐ(50% -> ์ค‘์•™๊ฐ’)
#  -> 4๋ถ„์œ„์ˆ˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ด์šฉํ•ด์„œ ์ด์ƒ์น˜(์ด์ƒํ•œ) ๋ฐ์ดํ„ฐ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
# - ๊ธฐ์ดˆํ†ต๊ณ„ ๋ฐ์ดํ„ฐ๋Š” ์ˆซ์ž๊ฐ’์„ ๊ฐ€์ง€๋Š” ์ปฌ๋Ÿผ์— ๋Œ€ํ•ด์„œ๋งŒ ํ™•์ธ
sample_1.describe()

 

 

 

[  ๊ฒฐ๊ณผ  ]

 

 

 

 

 

2.  ๋ฐ์ดํ„ฐ ์กฐํšŒํ•˜๊ธฐ

 

 

[  ๊ตญ์ ์ฝ”๋“œ ๋ฐ์ดํ„ฐ ์กฐํšŒํ•˜๊ธฐ  ]

 

### ๊ตญ์ ์ฝ”๋“œ ๋ฐ์ดํ„ฐ ์กฐํšŒํ•˜๊ธฐ
sample_1["๊ตญ์ ์ฝ”๋“œ"]

 

 

 

 

 

 

[  ํƒ€์ž… ํ™•์ธํ•˜๊ธฐ  ]

 

### ํƒ€์ž… ํ™•์ธํ•˜๊ธฐ
# Series: ํŠœํ”Œ๊ณผ ๋ชจ์–‘()์ด ๊ฐ™์Šต๋‹ˆ๋‹ค.(์‚ฌ์šฉ๋ฒ•๋„ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.)
# {"๊ตญ์ ์ฝ”๋“œ" : (๋ฐ์ดํ„ฐ, ๋ฐ์ดํ„ฐ, ...)}
type(sample_1["๊ตญ์ ์ฝ”๋“œ"])

 

 

 

[  ๊ฒฐ๊ณผ  ]

 

 

 

 

 

[  ์„ฑ๋ณ„ ๋ฐ์ดํ„ฐ ์กฐํšŒํ•˜๊ธฐ  ]

 

### ์„ฑ๋ณ„ ๋ฐ์ดํ„ฐ ์กฐํšŒํ•˜๊ธฐ
sample_1["์„ฑ๋ณ„"]

 

 

[  ๊ฒฐ๊ณผ  ]

 

 

 

 

sample_1[["์„ฑ๋ณ„"]]

 

 

 

 

 

 

[  ํƒ€์ž… ํ™•์ธํ•˜๊ธฐ  ]

 

type(sample_1[["์„ฑ๋ณ„"]])

 

 

 

 

 

 

 

[  ๊ตญ์ ์ฝ”๋“œ์™€ ์„ฑ๋ณ„ ๋ชจ๋‘ ์กฐํšŒํ•˜๊ธฐ  ]

 

### ๊ตญ์ ์ฝ”๋“œ์™€ ์„ฑ๋ณ„ ๋ชจ๋‘ ์กฐํšŒํ•˜๊ธฐ
sample_1[["๊ตญ์ ์ฝ”๋“œ", "์„ฑ๋ณ„"]]

 

 

[  ๊ฒฐ๊ณผ  ]

 

 

 

 

 

3.  ๊ธฐ์ค€๋…„์›” ์ปฌ๋Ÿผ ์ถ”๊ฐ€ํ•˜๊ธฐ

 

 

### 2019-11 ๊ฐ’์„ ์ถ”๊ฐ€ํ•˜๊ธฐ
sample_1["๊ธฐ์ค€๋…„์›”"] = '2019-11'

 

sample_1

 

 

 

[  ๊ฒฐ๊ณผ  ]

 

 

 

 

 

 

 

4. ๋ฐ์ดํ„ฐ ํ•„ํ„ฐ๋งํ•˜๊ธฐ

 

### ์„ฑ๋ณ„ ์ค‘์— ์—ฌ์„ฑ์ธ ๋ฐ์ดํ„ฐ๋งŒ ์ถ”์ถœํ•˜๊ธฐ
condition = sample_1["์„ฑ๋ณ„"] == "์—ฌ์„ฑ"
condition

 

 

 

 

 

sample_1[condition == True]

 

 

 

 

 

sample_1[condition == False]

 

 

 

 

 

sample_1[(sample_1["์„ฑ๋ณ„"] == "์—ฌ์„ฑ") == True]

 

 

 

 

 

 

 

 

[  ๊ฐ์ฒด ์ฃผ์†Œ ์ „๋‹ฌ ๋ฐฉ์‹  ]

 

# ๊ฐ์ฒด ์ฃผ์†Œ ์ „๋‹ฌ ๋ฐฉ์‹
# - ๋‘˜๋‹ค ๊ฐ™์€ ๊ณณ์„ ๋ฐ”๋ผ๋ด…๋‹ˆ๋‹ค.

 

### ๊ฐ์ฒด ์ฃผ์†Œ ์ „๋‹ฌ ๋ฐฉ์‹
# - ๋‘˜๋‹ค ๊ฐ™์€ ๊ณณ์„ ๋ฐ”๋ผ๋ด…๋‹ˆ๋‹ค.
sample_2 = sample_1

 

sample_2

 

 

 

 

 

 

 

[   ๋ฉ”๋ชจ๋ฆฌ ๋ณต์ œ ๋ฐฉ์‹  ]

 

 

# copy() : ๋ฉ”๋ชจ๋ฆฌ ๋ณต์ œ๋ฐฉ์‹ (์‹ ๊ทœ๋กœ ๋™์ผํ•˜๊ฒŒ ์ƒ์„ฑ๋จ)
# - ์‹ ๊ทœ๋กœ ๋งŒ๋“ค์–ด์ง„ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๋ฐ›์•„์˜ด(์„œ๋กœ ์˜ํ–ฅ ์•ˆ๋ฐ›์Œ)

 

 

### copy() : ๋ฉ”๋ชจ๋ฆฌ ๋ณต์ œ๋ฐฉ์‹ (์‹ ๊ทœ๋กœ ๋™์ผํ•˜๊ฒŒ ์ƒ์„ฑ๋จ)
# - ์‹ ๊ทœ๋กœ ๋งŒ๋“ค์–ด์ง„ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๋ฐ›์•„์˜ด(์„œ๋กœ ์˜ํ–ฅ ์•ˆ๋ฐ›์Œ)
sample_2 = sample_1.copy()

 

sample_2

 

 

 

 

 

 

 

 

 

 

728x90
๋ฐ˜์‘ํ˜•

loading