python的dataframe能不能效率解决这个需求

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python的dataframe能不能效率解决这个需求相关的知识,希望对你有一定的参考价值。

参考技术A 完全没问题,pandas模块很适合处理大数据,处理很大规模的数据,速度会非常快。(还有尽量少使用循环)
如果数据量特别大(比如百万以上级别的),可以考虑使用pandas.Panel和pandas.Panel4D这两个更高维数的数据容器。一个Panel里可以储存若干个dataframe

Python Pandas Dataframe 另存为 HTML 页面

【中文标题】Python Pandas Dataframe 另存为 HTML 页面【英文标题】:Python Pandas Data Frame save as HTML page 【发布时间】:2015-12-02 11:57:34 【问题描述】:

我正在尝试将Python Pandas Data Frame 中的定义保存为HTML 页面。此外,我想让这个表保存为HTML 表能够按任何列的值进行过滤。你能提供可能的解决方案吗?最后,这应该是保存为HTML 页的表格。我想将此代码合并到我的Python 代码中。谢谢

【问题讨论】:

【参考方案1】:

您可以使用pandas.DataFrame.to_html()

示例:

>>> import numpy as np
>>> from pandas import *
>>> df = DataFrame('foo1' : np.random.randn(2),
                    'foo2' : np.random.randn(2))
>>> df.to_html('filename.html')

这会将以下html保存到filename.html

输出:

<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>foo1</th>
      <th>foo2</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>-0.223430</td>
      <td>-0.904465</td>
    </tr>
    <tr>
      <th>1</th>
      <td>0.317316</td>
      <td>1.321537</td>
    </tr>
  </tbody>
</table>

【讨论】:

谢谢。如果我想在我的 C 盘上保存这个 HTML 网页,我该如何提供路径?谢谢 你为什么不直接df.to_html('your_filename.html') @CTZhu,确实更优雅! +1。其实我之前没用过这个方法,所以不知道。让我更新我的答案。 知道如何保存样式(CSS)吗? 有没有办法为&lt;tbody&gt;&lt;/tbody&gt; 标签插入id,同时将DF 转换为to_html【参考方案2】:

.to_html() 也可以用来创建html字符串

import io
import pandas as pd
from numpy.random import randn

df = pd.DataFrame(
    randn(5, 4),
    index = 'A B C D E'.split(),
    columns = 'W X Y Z'.split()
)

str_io = io.StringIO()

df.to_html(buf=str_io, classes='table table-striped')

html_str = str_io.getvalue()

print(html_str)

<table border="1" class="dataframe table table-striped">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>W</th>
      <th>X</th>
      <th>Y</th>
      <th>Z</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>A</th>
      <td>0.302665</td>
      <td>1.693723</td>
      <td>-1.706086</td>
      <td>-1.159119</td>
    </tr>
    <tr>
      <th>B</th>
      <td>-0.134841</td>
      <td>0.390528</td>
      <td>0.166905</td>
      <td>0.184502</td>
    </tr>
    <tr>
      <th>C</th>
      <td>0.807706</td>
      <td>0.072960</td>
      <td>0.638787</td>
      <td>0.329646</td>
    </tr>
    <tr>
      <th>D</th>
      <td>-0.497104</td>
      <td>-0.754070</td>
      <td>-0.943406</td>
      <td>0.484752</td>
    </tr>
    <tr>
      <th>E</th>
      <td>-0.116773</td>
      <td>1.901755</td>
      <td>0.238127</td>
      <td>1.996652</td>
    </tr>
  </tbody>
</table>

【讨论】:

【参考方案3】:

这是一种不用 to_html 来编写 pandas 表的方法,还包括一个外部样式表:

html_string_start = '''
<html>
  <head><title>Report Title</title></head>
  <link rel="stylesheet" type="text/css" href="mystyle.css"/>
  <body>
'''
html_string_end = '''
  </body>
</html>
'''

with open(r'c:\temp\myfile.html', 'w') as f:
    f.write(html_string_start)
    f.write('<table>')
    for header in dataframe.columns.values:
        f.write('<th>'+str(header)+'</th>')
    for i in range(len(dataframe)):
        f.write('<tr>')
        for col in dataframe.columns:
            value = dataframe.iloc[i][col]    
            f.write('<td>'+str(value)+'</td>')
        f.write('</tr>')
    f.write('</table>')
    f.write(html_string_end)

【讨论】:

以上是关于python的dataframe能不能效率解决这个需求的主要内容,如果未能解决你的问题,请参考以下文章

python中具有json行类型的PySpark Dataframe列

Python Dataframe之excelcsvpicklefeatherparquetjayhdf5 文件存储格式==》存读效率对比

Python Dataframe之excelcsvpicklefeatherparquetjayhdf5 文件存储格式==》存读效率对比

使用Python能不能实现一些命令

Python pandas.DataFrame.aggregate函数方法的使用

Python pandas.DataFrame.applymap函数方法的使用