教你漂亮打印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!
推薦閱讀:
- Pandas中八個常用option設置的示例詳解
- python 實現長數據完整打印方案
- MySQL數據優化-多層索引
- Pandas reindex重置索引的使用
- Python數據分析23種Pandas核心操作方法總結