教你漂亮打印Pandas DataFrames和Series
一、前言
當(dāng)我們必須處理可能有多個(gè)列和行的大型DataFrames時(shí),能夠以可讀格式顯示數(shù)據(jù)是很重要的。這在調(diào)試代碼時(shí)非常有用。
默認(rèn)情況下,當(dāng)打印出DataFrame且具有相當(dāng)多的列時(shí),僅列的子集顯示到標(biāo)準(zhǔn)輸出。 顯示的列甚至可以多行打印出來(lái)。
二、問(wèn)題
假設(shè)我們有以下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)
現(xiàn)在,如果列數(shù)超過(guò)顯示選項(xiàng)display.max_rows的值,則輸出DataFrame可能不完整,如下所示。 僅顯示一部分列(缺少第4列和第5列),而其余列以多行方式打印。

盡管輸出仍可讀取,但絕對(duì)不建議保留列或?qū)⑵浯蛴≡诙嘈兄小?/p>
三、如何漂亮打印Pandas的DataFrames
如果您的顯示器足夠?qū)挷⑶夷軌蛉菁{更多列,則可能需要調(diào)整一些顯示選項(xiàng)。 我將在下面使用的值可能不適用于您的設(shè)置,因此請(qǐng)確保對(duì)其進(jìn)行相應(yīng)的調(diào)整。 就個(gè)人而言,我使用超寬顯示器,可以在必要時(shí)打印出相當(dāng)多的列。
如何在同一行打印所有列
現(xiàn)在,為了顯示所有的列(如果你的顯示器能夠適合他們),并在短短一行所有你需要做的是設(shè)置顯示選項(xiàng)expand_frame_repr為False:
pd.set_option('expand_frame_repr', False)

display.expand_frame_repr 默認(rèn)值:True
是否跨多行打印寬數(shù)據(jù)的完整DataFrame ,可以考慮使用max_columns,但是如果寬度超過(guò)display.width,則輸出將在多個(gè)“頁(yè)面”中回繞。
另外,您可以更改display.max_rows的值,而不是將expand_frame_repr設(shè)置為False:
pd.set_option(‘display.max_rows', False)
如果列仍打印在多頁(yè)中,那么您可能還必須調(diào)整display.width。
四、如何打印所有行
現(xiàn)在,如果您的DataFrame包含的行數(shù)超過(guò)一定數(shù)目,那么將僅顯示一些記錄(來(lái)自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設(shè)置為要輸出的行數(shù)。 如果要顯示所有行,請(qǐng)將其設(shè)置為“None”:
pd.set_option('display.max_rows', None)
五、使用上下文管理器
更好的方法是使用option_context(),它是一個(gè)上下文管理器,可用于在with語(yǔ)句上下文中臨時(shí)設(shè)置特定選項(xiàng)。
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)
六、其他有用的顯示選項(xiàng)
您可以調(diào)整更多顯示選項(xiàng),并更改Pandas DataFrames的顯示方式。
display.max_colwidth:這是顯示列名的最大字符數(shù)。 如果某個(gè)列名溢出,則將添加一個(gè)占位符(…)。
pd.set_option('display.max_colwidth', None)
display.precision:這是將用于浮點(diǎn)數(shù)的精度。 它指定小數(shù)點(diǎn)后的位數(shù)。
display.width:這是顯示字符的總數(shù)。 如果要顯示更多列,則可能有時(shí)還必須調(diào)整display.width。
您可以使用describe_option()找到完整的顯示列表:
pd.describe_option(‘display') .
給Jupyter用戶的注意事項(xiàng)
如果您正在使用Jupyter Notebooks,而不是print(df),只需使用display(df)即可相應(yīng)地調(diào)整寬度。
七、總結(jié)
在今天的文章中,我們討論了Pandas的一些顯示選項(xiàng),使您可以根據(jù)要顯示的內(nèi)容以及可能使用的顯示器,漂亮地打印DataFrame。
熊貓帶有一個(gè)設(shè)置系統(tǒng),使用戶可以調(diào)整和自定義顯示功能。 我們僅涵蓋了可用顯示選項(xiàng)的一小部分。
到此這篇關(guān)于教你漂亮打印Pandas DataFrames和Series的文章就介紹到這了,更多相關(guān)打印Pandas DataFrames和Series內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python數(shù)據(jù)分析?Pandas?Series對(duì)象操作
- 使用python計(jì)算方差方式——pandas.series.std()
- Pandas數(shù)據(jù)結(jié)構(gòu)詳細(xì)說(shuō)明及如何創(chuàng)建Series,DataFrame對(duì)象方法
- pandas的Series類(lèi)型與基本操作詳解
- Pandas把dataframe或series轉(zhuǎn)換成list的方法
- pandas中的series數(shù)據(jù)類(lèi)型詳解
- 淺談Pandas Series 和 Numpy array中的相同點(diǎn)
- Pandas中Series的屬性,方法,常用操作使用案例
相關(guān)文章
Python爬蟲(chóng)之Requests庫(kù)基本使用詳解
這篇文章主要介紹了Python爬蟲(chóng)之Requests庫(kù)基本使用詳解,Requests 庫(kù)是在 urllib 模塊的基礎(chǔ)上開(kāi)發(fā)而來(lái),繼承了urllib.request的所有特性,與urllib.request 相比,Requests 在使用時(shí)更加簡(jiǎn)潔方便、快捷,所以 Requests 庫(kù)在編寫(xiě)爬蟲(chóng)程序時(shí)使用較多,需要的朋友可以參考下2023-09-09
使用AJAX和Django獲取數(shù)據(jù)的方法實(shí)例
這篇文章主要給大家介紹了關(guān)于使用AJAX和Django獲取數(shù)據(jù)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
Python時(shí)間獲取及轉(zhuǎn)換知識(shí)匯總
這篇文章主要介紹了Python時(shí)間獲取及轉(zhuǎn)換知識(shí)匯總的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-01-01
python實(shí)現(xiàn)web方式logview的方法
這篇文章主要介紹了python實(shí)現(xiàn)web方式logview的方法,涉及Python基于web模塊操作Linux命令的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08
詳細(xì)解析Python當(dāng)中的數(shù)據(jù)類(lèi)型和變量
這篇文章主要介紹了Python當(dāng)中的數(shù)據(jù)類(lèi)型和變量,是Python學(xué)習(xí)當(dāng)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-04-04
python利用OpenCV2實(shí)現(xiàn)人臉檢測(cè)
這篇文章主要為大家詳細(xì)介紹了python利用OpenCV2實(shí)現(xiàn)人臉檢測(cè),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12
Python3.5 Pandas模塊之Series用法實(shí)例分析
這篇文章主要介紹了Python3.5 Pandas模塊之Series用法,結(jié)合實(shí)例形式分析了Python3.5中Pandas模塊的Series結(jié)構(gòu)原理、創(chuàng)建、獲取、運(yùn)算等相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2019-04-04

