Python中4種方法實現列印整個Pandas DataFrame

banq發表於2024-05-15

資料視覺化是一種使用圖形、圖表、地圖等視覺線索來提供資料洞察的技術。這很有用,因為它有助於直觀、輕鬆地理解大量資料,從而做出更好的決策。當我們使用列印大量資料集時,它會被截斷。

在本文中,我們將瞭解如何在不截斷的情況下列印整個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())

 

相關文章