Информация Panda () для HTML

Pandas предлагает некоторые сводные статистические данные с помощью функции describe() называемой DataFrame . Выходной функцией является другой DataFrame , поэтому он легко экспортируется в HTML с вызовом to_html() .

Он также предлагает информацию о DataFrame с DataFrame info() , но это распечатывается, возвращая None . Есть ли способ получить ту же информацию, что и DataFrame или любой другой способ, который можно экспортировать в HTML?

Вот пример info() для справки:

 <class 'pandas.core.frame.DataFrame'> RangeIndex: 5 entries, 0 to 4 Data columns (total 7 columns): 0 5 non-null float64 1 5 non-null float64 2 5 non-null float64 3 5 non-null float64 4 5 non-null float64 5 5 non-null float64 6 5 non-null float64 dtypes: float64(7) memory usage: 360.0 bytes 

4 Solutions collect form web for “Информация Panda () для HTML”

Я пытаюсь переписать другое решение с помощью StringIO , также необходимо использовать getvalue() с split :

 from pandas.compat import StringIO frame = pd.DataFrame(np.random.randn(100, 3), columns =['A', 'B', 'C']) a = StringIO() frame.info(buf = a) # Example to convert to html contents = a.getvalue().split('\n') with open("test_pandas.html", "w") as e: for lines in contents: e.write("<pre>" + lines + "</pre> <br>\n") 

Решением может быть сохранение вывода информации () в записываемый буфер (с использованием аргумента buf ), а затем преобразование в html .

Ниже пример использования файла txt в качестве буфера, но это можно легко сделать в памяти с помощью StringIO .

 import pandas as pd import numpy as np frame = pd.DataFrame(np.random.randn(100, 3), columns =['A', 'B', 'C']) _ = frame.info(buf = open('test_pandas.txt', 'w')) #save to txt # Example to convert to html contents = open("test_pandas.txt","r") with open("test_pandas.html", "w") as e: for lines in contents.readlines(): e.write("<pre>" + lines + "</pre> <br>\n") 

Вот как выглядит txt:

введите описание изображения здесь

Вариант с использованием StringIO можно найти в ответе @jezrael, поэтому, вероятно, нет смысла обновлять этот ответ.

 import StringIO output = StringIO.StringIO() #Write df.info to a string buffer df.info(buf=output) #put the info back to a dataframe so you can use df.to_html() df_info = pd.DataFrame(columns=['DF INFO'], data=output.getvalue().split('\n')) df_info.to_html() 

Вводя все эти замечательные ответы, я в итоге сделал следующее:

  • Удалите первые три и последние две строки, потому что они содержат информацию о памяти и другие вещи, которые не находятся в табличном формате (и фиксированное количество строк)
  • Преобразуйте информацию о столбцах ( datatype в фрагменте ниже) в базу StringIO pandas DataFrame, используя StringIO
  • Переименовали столбцы «count», «null» и «dtype»
  • Вернул html информации о столбцах и обычный текст оставшихся выровненных (первые 3 и последние 2)

Таким образом, результат:

 def process_content_info(content: pd.DataFrame): content_info = StringIO() content.info(buf=content_info) str_ = content_info.getvalue() lines = str_.split("\n") table = StringIO("\n".join(lines[3:-3])) datatypes = pd.read_table(table, delim_whitespace=True, names=["column", "count", "null", "dtype"]) datatypes.set_index("column", inplace=True) info = "\n".join(lines[0:2] + lines[-2:-1]) return info, datatypes 

Возможно, второй StringIO может быть упрощен, но в любом случае это достигает того, что мне нужно.

  • Можно ли добавить строку как элемент легенды в matplotlib
  • Выбор столбцов, равных подстроке в python
  • Как реализовать «in» и «not in» для блока данных Pandas
  • Суммирование по строкам данных Pandas Dataframe
  • ImportError: нет модуля с именем pandas
  • Получение содержимого из html и запись загруженного содержимого в определенном формате в CSV
  • операция pandas groupby с отсутствующими данными
  • Как проверить, пуст ли Pandas DataFrame?
  • Python - лучший язык программирования в мире.