Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 Pandas 데이터프레임을 HTML 파일로 내보내는 방법

개요

Pandas의 to_html() 메서드를 활용하면 CSV 파일로 저장된 데이터프레임을 손쉽게 HTML 테이블 형식으로 변환할 수 있습니다. 이 글에서는 pandas.csv 파일이 이미 준비되어 있다고 가정하고, 이를 HTML 파일로 내보내는 전체 과정을 단계별로 살펴보겠습니다.

해결 방법

데이터프레임을 HTML 파일로 내보내려면 아래 단계를 순서대로 따르면 됩니다.

1단계: CSV 파일 읽기

read_csv() 메서드를 사용해 CSV 파일을 데이터프레임으로 불러옵니다.

df = pd.read_csv('pandas.csv')

2단계: HTML 파일 생성

파일 객체를 사용해 쓰기 모드('w')로 pandas.html이라는 새 파일을 생성합니다.

f = open('pandas.html', 'w')

3단계: 데이터프레임을 HTML 형식으로 변환

to_html() 메서드를 호출하여 데이터프레임을 HTML 테이블 문자열로 변환한 뒤, 그 결과를 변수에 저장합니다.

result = df.to_html()

4단계: 파일에 쓰기 및 닫기

파일 객체를 통해 변환된 모든 데이터를 파일에 기록하고, 작업이 끝나면 반드시 파일 객체를 닫아 리소스를 해제합니다.

f.write(result)
f.close()

전체 예제 코드

아래는 위 과정을 하나로 묶은 전체 구현 예제입니다.

import pandas as pd

# CSV 파일 읽기
df = pd.read_csv('pandas.csv')
print(df)

# HTML 파일 생성 및 데이터프레임 변환
f = open('pandas.html', 'w')
result = df.to_html()
f.write(result)
f.close()

실행 결과

코드를 실행하면 pandas.html 파일이 생성되며, 파일 안에는 다음과 같은 HTML 테이블이 작성됩니다.

<table border="1" class="dataframe">
    <thead>
        <tr style="text-align: right;">
            <th></th>
            <th>Id</th>
            <th>Data</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <th>0</th>
            <td>1</td>
            <td>11</td>
        </tr>
        <tr>
            <th>1</th>
            <td>2</td>
            <td>22</td>
        </tr>
        <tr>
            <th>2</th>
            <td>3</td>
            <td>33</td>
        </tr>
        <tr>
            <th>3</th>
            <td>4</td>
            <td>44</td>
        </tr>
        <tr>
            <th>4</th>
            <td>5</td>
            <td>55</td>
        </tr>
    </tbody>
</table>

생성된 HTML 파일을 브라우저에서 열면 Id와 Data 컬럼으로 구성된 표가 깔끔하게 렌더링되어 나타납니다.

추가 팁: with 문으로 더 안전하게 처리하기

파일을 직접 열고 닫는 대신 파이썬의 with 문을 사용하면 예외 발생 여부와 관계없이 파일이 자동으로 닫히므로 더욱 안전합니다.

import pandas as pd

df = pd.read_csv('pandas.csv')

with open('pandas.html', 'w', encoding='utf-8') as f:
    f.write(df.to_html())

또한 한글 등 비ASCII 문자가 포함된 데이터를 다룰 때는 encoding='utf-8' 옵션을 지정하는 것이 좋습니다. 필요에 따라 to_html(index=False)처럼 인덱스를 제외하거나, classes='my-table' 옵션으로 CSS 클래스를 지정해 스타일링할 수도 있습니다.