달나라 노트

Python Pandas : to_html() (DataFrame을 html로 바꾸기, convert dataframe to html) 본문

Python/Python Pandas

Python Pandas : to_html() (DataFrame을 html로 바꾸기, convert dataframe to html)

CosmosProject 2023. 10. 25. 02:02
728x90
반응형

 

 

 

to_html() method는 DataFrame을 html의 table tag format으로 만들어줍니다.

 

 

Syntax

DataFrame.to_html(header=True/False,
                  index=True/False,
                  na_rep=value,
                  border=int,
                  float_format=pattern)

 

- header

True -> html에 header를 표시해줍니다. (column name을 표시한다는 의미입니다.)

False -> html에 header를 표시하지 않습니다. (column name을 표시하지 않는다는 의미입니다.)

 

 

- index

True -> html에 index를 표시해줍니다.

False -> html에 index를 표시하지 않습니다.

 

 

- na_rep

NaN을 무엇으로 대체하여 표시할지를 의미합니다.

 

 

- border

html table에서 경계선의 두께를 정합니다.

 

 

- float_format

DataFrame에 있는 float type data에 어떤 format을 적용시킬지를 정합니다.

주의할 점은 float type에만 적용되고, 정수/문자 등의 data에는 적용되지 않습니다.

 

 

 

 

이 외에도 다양한 option들이 있으니 아래 링크를 참고하면 좋습니다.

https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_html.html

 

pandas.DataFrame.to_html — pandas 2.1.1 documentation

next pandas.io.formats.style.Styler.to_html

pandas.pydata.org

 

 

 

 

import pandas as pd

df_test = pd.DataFrame(
    {
        'col1': [1, 2, 3, 4, 5],
        'col2': ['a', 'b', 'd', 'd', 'e'],
        'col3': [0.12345, 0.282749, 102838.284929, 18382.29304, 281.29301]
    }
)
print(df_test)



html_string = df_test.to_html()
print(html_string)



-- Result
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>col1</th>
      <th>col2</th>
      <th>col3</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>1</td>
      <td>a</td>
      <td>0.123450</td>
    </tr>
    <tr>
      <th>1</th>
      <td>2</td>
      <td>b</td>
      <td>0.282749</td>
    </tr>
    <tr>
      <th>2</th>
      <td>3</td>
      <td>d</td>
      <td>102838.284929</td>
    </tr>
    <tr>
      <th>3</th>
      <td>4</td>
      <td>d</td>
      <td>18382.293040</td>
    </tr>
    <tr>
      <th>4</th>
      <td>5</td>
      <td>e</td>
      <td>281.293010</td>
    </tr>
  </tbody>
</table>

 

아무 option을 적용하지 않고 to_html() method를 사용하였습니다.

DataFrame이 html형태로 변환되었습니다.

 

 

 

 

 

 

import pandas as pd

df_test = pd.DataFrame(
    {
        'col1': [1, 2, 3, 4, 5],
        'col2': ['a', 'b', 'd', 'd', 'e'],
        'col3': [0.12345, 0.282749, 102838.284929, 18382.29304, 281.29301]
    }
)


html_string = df_test.to_html(header=True,
                              index=False,
                              float_format='{:0,.2f}'.format)
print(html_string)




-- Result
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th>col1</th>
      <th>col2</th>
      <th>col3</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1</td>
      <td>a</td>
      <td>0.12</td>
    </tr>
    <tr>
      <td>2</td>
      <td>b</td>
      <td>0.28</td>
    </tr>
    <tr>
      <td>3</td>
      <td>d</td>
      <td>102,838.28</td>
    </tr>
    <tr>
      <td>4</td>
      <td>d</td>
      <td>18,382.29</td>
    </tr>
    <tr>
      <td>5</td>
      <td>e</td>
      <td>281.29</td>
    </tr>
  </tbody>
</table>

 

다양한 옵션을 적용해봤습니다.

 

- float_format='{:0,.2f}'.format

특히 이런식으로 format을 설정하면 천단위 콤마 또는 소수점 자리를 몇자리까지 표시할지 등의 format을 정할 수 있습니다.

 

 

 

 

 

 

728x90
반응형
Comments