教你漂亮打印Pandas DataFrames和Series

一、前言

當我們必須處理可能有多個列和行的大型DataFrames時,能夠以可讀格式顯示數據是很重要的。這在調試代碼時非常有用。

默認情況下,當打印出DataFrame且具有相當多的列時,僅列的子集顯示到標準輸出。 顯示的列甚至可以多行打印出來。

二、問題

假設我們有以下DataFrame:

import pandas as pd 
import numpy as np


df = pd.DataFrame(
  np.random.randint(0, 100, size=(100, 25)), 
  columns=[f'column{i}' for i in range(0, 25)]
)

print(df)

現在,如果列數超過顯示選項display.max_rows的值,則輸出DataFrame可能不完整,如下所示。 僅顯示一部分列(缺少第4列和第5列),而其餘列以多行方式打印。

盡管輸出仍可讀取,但絕對不建議保留列或將其打印在多行中。

三、如何漂亮打印Pandas的DataFrames

如果您的顯示器足夠寬並且能夠容納更多列,則可能需要調整一些顯示選項。 我將在下面使用的值可能不適用於您的設置,因此請確保對其進行相應的調整。 就個人而言,我使用超寬顯示器,可以在必要時打印出相當多的列。

如何在同一行打印所有列

現在,為瞭顯示所有的列(如果你的顯示器能夠適合他們),並在短短一行所有你需要做的是設置顯示選項expand_frame_repr為False:

pd.set_option('expand_frame_repr', False)

display.expand_frame_repr 默認值:True

是否跨多行打印寬數據的完整DataFrame ,可以考慮使用max_columns,但是如果寬度超過display.width,則輸出將在多個“頁面”中回繞。

另外,您可以更改display.max_rows的值,而不是將expand_frame_repr設置為False:

pd.set_option(‘display.max_rows', False)

如果列仍打印在多頁中,那麼您可能還必須調整display.width。

四、如何打印所有行

現在,如果您的DataFrame包含的行數超過一定數目,那麼將僅顯示一些記錄(來自df的頭部和尾部):

import pandas as pd 
import numpy as np


df = pd.DataFrame(
  np.random.randint(0, 5, size=(100, 4)), 
  columns=[f'column{i}' for i in range(0, 4)]
)

print(df)

# column0  column1  column2  column3
# 0         4        0        0        0
# 1         2        2        4        2
# 2         2        4        0        2
# 3         0        0        0        4
# 4         3        4        3        3
# ..      ...      ...      ...      ...
# 95        3        1        1        2
# 96        1        4        0        0
# 97        0        3        2        1
# 98        3        3        4        2
# 99        0        3        0        3
# [100 rows x 4 columns]

如果要顯示更大范圍(甚至全部)的行,則需要將display.max_rows設置為要輸出的行數。 如果要顯示所有行,請將其設置為“None”:

pd.set_option('display.max_rows', None)

五、使用上下文管理器

更好的方法是使用option_context(),它是一個上下文管理器,可用於在with語句上下文中臨時設置特定選項。

import pandas as pd 
import numpy as np

df = pd.DataFrame(
  np.random.randint(0, 100, size=(100, 25)), 
  columns=[f'column{i}' for i in range(0, 25)]
)

with pd.option_context('expand_frame_repr', False, 'display.max_rows', None): 
  print(df)

六、其他有用的顯示選項

您可以調整更多顯示選項,並更改Pandas DataFrames的顯示方式。

display.max_colwidth:這是顯示列名的最大字符數。 如果某個列名溢出,則將添加一個占位符(…)。

pd.set_option('display.max_colwidth', None)

display.precision:這是將用於浮點數的精度。 它指定小數點後的位數。

display.width:這是顯示字符的總數。 如果要顯示更多列,則可能有時還必須調整display.width。

您可以使用describe_option()找到完整的顯示列表:

pd.describe_option(‘display') .

給Jupyter用戶的註意事項

如果您正在使用Jupyter Notebooks,而不是print(df),隻需使用display(df)即可相應地調整寬度。

七、總結

在今天的文章中,我們討論瞭Pandas的一些顯示選項,使您可以根據要顯示的內容以及可能使用的顯示器,漂亮地打印DataFrame。

熊貓帶有一個設置系統,使用戶可以調整和自定義顯示功能。 我們僅涵蓋瞭可用顯示選項的一小部分。

到此這篇關於教你漂亮打印Pandas DataFrames和Series的文章就介紹到這瞭,更多相關打印Pandas DataFrames和Series內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: