Python中4种方法实现打印整个Pandas DataFrame

数据可视化是一种使用图形、图表、地图等视觉线索来提供数据洞察的技术。这很有用,因为它有助于直观、轻松地理解大量数据,从而做出更好的决策。当我们使用打印大量数据集时,它会被截断。

在本文中,我们将了解如何在不截断的情况下打印整个Pandas 数据框或系列。 

在 Python 中打印整个 Pandas DataFrame
默认情况下,如果长度超过默认长度,则不打印完整的数据帧,输出被截断,如下所示: 

import numpy as np
from sklearn.datasets import load_iris
import pandas as pd
 
# Loading irirs dataset
data = load_iris()
df = pd.DataFrame(data.data,
                  columns = data.feature_names)
display(df)

有4 种方法可以打印整个 pandas Dataframe:

  1. 使用 to_string() 方法
  2. 使用 pd.option_context() 方法
  3. 使用 pd.set_options() 方法
  4. 使用 pd.to_markdown() 方法

方法 1:使用 to_string()
虽然此方法最简单,但对于非常大的数据集(数百万级)来说并不可取,因为它将整个数据帧转换为字符串对象,但对于大小为数千级的数据帧非常有效。
示例:在此示例中,我们使用load_irisscikit-learn 中的函数加载 Iris 数据集,然后创建一个df包含数据集特征的 pandas DataFrame ( ),最后使用 并将整个 DataFrame 转换为字符串表示形式并显示。to_string()

import numpy as np
from sklearn.datasets import load_iris
import pandas as pd
 
data = load_iris()
df = pd.DataFrame(data.data,
                  columns = data.feature_names)
 
# Convert the whole dataframe as a string and display
display(df.to_string())


方法 2:使用 pd.option_context()
Pandas 允许通过option_context()方法和set_option()方法更改设置。这两种方法都是相同的,唯一的区别是后者永久更改设置,而前者仅在上下文管理器范围内执行此操作。

语法: pandas.option_context(*args)

示例:在此示例中,我们使用 scikit-learn 中的 Iris 数据集,创建df具有指定格式选项的 pandas DataFrame ( ),并在显示设置(例如最大行数、列数和精度)的临时上下文中打印 DataFrame,仅针对本地范围进行修改。

import numpy as np
from sklearn.datasets import load_iris
import pandas as pd
 
data = load_iris()
df = pd.DataFrame(data.data, 
                  columns = data.feature_names)
 
# The scope of these changes made to
# pandas settings are local to with statement.
with pd.option_context('display.max_rows', None,
                       'display.max_columns', None,
                       'display.precision', 3,
                       ):
    print(df)


方法 3:使用 pd.set_option()
此方法类似于 pd.option_context() 方法,并采用与方法 2 讨论的相同参数,但与 pd.option_context() 不同,它的范围和效果作用于整个脚本,即所有数据帧设置都会永久更改 

要显式重置值,必须使用pd.reset_option('all')方法来恢复更改。

语法: pandas.set_option(pat, value)

示例:此代码修改全局 pandas 显示选项,以显示给定 DataFrame ( df) 的所有行和列,宽度和精度不受限制。然后它将选项重置为其默认值并再次显示 DataFrame,说明默认设置的恢复。

import numpy as np
from sklearn.datasets import load_iris
import pandas as pd
 
data = load_iris()
df = pd.DataFrame(data.data,
                  columns = data.feature_names)
 
# Permanently changes the pandas settings
pd.set_option('display.max_rows', None)
pd.set_option('display.max_columns', None)
pd.set_option('display.width', None)
pd.set_option('display.max_colwidth', -1)
 
# All dataframes hereafter reflect these changes.
display(df)
 
print('**RESET_OPTIONS**')
 
# Resets the options
pd.reset_option('all')
display(df)


方法 4:使用 to_markdown() 
此方法类似于 to_string() 方法,因为它也将数据框转换为字符串对象,并为其添加样式和格式设置。

语法: DataFrame.to_markdown(buf=None, mode='wt', index=True,, **kwargs)

示例:此代码使用 scikit-learn 中的 Iris 数据集创建 pandas DataFrame ( df),然后使用方法 打印 DataFrame 的格式化 Markdown 表示to_markdown()形式。

import numpy as np
from sklearn.datasets import load_iris
import pandas as pd
 
data = load_iris()
df = pd.DataFrame(data.data,
                  columns=data.feature_names)
 
# Converts the dataframe into str object with formatting
print(df.to_markdown())