๊ฐœ๋ฐœ Code/ํŒŒ์ด์ฌ Python

[Python][pandas] ๋ฐ์ดํ„ฐ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ - Excel

5hr1rnp 2025. 1. 22. 15:49
๋ฐ˜์‘ํ˜•

Excel ํŒŒ์ผ์ด๋ž€ ?


  Excel ํŒŒ์ผ์€ Microsoft Excel์—์„œ ์ƒ์„ฑ๋˜๋Š” ๋ฐ์ดํ„ฐ ํ˜•์‹์œผ๋กœ, ์ผ๋ฐ˜์ ์œผ๋กœ .xlsx ๋˜๋Š” .xls ํ™•์žฅ์ž๋ฅผ ๊ฐ€์ง„๋‹ค. ๊ฐ Excel ํŒŒ์ผ์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์‹œํŠธ(Sheet)๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ, ์‹œํŠธ ์•ˆ์—๋Š” ํ–‰(Row)๊ณผ ์—ด(Column)๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ๋‹ค.

 

  ๋ฐ์ดํ„ฐ ๋ถ„์„์—์„œ Excel ํŒŒ์ผ์€ ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ ํ˜•์‹ ์ค‘ ํ•˜๋‚˜๋‹ค. Pandas๋Š” Excel ํŒŒ์ผ์„ ์†์‰ฝ๊ฒŒ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋Š” read_excel() ํ•จ์ˆ˜๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” Excel ํŒŒ์ผ์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•˜๊ณ , Pandas๋ฅผ ํ™œ์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•, ๊ทธ๋ฆฌ๊ณ  ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์™€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณธ๋‹ค.

 

Excel ํŒŒ์ผ ์˜ˆ์‹œ:

# Sheet1
Name    Age    City
๊น€์„œ์šธ   25    ์„œ์šธ
์ด์ „์ฃผ   30    ์ „์ฃผ
์†ก๊ณต์ฃผ   35    ๊ณต์ฃผ

# Sheet2
Product    Sales
A          100
B          200
C          300

Pandas๋กœ Excel ํŒŒ์ผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ


Pandas์˜ read_excel() ํ•จ์ˆ˜๋Š” Excel ํŒŒ์ผ์„ ์ฝ์–ด DataFrame์œผ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค. ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

import pandas as pd

# Excel ํŒŒ์ผ ์ฝ๊ธฐ
df = pd.read_excel('data.xlsx')

# ๋ฐ์ดํ„ฐ ํ™•์ธ
print(df.head())

# ์ถœ๋ ฅ ์˜ˆ์‹œ
# Name    Age    City
# ๊น€์„œ์šธ   25    ์„œ์šธ
# ์ด์ „์ฃผ   30    ์ „์ฃผ
# ์†ก๊ณต์ฃผ   35    ๊ณต์ฃผ

728x90
๋ฐ˜์‘ํ˜•

์ฃผ์š” ๋งค๊ฐœ๋ณ€์ˆ˜ (Parameters)


# sheet_name
# ์ฝ์–ด์˜ฌ ์‹œํŠธ๋ฅผ ์ง€์ •ํ•จ
# default๋Š” 0์œผ๋กœ ์ฒซ ๋ฒˆ์งธ ์‹œํŠธ๋ฅผ ์ฝ์Œ
# ๋‹ค์ค‘ ์‹œํŠธ ์ฝ๊ธฐ:
#  ํŠน์ • ์‹œํŠธ ์ด๋ฆ„: sheet_name='Sheet1'
#  ์‹œํŠธ ๋ฒˆํ˜ธ: sheet_name=1 (๋‘ ๋ฒˆ์งธ ์‹œํŠธ)
#  ๋ชจ๋“  ์‹œํŠธ ์ฝ๊ธฐ: sheet_name=None (๊ฒฐ๊ณผ๋Š” ๋”•์…”๋„ˆ๋ฆฌ ํ˜•ํƒœ)

df = pd.read_excel('data.xlsx', sheet_name=0) # ์ฒซ ๋ฒˆ์งธ ์‹œํŠธ ์ฝ๊ธฐ

df_sheet1 = pd.read_excel('data.xlsx', sheet_name='Sheet1') # ํŠน์ • ์‹œํŠธ ์ด๋ฆ„์œผ๋กœ ์ฝ๊ธฐ

# ๋ชจ๋“  ์‹œํŠธ ์ฝ๊ธฐ
dfs = pd.read_excel('data.xlsx', sheet_name=None)  # ๊ฒฐ๊ณผ๋Š” ๋”•์…”๋„ˆ๋ฆฌ ํ˜•ํƒœ

# header
# ํ—ค๋”(์—ด ์ด๋ฆ„)๊ฐ€ ์žˆ๋Š” ํ–‰ ๋ฒˆํ˜ธ๋ฅผ ์ง€์ •ํ•จ
# default๋Š” 0(์ฒซ ๋ฒˆ์งธ ํ–‰)
# ํ—ค๋”๊ฐ€ ์—†๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ์œ„์น˜์— ์žˆ์„ ๊ฒฝ์šฐ ์ง์ ‘ ์ง€์ • ๊ฐ€๋Šฅํ•จ

df = pd.read_excel('data.xlsx', header=0) # ์ฒซ ๋ฒˆ์งธ ํ–‰์„ ํ—ค๋”๋กœ ์‚ฌ์šฉ

df_no_header = pd.read_excel('data.xlsx', header=None) # ํ—ค๋” ์—†์ด ์ฝ๊ธฐ

# usecols
# ์ฝ์–ด์˜ฌ ์—ด์˜ ๋ฒ”์œ„ ๋˜๋Š” ์ด๋ฆ„์„ ์ง€์ •ํ•จ

df_columns = pd.read_excel('data.xlsx', usecols='A:C') # ํŠน์ • ์—ด ๋ฒ”์œ„ ์ฝ๊ธฐ

df_selected = pd.read_excel('data.xlsx', usecols=['Name', 'Age']) # ํŠน์ • ์—ด ์ด๋ฆ„๋งŒ ์ฝ๊ธฐ

# skiprows
# ์ฝ๋Š” ๋™์•ˆ ๊ฑด๋„ˆ๋›ธ ํ–‰ ์ˆ˜๋ฅผ ์ง€์ •ํ•จ
# ๋ฐ์ดํ„ฐ ์œ„์— ์„ค๋ช…์ด๋‚˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์œ ์šฉ

df_skip = pd.read_excel('data.xlsx', skiprows=2) # ์ฒ˜์Œ 2๊ฐœ์˜ ํ–‰ ๊ฑด๋„ˆ๋›ฐ๊ธฐ

# dtype
# ํŠน์ • ์—ด์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์ง€์ •ํ•จ

df = pd.read_excel('data.xlsx', dtype={'Age': int}) # Age ์—ด์„ ์ •์ˆ˜๋กœ ์ฝ๊ธฐ

read_excel() ์˜ ๊ฒฝ์šฐ์—๋„ read_csv()์ฒ˜๋Ÿผ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†ํ›„ํ•˜๋‹ค. ํ•ด๋‹น ๋‚ด์šฉ์€ ์ด์ „์— ์ž‘์„ฑํ•œ ๊ธ€์„ ์ฐธ๊ณ ํ•˜๊ธธ ๋ฐ”๋ž€๋‹ค.

 

2025.01.22 - [๊ฐœ๋ฐœ Code/ํŒŒ์ด์ฌ Python] - [Python][pandas] ๋ฐ์ดํ„ฐ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ - CSV

 

[Python][pandas] ๋ฐ์ดํ„ฐ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ - CSV

CSV๋ž€ ?   ๋ฐ์ดํ„ฐ ๋ถ„์„์—์„œ ๊ฐ€์žฅ ํ”ํžˆ ์ ‘ํ•˜๋Š” ํ˜•์‹ ์ค‘ ํ•˜๋‚˜๊ฐ€ CSV(Comma Separated Values) ํŒŒ์ผ์ด๋‹ค. CSV๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์‰ผํ‘œ(๋˜๋Š” ๋‹ค๋ฅธ ๊ตฌ๋ถ„์ž)๋กœ ๊ตฌ๋ถ„๋œ ํ…์ŠคํŠธ ํ˜•์‹์œผ๋กœ ์ €์žฅ๋œ๋‹ค. Pandas์˜ read_csv() ํ•จ์ˆ˜๋Š”

5hr1rnp.tistory.com

 

๋ฐ˜์‘ํ˜•