CodeGym /์ž๋ฐ” ์ฝ”์Šค /Python SELF KO /ํ•„ํ„ฐ๋ง ๋ฐ ์ฒ˜๋ฆฌ๋œ ๋ฐ์ดํ„ฐ Excel๋กœ ๋‚ด๋ณด๋‚ด๊ธฐ

ํ•„ํ„ฐ๋ง ๋ฐ ์ฒ˜๋ฆฌ๋œ ๋ฐ์ดํ„ฐ Excel๋กœ ๋‚ด๋ณด๋‚ด๊ธฐ

Python SELF KO
๋ ˆ๋ฒจ 28 , ๋ ˆ์Šจ 4
์‚ฌ์šฉ ๊ฐ€๋Šฅ

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

1. ๋ฐ์ดํ„ฐ ๋‚ด๋ณด๋‚ด๊ธฐ์˜ ๊ธฐ๋ณธ์ ์ธ ์ธก๋ฉด

Excel๋กœ ๋ฐ์ดํ„ฐ ๋‚ด๋ณด๋‚ด๊ธฐ๋Š” ๋‹จ์ˆœํžˆ ํ•œ ํ˜•์‹์—์„œ ๋‹ค๋ฅธ ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ์•ผ. ๋ณด๊ณ ์„œ๋ฅผ ์‚ฌ์šฉ์ž ์นœํ™”์ ์ด๊ณ  ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๊ฑฐ๋“ . ๋‚ด ํ”„๋กœ๊ทธ๋ž˜๋จธ ์นœ๊ตฌ๊ฐ€ ํ•œ ๋ฒˆ ๋งํ–ˆ์ง€: "ํŒŒ์ด์ฌ์€ ๋งˆ๋ฒ•์„ ๋ถ€๋ฆด ์ˆ˜ ์žˆ์ง€๋งŒ, ํ•ด๋ฆฌ ํฌํ„ฐ๋„ ์ง€ํŒก์ด๊ฐ€ ํ•„์š”ํ•˜๋‹ค". ์šฐ๋ฆฌ ๊ฒฝ์šฐ ์ง€ํŒก์ด๋Š” to_excel ๋ฉ”์„œ๋“œ์ด๊ณ , pandas ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ํฌํ•จ๋˜์–ด ์žˆ์–ด.

to_excel ๊ธฐ๋ณธ

DataFrame์—์„œ Excel ํŒŒ์ผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋‚ด๋ณด๋‚ด๋Š” ๊ฐ„๋‹จํ•œ ์˜ˆ์ œ๋ฅผ ์‹œ์ž‘ํ•ด ๋ณผ๊ฒŒ. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋งˆ๋ผํ†ค ์ฐธ๊ฐ€์ž๋“ค์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š” DataFrame์ด ์žˆ๋‹ค๊ณ  ํ•ด๋ณด์ž:

Python

import pandas as pd

# DataFrame ์ƒ์„ฑ
data = {
    '์ด๋ฆ„': ['์•ˆ๋‚˜', '๋ณด๋ฆฌ์Šค', '๋น…ํ† ๋ฅด', '๊ฐˆ๋ฆฌ๋‚˜'],
    '๋‚˜์ด': [29, 34, 22, 28],
    '๋„์‹œ': ['๋ชจ์Šคํฌ๋ฐ”', '์ƒํŠธํŽ˜ํ…Œ๋ฅด๋ถ€๋ฅดํฌ', '์นด์ž”', '๋…ธ๋ณด์‹œ๋น„๋ฅด์Šคํฌ'],
    '์™„์ฃผ ์‹œ๊ฐ„': ['03:15:30', '03:45:10', '03:25:45', '03:50:05']
}

df = pd.DataFrame(data)

# DataFrame์„ Excel์— ๋‚ด๋ณด๋‚ด๊ธฐ
df.to_excel('marathon_participants.xlsx', index=False)

์ด ์˜ˆ์ œ์—์„œ ๋‹จ์ˆœํ•œ DataFrame์„ ๋งŒ๋“ค์–ด ํŒŒ์ผ marathon_participants.xlsx๋กœ ๋‚ด๋ณด๋ƒˆ์–ด. index=False ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•ด์„œ ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค๋ฉด DataFrame์˜ ์ธ๋ฑ์Šค๋ฅผ Excel๋กœ ๋‚ด๋ณด๋‚ด์ง€ ์•Š๋„๋ก ํ–ˆ๋‹ค๋Š” ์ ์— ์ฃผ๋ชฉํ•ด.

ํ˜•์‹๊ณผ ์Šคํƒ€์ผ ์ถ”๊ฐ€ํ•˜๊ธฐ

๋‹ค์Œ ๋‹จ๊ณ„๋กœ ๋„˜์–ด๊ฐ€์ž. ์Šคํƒ€์ผ์„ ์ถ”๊ฐ€ํ•ด๋ณด์ž. ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ‹์ง€๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์—†๋Š” ์‚ฌ๋žŒ์€ ์—†์–ด! pandas์™€ openpyxl์„ ์‚ฌ์šฉํ•˜๋ฉด ํ‘œ๋ฅผ ์‰ฝ๊ฒŒ ํฌ๋งทํ•˜๊ณ  ์Šคํƒ€์ผ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์–ด.

Python

import pandas as pd
from openpyxl import Workbook

# DataFrame ์ƒ์„ฑ
data = {
    '์ด๋ฆ„': ['์•ˆ๋‚˜', '๋ณด๋ฆฌ์Šค', '๋น…ํ† ๋ฅด', '๊ฐˆ๋ฆฌ๋‚˜'],
    '๋‚˜์ด': [29, 34, 22, 28],
    '๋„์‹œ': ['๋ชจ์Šคํฌ๋ฐ”', '์ƒํŠธํŽ˜ํ…Œ๋ฅด๋ถ€๋ฅดํฌ', '์นด์ž”', '๋…ธ๋ณด์‹œ๋น„๋ฅด์Šคํฌ'],
    '์™„์ฃผ ์‹œ๊ฐ„': ['03:15:30', '03:45:10', '03:25:45', '03:50:05']
}

df = pd.DataFrame(data)

# ํ˜•์‹์„ ์ถ”๊ฐ€ํ•˜์—ฌ Excel์— ์“ฐ๊ธฐ
with pd.ExcelWriter('styled_marathon.xlsx', engine='openpyxl') as writer:
    df.to_excel(writer, index=False, sheet_name='์ฐธ๊ฐ€์ž')
    worksheet = writer.sheets['์ฐธ๊ฐ€์ž']
    for col in worksheet.columns:
        max_length = 0
        column = col[0].column_letter # ์—ด์˜ ์•ŒํŒŒ๋ฒณ ํ‘œ์‹œ ๊ฐ€์ ธ์˜ค๊ธฐ
        for cell in col:
            try:
                if len(str(cell.value)) > max_length:
                    max_length = len(cell.value)
            except:
                pass
        adjusted_width = (max_length + 2) * 1.2
        worksheet.column_dimensions[column].width = adjusted_width

์ด ์˜ˆ์ œ์—์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‚ด๋ณด๋‚ด๊ธฐ๋งŒ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๋‚ด์šฉ์— ๋งž๊ฒŒ ์—ด ๋„ˆ๋น„๋ฅผ ์กฐ์ •ํ•˜์—ฌ Excel์—์„œ ๋” ๊น”๋”ํ•˜๊ฒŒ ๋ณด์ด๋„๋ก ํ–ˆ์–ด. openpyxl์„ ์‚ฌ์šฉํ•ด์„œ ์‹œํŠธ์— ์ ‘๊ทผํ•˜๊ณ  ์Šคํƒ€์ผ์„ ์ ์šฉํ–ˆ์–ด.

๋‹ค์ค‘ ์‹œํŠธ ์ž‘์—…

์—ฌ๋Ÿฌ ์‹œํŠธ๋ฅผ ๊ฐ€์ง„ ๋ณด๊ณ ์„œ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ์Šˆํผ๋งจ์˜ ์ž„๋ฌด์ฒ˜๋Ÿผ ๋“ค๋ฆด ์ˆ˜ ์žˆ์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ๋งค์šฐ ๊ฐ„๋‹จํ•ด. ์˜ˆ๋ฅผ ๋“ค์–ด, ์—ฐ๋„๋ณ„๋กœ ๋‹ค๋ฅธ ๋Œ€ํšŒ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐœ๋ณ„ ์‹œํŠธ์— ์ €์žฅํ•˜๊ณ  ์‹ถ๋‹ค๊ณ  ์ƒ์ƒํ•ด๋ด.

Python

import pandas as pd

# ์—ฐ๋„๋ณ„ ๋ฐ์ดํ„ฐ
data_2022 = {
    '์ด๋ฆ„': ['๋“œ๋ฏธํŠธ๋ฆฌ', '์—˜๋ ˆ๋‚˜'],
    '๋‚˜์ด': [30, 29],
    '๋„์‹œ': ['์˜ด์Šคํฌ', '๋ธ”๋ผ๋””๋ณด์Šคํ†ก'],
    '์™„์ฃผ ์‹œ๊ฐ„': ['03:20:05', '03:35:40']
}

data_2023 = {
    '์ด๋ฆ„': ['์ด๊ณ ๋ฅด', '์นดํ…Œ๋ฆฌ๋‚˜'],
    '๋‚˜์ด': [31, 27],
    '๋„์‹œ': ['์ฒผ๋žด๋นˆ์Šคํฌ', '์˜ˆ์นดํ…Œ๋ฆฐ๋ถ€๋ฅดํฌ'],
    '์™„์ฃผ ์‹œ๊ฐ„': ['03:29:10', '03:40:20']
}

df_2022 = pd.DataFrame(data_2022)
df_2023 = pd.DataFrame(data_2023)

# ์—ฌ๋Ÿฌ ์‹œํŠธ์— ๋ฐ์ดํ„ฐ ์“ฐ๊ธฐ
with pd.ExcelWriter('marathon_data.xlsx') as writer:
    df_2022.to_excel(writer, sheet_name='2022', index=False)
    df_2023.to_excel(writer, sheet_name='2023', index=False)

์ด ์ฝ”๋“œ๋Š” marathon_data.xlsx ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ , ๋‘ ๊ฐœ์˜ ์‹œํŠธ์— ์—ฐ๋„๋ณ„ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ด. ์—ฐ๋„, ํ”„๋กœ์ ํŠธ ๋˜๋Š” ๊ธฐํƒ€ ๋ฒ”์ฃผ๋ณ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„๋ฆฌํ•  ๋•Œ ๋งค์šฐ ํŽธ๋ฆฌํ•ด.

2. ํ•ญ์ƒ ๊ฐœ์„ ์˜ ์—ฌ์ง€๊ฐ€ ์žˆ์–ด

๋‚ด๋ณด๋‚ด๊ธฐ ์ž๋™ํ™”๋ฅผ ํ”„๋กœ์ ํŠธ์˜ ๋ณต์žกํ•œ ํ”„๋กœ์„ธ์Šค์— ์–ด๋–ป๊ฒŒ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ์„์ง€ ์ƒ๊ฐํ•ด๋ด. ๋‚ด๋ณด๋‚ธ ํ›„์— ์ฐจํŠธ๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜, ์ ‘๊ทผ์„ฑ์„ ์œ„ํ•ด ์›น ์ธํ„ฐํŽ˜์ด์Šค์™€ ๋ณด๊ณ ์„œ๋ฅผ ํ†ตํ•ฉํ•˜๊ณ  ์‹ถ์€ ๋งˆ์Œ์ด ๋“ค ์ˆ˜๋„ ์žˆ์–ด.

์–ด์จŒ๋“ , Excel๋กœ ๋ฐ์ดํ„ฐ ๋‚ด๋ณด๋‚ด๊ธฐ๋Š” ๋ณด๊ธฐ ์ข‹๊ณ  ์ •๋ณด๊ฐ€ ๋งŽ์€ ๋ณด๊ณ ์„œ๋ฅผ ๋งŒ๋“œ๋Š” ์ฒซ ๊ฑธ์Œ์ผ ๋ฟ์ด์•ผ. ์ด ๋ณด๊ณ ์„œ ๋•๋ถ„์— ์ง์žฅ์ด๋‚˜ ํ•™์—…์—์„œ ๋ฐ์ดํ„ฐ ๋ถ„์„์˜ ์Šคํƒ€๊ฐ€ ๋  ์ˆ˜ ์žˆ์„ ๊ฑฐ์•ผ!

์ด์ œ ๋ฐ์ดํ„ฐ ๋‚ด๋ณด๋‚ด๊ธฐ๋ฅผ ์ž๋™ํ™”ํ•˜๋Š” ๋„๊ตฌ๋ฅผ ๊ฐ–์ถ”์—ˆ์œผ๋‹ˆ, Excel์—์„œ ๋ณด๊ณ ์„œ๋ฅผ ๋” ์ฝ๊ธฐ ์‰ฝ๊ณ  ํ”„๋ ˆ์  ํ…Œ์ด์…˜์— ์ ํ•ฉํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•๋„ ์•Œ๊ฒŒ ๋˜์—ˆ์–ด. ๊ทธ๋Ÿฌ๋‹ˆ ์•ž์œผ๋กœ ๋‚˜์•„๊ฐ€๊ณ , ๋„ˆ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•ญ์ƒ ๋„ˆ๋ฅผ ์œ„ํ•ด ์ผํ•˜๋„๋ก ๋งŒ๋“ค์–ด๋ด!

1
ะžะฟั€ะพั
์ฟผ๋ฆฌ ์ž‘์„ฑ,ย  28 ัƒั€ะพะฒะตะฝัŒ,ย  4 ะปะตะบั†ะธั
ะฝะตะดะพัั‚ัƒะฟะตะฝ
์ฟผ๋ฆฌ ์ž‘์„ฑ
์ฟผ๋ฆฌ ์ž‘์„ฑ
์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION