सुंदर-संपूर्ण पंडों की श्रृंखला / डाटाफ्रेम


650

मैं टर्मिनल पर सीरीज और डेटाफ्रेम के साथ बहुत काम करता हूं। __repr__एक श्रृंखला के लिए डिफ़ॉल्ट कुछ सिर और पूंछ मूल्यों के साथ, एक कम नमूना लौटाता है, लेकिन बाकी गायब है।

वहाँ पूरी श्रृंखला / DataFrame सुंदर मुद्रित करने के लिए एक अंतर्निहित तरीका है? आदर्श रूप से, यह उचित संरेखण का समर्थन करेगा, शायद स्तंभों के बीच की सीमाएँ, और शायद अलग-अलग स्तंभों के लिए रंग-कोडिंग भी।


19
कम आउटपुट डिफ़ॉल्ट विकल्पों के कारण होता है जिसे आप pd.set_option('display.max_rows', 1000)उदाहरण के लिए उपयोग कर बदल सकते हैं , रंग कुछ और है, मुझे लगता है कि आप html repr आउटपुट को रंग देने के बारे में बात कर रहे हैं। मुझे नहीं लगता कि यह बिल्कुल बनाया गया है।
EdChum

2
@EdChum: धन्यवाद, मुझे इस बारे में पता था display.max_rows, समस्या यह है कि ज्यादातर समय मैं चाहता हूं कि आउटपुट को छोटा कर दिया जाए। यह केवल कभी-कभी होता है कि मैं पूर्ण आउटपुट देखना चाहता हूं। मैं विकल्प को बहुत अधिक मूल्य पर सेट कर सकता हूं, डिफ़ॉल्ट का उपयोग कर सकता हूं __repr__, फिर मान को वापस कर सकता हूं, लेकिन यह थोड़ा बोझिल लगता है, और मैं उस मामले में अपना खुद का सुंदर-प्रिंट फ़ंक्शन भी लिख सकता हूं।
डन पील

1
@EdChum: रंगों के बारे में - यह एक रंग टर्मिनल है, इसलिए प्रत्येक पंक्ति को एक अलग रंग में मुद्रित करना अच्छा होगा, ताकि एक दूसरे से मूल्यों को आसानी से अलग किया जा सके। पंडास ipython के साथ अच्छी तरह से काम करता है, जो उन्नत टर्मिनल सुविधाओं का उपयोग करता है - जिसमें रंग भी शामिल है - इसलिए मैं सोच रहा था कि क्या पंडों के पास कुछ रंग क्षमताएं थीं।
डन पील

1
मैं IPython नोटबुक में टर्मिनल शेल के बजाय IPython नोटबुक में पंडों का उपयोग करता हूं, मुझे इसमें कोई विकल्प नहीं दिखता है set_optionकि यह कलरिंग का समर्थन करता है, यह शायद कुछ ऐसा है जो कुछ सीएसएस या आउटपुट स्वरूपण को लागू करने के लिए एक प्लगइन के रूप में किया जा सकता है। यह एकमात्र तरीका है जो मुझे लगता है कि आप इसे प्राप्त कर सकते हैं
EdChum

जवाबों:


862

आप option_contextएक या अधिक विकल्पों के साथ भी, का उपयोग कर सकते हैं:

with pd.option_context('display.max_rows', None, 'display.max_columns', None):  # more options can be specified also
    print(df)

यह स्वचालित रूप से अपने पिछले मूल्यों के विकल्प वापस कर देगा।

यदि आप jupyter-नोटबुक पर काम कर रहे हैं, तो display(df)बजाय print(df)jupyter रिच डिस्प्ले लॉजिक (जैसे) का उपयोग करेंगे ।


2
धन्यवाद! ध्यान दें कि Noneउन्हें बंद करने के लिए अधिकतम मान सेट करना। का उपयोग करते हुए with pd.option_context()विकल्प दस्तावेजों क्या बहुत स्पष्ट रूप से और स्पष्ट रूप से चल रहा है, और यह कैसे, स्वरूपण कि वांछित हो सकता है जैसे का उपयोग कर उत्पादन में अन्य परिवर्तन को प्राप्त करने के स्पष्ट करता है precision, max_colwidth, expand_frame_repr, colheader_justify, date_yearfirst, encoding, और कई कई और अधिक: pandas.pydata.org/pandas -दो / स्थिर / विकल्प.
html

37
किसी के लिए जो आश्चर्यचकित करता है: जुपिटर का उपयोग करते समय, display(df)print(df)
tsvikas

3
3 यहाँ क्या दर्शा रहा है?
मोना जलाल

1
यदि DataFrame वास्तव में बड़ा है, तो इसे अस्थायी रूप से लिखने के लिए समझदारी हो सकती है। अस्थायी रूप से और Jupyter Lab के तेज सीएसवी दर्शक का उपयोग करें
Dan

Display.max_columns के लिए उस '3' को उस डिफ़ॉल्ट_ मान के लिए उस Option_context परम को सेट करने के लिए 'कोई नहीं' होना चाहिए। फिक्स्ड।
16

605

सेटिंग्स हैक करने की कोई जरूरत नहीं है। एक सरल तरीका है:

print(df.to_string())

1
आपके पास कितने कॉलम हैं? मैंने 1300 स्तंभों के साथ जाँच की है और यह ठीक काम करता है: स्ट्रिंग आयात से itertools आयात संयोजनों से ascii_letters df = pd.DataFrame (data = [[0] * 1326], index = [0], column = [(a + b) संयोजनों में बी, (एससीआई_लेटर्स, 2)])
एंड्री शोखिन

11
का उपयोग करते हुए with pd.option_context()विकल्प दस्तावेजों क्या और अधिक स्पष्ट रूप से और स्पष्ट रूप से चल रहा है, और यह कैसे, स्वरूपण कि वांछित किया जा सकता है का उपयोग करते हुए जैसे उत्पादन में अन्य परिवर्तन को प्राप्त करने के स्पष्ट करता है precision, max_colwidth, expand_frame_repr, colheader_justify, date_yearfirst, encoding, और कई कई और अधिक: pandas.pydata.org/ पांडा-डॉक्स / स्थिर / विकल्प।
html

2
मैं अन्य उत्तरों को पसंद करता हूं क्योंकि यह मेरे उदाहरण में अजीब लगता है अगर मेरे पास बहुत सारे कॉलम हैं और मेरी स्क्रीन उन्हें प्रदर्शित करने के लिए पर्याप्त विस्तृत नहीं है। कॉलम नाम और डेटा अलग-अलग लाइन ब्रेक करेंगे, इसलिए यह देखना आसान नहीं है कि कौन सा डेटा किस कॉलम के नाम से संबंधित है।
Dremet

9
पूछने वाले ने "सुंदर-प्रिंट" समाधान का अनुरोध किया। यह बात नहीं है। यदि यह ज्यूपिटर नोटबुक के भीतर उपयोग किया जाता है, तो बिल्ट-इन सुंदर डिस्प्ले का उपयोग नहीं किया जाएगा। pd.set_option('display.max_rows', None)छपाई से ठीक पहले उपयोग करना बेहतर है df
एलएस

@LS ने python 3.x Jupyter नोटबुक पर pd.set_option ('display.max_rows', none) और df.to_string () दोनों का परीक्षण किया और प्रिंट होने पर उन्होंने उसी आउटपुट का उत्पादन किया। यदि उपरोक्त उत्तर पिछले संस्करणों के लिए काम नहीं करता था, तो यह अब करता है।
एच फ्रेजेड सेप

166

यकीन है, अगर यह बहुत ऊपर आता है, तो इस तरह से एक फ़ंक्शन बनाएं। IPython: https://ipython.org/ipython-doc/1/config/overview.html शुरू करने पर आप इसे हर बार लोड करने के लिए कॉन्फ़िगर कर सकते हैं

def print_full(x):
    pd.set_option('display.max_rows', len(x))
    print(x)
    pd.reset_option('display.max_rows')

के रूप में रंग के लिए, रंगों के साथ बहुत विस्तृत हो रही है मुझे उल्टा लगता है, लेकिन मैं बूटस्ट्रैप की.table-striped तरह कुछ सहमत हूँ अच्छा होगा। आप हमेशा इस सुविधा का सुझाव देने के लिए एक समस्या बना सकते हैं।


5
लिंक मर चुका है। शायद यह ipython.org/ipython-doc/dev/config/intro.html होना चाहिए ?
ओस्ट्रोकैच

2
यह बहुत अच्छा होगा, यदि कोई, कोई भी, यहां तक ​​कि लेखक भी हो सकता है, लिंक को सत्यापित और ठीक कर सकता है और इन टिप्पणियों को अप्रचलित कर सकता है।
हारून हॉल

यह बुरा है, क्योंकि यह मान लेता है कि मुद्रण प्रक्रिया से पहले विकल्प को डिफ़ॉल्ट रूप से सेट किया गया था जो कि जरूरी नहीं है और इसलिए अप्रत्याशित व्यवहार हो सकता है। कथन के साथ संयोजन के रूप में विकल्प के संदर्भ का उपयोग करना अधिक मजबूत विकल्प है और इससे पहले जो कुछ भी सेट किया गया था, उस पर वापस आ जाएगा।
inVader

104

संदर्भ प्रबंधक का उपयोग करने के विकल्प के रूप में पांडा आयात करने के बाद, पूरे डेटाफ्रेम प्रदर्शित करने के लिए इस तरह के विकल्प सेट करें :

pd.set_option('display.max_columns', None)  # or 1000
pd.set_option('display.max_rows', None)  # or 1000
pd.set_option('display.max_colwidth', -1)  # or 199

उपयोगी विकल्पों की पूरी सूची के लिए, देखें:

pd.describe_option('display')

1
इसे जोड़ने के लिए धन्यवाद। यदि आप एक से अधिक डेटाफ़्रेम प्रदर्शित करना चाहते हैं तो "कोई नहीं" प्रत्येक एकल डेटाफ़्रेम की वास्तविक लंबाई से बेहतर है।
Dremet

5
@Corrumpo कुछ विकल्पों -1के लिए None, यदि आप पूर्ण प्रतिनिधित्व चाहते हैं, तो इसके बजाय आपको इंट्यू वैल्यू का उपयोग करना चाहिए
lucidyan

display.विकल्प के नाम में उपसर्ग जरूरी नहीं लगता है। उदाहरण के लिए, set_option('max_columns')समान रूप से अच्छी तरह से काम करता है।
एक्यूमेनस

बहुत बहुत धन्यवाद :)
Orsiris de Jong

45

सारणीबद्ध पैकेज का उपयोग करें:

pip install tabulate

और निम्नलिखित उदाहरण के उपयोग पर विचार करें:

import pandas as pd
from io import StringIO
from tabulate import tabulate

c = """Chromosome Start End
chr1 3 6
chr1 5 7
chr1 8 9"""

df = pd.read_table(StringIO(c), sep="\s+", header=0)

print(tabulate(df, headers='keys', tablefmt='psql'))

+----+--------------+---------+-------+
|    | Chromosome   |   Start |   End |
|----+--------------+---------+-------|
|  0 | chr1         |       3 |     6 |
|  1 | chr1         |       5 |     7 |
|  2 | chr1         |       8 |     9 |
+----+--------------+---------+-------+

एक pd.Series प्रिंट करते समय सारणीबद्ध haywire जाता है।
एलिु

2
@eliu जानकारी के लिए धन्यवाद। आपके पास हमेशा हैpd_series.to_frame()
द अनफिन कैट

20

यदि आप Ipython Notebook (Jupyter) का उपयोग कर रहे हैं। आप HTML का उपयोग कर सकते हैं

from IPython.core.display import HTML
display(HTML(df.to_html()))

1
कृपया अन्य समाधानों के साथ तुलना के लिए आउटपुट दिखाएं, Tnx।
vwvan

7
इसके साथ एक बड़ी डेटाफ़्रेम दिखाने की कोशिश करने से सावधान रहें। जब तक आप अपनी .ipyndb फ़ाइल में कच्चे कोड को संपादित नहीं करते, आप मेमोरी से बाहर भाग सकते हैं और अपनी नोटबुक को फिर से नहीं खोल सकते। सच्ची कहानी;)
एफएलबी कर्नल

यह मेरे लिए सबसे अच्छा विकल्प है। तालिका को रंग भरने के साथ प्रदर्शित किया गया है। अच्छा है!
ओलॉलेड

20

का उपयोग करते हुए pd.options.display

यह उत्तर ल्यूसीडियन द्वारा पूर्व उत्तर का एक रूपांतर है । यह कोड को अधिक उपयोग करने से बचाकर पठनीय बनाता है set_option

संदर्भ प्रबंधक का उपयोग करने के विकल्प के रूप में पांडा आयात करने के बाद, बड़े डेटाफ़्रेम प्रदर्शित करने के लिए ऐसे विकल्प सेट करें :

def set_pandas_display_options() -> None:
    # Ref: https://stackoverflow.com/a/52432757/
    display = pd.options.display

    display.max_columns = 1000
    display.max_rows = 1000
    display.max_colwidth = 199
    display.width = None
    # display.precision = 2  # set as needed

set_pandas_display_options()

इसके बाद, आप display(df)या तो उपयोग कर सकते हैं या बस dfएक नोटबुक का उपयोग कर सकते हैं , अन्यथा print(df)

का उपयोग करते हुए to_string

पंडों में 0.25.3 DataFrame.to_stringऔर Series.to_stringविधियाँ हैं जो प्रारूपण विकल्पों को स्वीकार करती हैं।

का उपयोग करते हुए to_markdown

अगर आपको जरूरत है मार्कडाउन आउटपुट की, पंडास 1.0.0 में DataFrame.to_markdownऔर Series.to_markdownतरीके हैं।

का उपयोग करते हुए to_html

यदि आपको HTML आउटपुट की आवश्यकता है, तो पंडों 0.25.3 में एक DataFrame.to_htmlविधि है, लेकिन नहीं Series.to_html। ध्यान दें कि एक में परिवर्तित किया Seriesजा सकता है a ।DataFrame


हाँ, यह सेट_ॉप्शन के बजाय जुपिटर में प्रदर्शित करने के लिए एक बेहतर सुरुचिपूर्ण तरीका है। क्या प्रदर्शित आउटपुट को संरेखित करने का कोई तरीका है? प्रदर्शित डेटाफ़्रेम की दाईं पंक्तियाँ डिफ़ॉल्ट रूप से ठीक संरेखित हैं।
विंसिनराव

11

इसे इस्तेमाल करे

pd.set_option('display.height',1000)
pd.set_option('display.max_rows',500)
pd.set_option('display.max_columns',500)
pd.set_option('display.width',1000)

3

आप नीचे दी गई विधि का उपयोग करके इसे प्राप्त कर सकते हैं। बस कुल सं। DataFrame में arg के रूप में मौजूद कॉलम के कॉलम

'Display.max_columns'

उदाहरण के लिए:

df= DataFrame(..)
with pd.option_context('display.max_rows', None, 'display.max_columns', df.shape[1]):
    print(df)

-1

प्रदर्शन () फ़ंक्शन का उपयोग करके देखें। यह स्वचालित रूप से क्षैतिज और ऊर्ध्वाधर स्क्रॉल बार का उपयोग करेगा और इसके साथ आप प्रिंट () का उपयोग करने के बजाय आसानी से विभिन्न डेटासेट प्रदर्शित कर सकते हैं।

display(dataframe)

प्रदर्शन () उचित संरेखण का भी समर्थन करता है।

हालाँकि यदि आप डेटासेट को और अधिक सुंदर बनाना चाहते हैं, तो आप देख सकते हैं pd.option_context()। डेटाफ़्रेम को स्पष्ट रूप से दिखाने के लिए इसमें बहुत सारे विकल्प हैं।

नोट - मैं ज्यूपिटर नोटबुक्स का उपयोग कर रहा हूं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.