كيف يمكنني توسيع عرض الإخراج لرؤية المزيد من الأعمدة من داتافريم الباندا?

StackOverflow https://stackoverflow.com//questions/11707586

سؤال

هل هناك طريقة لتوسيع عرض الإخراج إما في وضع تفاعلي أو وضع تنفيذ البرنامج النصي?

على وجه التحديد ، وأنا باستخدام describe() وظيفة على الباندا DataFrame.عندما DataFrame هو 5 أعمدة (تسميات) واسعة ، أحصل على الإحصاءات الوصفية التي أريد.ومع ذلك ، إذا كان DataFrame لديه أي المزيد من الأعمدة ، يتم قمع الإحصاءات ويتم إرجاع شيء من هذا القبيل:

>> Index: 8 entries, count to max  
>> Data columns:  
>> x1          8  non-null values  
>> x2          8  non-null values  
>> x3          8  non-null values  
>> x4          8  non-null values  
>> x5          8  non-null values  
>> x6          8  non-null values  
>> x7          8  non-null values  

يتم إعطاء القيمة " 8 " ما إذا كان هناك 6 أو 7 أعمدة.ماذا "8" تشير إلى?

لقد حاولت بالفعل سحب نافذة الخمول بشكل أكبر ، بالإضافة إلى زيادة خيارات عرض "تكوين الخمول" ، ولكن دون جدوى.

هدفي في استخدام الباندا و describe() هو تجنب استخدام البرنامج الثاني مثل ستاتا للقيام التلاعب البيانات الأساسية والتحقيق.

هل كانت مفيدة؟

المحلول

تحديث:الباندا 0.23.4 فصاعدا

هذا ليس ضروريا ، يقوم الباندا بالكشف التلقائي عن حجم نافذة المحطة الطرفية إذا قمت بتعيين pd.options.display.width = 0.(للإصدارات القديمة انظر في الأسفل.)

pandas.set_printoptions(...) تم إهماله.بدلا من ذلك ، استخدم pandas.set_option(optname, val), ، أو ما يعادلها pd.options.<opt.hierarchical.name> = val.مثل:

import pandas as pd
pd.set_option('display.max_rows', 500)
pd.set_option('display.max_columns', 500)
pd.set_option('display.width', 1000)

هنا هو مساعدة ل set_option:

set_option(pat,value) - Sets the value of the specified option

Available options:
display.[chop_threshold, colheader_justify, column_space, date_dayfirst,
         date_yearfirst, encoding, expand_frame_repr, float_format, height,
         line_width, max_columns, max_colwidth, max_info_columns, max_info_rows,
         max_rows, max_seq_items, mpl_style, multi_sparse, notebook_repr_html,
         pprint_nest_depth, precision, width]
mode.[sim_interactive, use_inf_as_null]

Parameters
----------
pat - str/regexp which should match a single option.

Note: partial matches are supported for convenience, but unless you use the
full option name (e.g. x.y.z.option_name), your code may break in future
versions if new options with similar names are introduced.

value - new value of option.

Returns
-------
None

Raises
------
KeyError if no such option exists

display.chop_threshold: [default: None] [currently: None]
: float or None
        if set to a float value, all float values smaller then the given threshold
        will be displayed as exactly 0 by repr and friends.
display.colheader_justify: [default: right] [currently: right]
: 'left'/'right'
        Controls the justification of column headers. used by DataFrameFormatter.
display.column_space: [default: 12] [currently: 12]No description available.

display.date_dayfirst: [default: False] [currently: False]
: boolean
        When True, prints and parses dates with the day first, eg 20/01/2005
display.date_yearfirst: [default: False] [currently: False]
: boolean
        When True, prints and parses dates with the year first, eg 2005/01/20
display.encoding: [default: UTF-8] [currently: UTF-8]
: str/unicode
        Defaults to the detected encoding of the console.
        Specifies the encoding to be used for strings returned by to_string,
        these are generally strings meant to be displayed on the console.
display.expand_frame_repr: [default: True] [currently: True]
: boolean
        Whether to print out the full DataFrame repr for wide DataFrames
        across multiple lines, `max_columns` is still respected, but the output will
        wrap-around across multiple "pages" if it's width exceeds `display.width`.
display.float_format: [default: None] [currently: None]
: callable
        The callable should accept a floating point number and return
        a string with the desired format of the number. This is used
        in some places like SeriesFormatter.
        See core.format.EngFormatter for an example.
display.height: [default: 60] [currently: 1000]
: int
        Deprecated.
        (Deprecated, use `display.height` instead.)

display.line_width: [default: 80] [currently: 1000]
: int
        Deprecated.
        (Deprecated, use `display.width` instead.)

display.max_columns: [default: 20] [currently: 500]
: int
        max_rows and max_columns are used in __repr__() methods to decide if
        to_string() or info() is used to render an object to a string.  In case
        python/IPython is running in a terminal this can be set to 0 and pandas
        will correctly auto-detect the width the terminal and swap to a smaller
        format in case all columns would not fit vertically. The IPython notebook,
        IPython qtconsole, or IDLE do not run in a terminal and hence it is not
        possible to do correct auto-detection.
        'None' value means unlimited.
display.max_colwidth: [default: 50] [currently: 50]
: int
        The maximum width in characters of a column in the repr of
        a pandas data structure. When the column overflows, a "..."
        placeholder is embedded in the output.
display.max_info_columns: [default: 100] [currently: 100]
: int
        max_info_columns is used in DataFrame.info method to decide if
        per column information will be printed.
display.max_info_rows: [default: 1690785] [currently: 1690785]
: int or None
        max_info_rows is the maximum number of rows for which a frame will
        perform a null check on its columns when repr'ing To a console.
        The default is 1,000,000 rows. So, if a DataFrame has more
        1,000,000 rows there will be no null check performed on the
        columns and thus the representation will take much less time to
        display in an interactive session. A value of None means always
        perform a null check when repr'ing.
display.max_rows: [default: 60] [currently: 500]
: int
        This sets the maximum number of rows pandas should output when printing
        out various output. For example, this value determines whether the repr()
        for a dataframe prints out fully or just a summary repr.
        'None' value means unlimited.
display.max_seq_items: [default: None] [currently: None]
: int or None

        when pretty-printing a long sequence, no more then `max_seq_items`
        will be printed. If items are ommitted, they will be denoted by the addition
        of "..." to the resulting string.

        If set to None, the number of items to be printed is unlimited.
display.mpl_style: [default: None] [currently: None]
: bool

        Setting this to 'default' will modify the rcParams used by matplotlib
        to give plots a more pleasing visual style by default.
        Setting this to None/False restores the values to their initial value.
display.multi_sparse: [default: True] [currently: True]
: boolean
        "sparsify" MultiIndex display (don't display repeated
        elements in outer levels within groups)
display.notebook_repr_html: [default: True] [currently: True]
: boolean
        When True, IPython notebook will use html representation for
        pandas objects (if it is available).
display.pprint_nest_depth: [default: 3] [currently: 3]
: int
        Controls the number of nested levels to process when pretty-printing
display.precision: [default: 7] [currently: 7]
: int
        Floating point output precision (number of significant digits). This is
        only a suggestion
display.width: [default: 80] [currently: 1000]
: int
        Width of the display in characters. In case python/IPython is running in
        a terminal this can be set to None and pandas will correctly auto-detect the
        width.
        Note that the IPython notebook, IPython qtconsole, or IDLE do not run in a
        terminal and hence it is not possible to correctly detect the width.
mode.sim_interactive: [default: False] [currently: False]
: boolean
        Whether to simulate interactive mode for purposes of testing
mode.use_inf_as_null: [default: False] [currently: False]
: boolean
        True means treat None, NaN, INF, -INF as null (old way),
        False means None and NaN are null, but INF, -INF are not null
        (new way).
Call def:   pd.set_option(self, *args, **kwds)

تحرير:معلومات الإصدار الأقدم ، تم إهمال الكثير من هذا.

أس @بمو المذكورة, ، الباندا السيارات بالكشف عن (افتراضيا) حجم منطقة العرض ، وسيتم استخدام عرض ملخص عندما لا يصلح ريبر كائن على الشاشة.لقد ذكرت تغيير حجم نافذة الخمول ، دون أي تأثير.إذا كنت تفعل print df.describe().to_string() هل يصلح على نافذة الخمول?

يتم تحديد حجم المحطة من خلال pandas.util.terminal.get_terminal_size() (تم إيقافه وإزالته) ، يؤدي هذا إلى إرجاع مجموعة تحتوي على (width, height) من العرض.هل يتطابق الإخراج مع حجم نافذة الخمول?قد تكون هناك مشكلة (كان هناك واحد من قبل عند تشغيل محطة في إماكس).

لاحظ أنه من الممكن تجاوز الاكتشاف التلقائي, pandas.set_printoptions(max_rows=200, max_columns=10) لن يتحول أبدا إلى عرض الملخص إذا كان عدد الصفوف والأعمدة لا يتجاوز الحدود المحددة.


الخيار 'ماكسي_كولويدث' يساعد في رؤية شكل غير مقطوع من كل عمود.

TruncatedColumnDisplay

نصائح أخرى

جرب هذا:

pd.set_option('display.expand_frame_repr', False)

من الوثائق:

عرض.توسيع_إطار_تكرار :منطقية

سواء لطباعة كامل داتافريم ريبر ل داتافريم واسعة عبر خطوط متعددة ، ماكس كولومنز لا يزال محترما ، ولكن الإخراج سوف التفاف حول عبر "صفحات" متعددة إذا كان العرض يتجاوز العرض.العرض.[الافتراضي:صحيح] [حاليا:صحيح]

انظر: http://pandas.pydata.org/pandas-docs/stable/generated/pandas.set_option.html

إذا كنت ترغب في تعيين الخيارات مؤقتا لعرض إطار بيانات كبير واحد ، فيمكنك استخدام أوبتيون_كونتيكست:

with pd.option_context('display.max_rows', -1, 'display.max_columns', 5):
    print df

يتم استعادة قيم الخيار تلقائيا عند الخروج من with منع.

فقط باستخدام هذه الخطوط 3 عملت بالنسبة لي:

pd.set_option('display.max_columns', None)  
pd.set_option('display.expand_frame_repr', False)
pd.set_option('max_colwidth', -1)

اناكوندا / بيثون 3.6.5 / الباندا:0.23.0 / فيسوال ستوديو كود 1.26

تعيين العمود ماكس العرض باستخدام:

pd.set_option('max_colwidth', 800)

يحدد هذا البيان المحدد العرض الأقصى إلى 800 بكسل لكل عمود.

يمكنك ضبط خيارات طباعة الباندا باستخدام set_printoptions.

In [3]: df.describe()
Out[3]: 
<class 'pandas.core.frame.DataFrame'>
Index: 8 entries, count to max
Data columns:
x1    8  non-null values
x2    8  non-null values
x3    8  non-null values
x4    8  non-null values
x5    8  non-null values
x6    8  non-null values
x7    8  non-null values
dtypes: float64(7)

In [4]: pd.set_printoptions(precision=2)

In [5]: df.describe()
Out[5]: 
            x1       x2       x3       x4       x5       x6       x7
count      8.0      8.0      8.0      8.0      8.0      8.0      8.0
mean   69024.5  69025.5  69026.5  69027.5  69028.5  69029.5  69030.5
std       17.1     17.1     17.1     17.1     17.1     17.1     17.1
min    69000.0  69001.0  69002.0  69003.0  69004.0  69005.0  69006.0
25%    69012.2  69013.2  69014.2  69015.2  69016.2  69017.2  69018.2
50%    69024.5  69025.5  69026.5  69027.5  69028.5  69029.5  69030.5
75%    69036.8  69037.8  69038.8  69039.8  69040.8  69041.8  69042.8
max    69049.0  69050.0  69051.0  69052.0  69053.0  69054.0  69055.0

ولكن هذا لن يعمل في جميع الحالات كما الباندا بالكشف عن عرض وحدة التحكم الخاصة بك وسوف تستخدم فقط to_string إذا كان الإخراج يناسب في وحدة التحكم (انظر دوكسترينغ من set_printoptions).في هذه الحالة يمكنك الاتصال صراحة to_string كما أجاب برينبارن.

تحديث

مع الإصدار 0.10 طريقة طباعة إطارات البيانات العريضة تغير:

In [3]: df.describe()
Out[3]: 
                 x1            x2            x3            x4            x5  \
count      8.000000      8.000000      8.000000      8.000000      8.000000   
mean   59832.361578  27356.711336  49317.281222  51214.837838  51254.839690   
std    22600.723536  26867.192716  28071.737509  21012.422793  33831.515761   
min    31906.695474   1648.359160     56.378115  16278.322271     43.745574   
25%    45264.625201  12799.540572  41429.628749  40374.273582  29789.643875   
50%    56340.214856  18666.456293  51995.661512  54894.562656  47667.684422   
75%    75587.003417  31375.610322  61069.190523  67811.893435  76014.884048   
max    98136.474782  84544.484627  91743.983895  75154.587156  99012.695717   

                 x6            x7  
count      8.000000      8.000000  
mean   41863.000717  33950.235126  
std    38709.468281  29075.745673  
min     3590.990740   1833.464154  
25%    15145.759625   6879.523949  
50%    22139.243042  33706.029946  
75%    72038.983496  51449.893980  
max    98601.190488  83309.051963  

علاوة على ذلك ، تم تغيير واجهة برمجة التطبيقات لتعيين خيارات الباندا:

In [4]: pd.set_option('display.precision', 2)

In [5]: df.describe()
Out[5]: 
            x1       x2       x3       x4       x5       x6       x7
count      8.0      8.0      8.0      8.0      8.0      8.0      8.0
mean   59832.4  27356.7  49317.3  51214.8  51254.8  41863.0  33950.2
std    22600.7  26867.2  28071.7  21012.4  33831.5  38709.5  29075.7
min    31906.7   1648.4     56.4  16278.3     43.7   3591.0   1833.5
25%    45264.6  12799.5  41429.6  40374.3  29789.6  15145.8   6879.5
50%    56340.2  18666.5  51995.7  54894.6  47667.7  22139.2  33706.0
75%    75587.0  31375.6  61069.2  67811.9  76014.9  72039.0  51449.9
max    98136.5  84544.5  91744.0  75154.6  99012.7  98601.2  83309.1

يمكنك استخدام print df.describe().to_string() لإجبارها على إظهار الجدول بأكمله.(يمكنك استخدام to_string() مثل هذا لأي داتافريم.نتيجة describe هو مجرد داتافريم نفسها.)

8 هو عدد الصفوف في إطار البيانات الذي يحمل " الوصف "(لأن describe يحسب 8 إحصائيات ، دقيقة ، كحد أقصى ، متوسط ، إلخ.).

يمكنك ضبط عرض الإخراج لمطابقة عرض المحطة الطرفية الحالي:

pd.set_option('display.width', pd.util.terminal.get_terminal_size()[0])

وفقا ل مستندات للإصدار 0.18.0, ، إذا كنت تعمل على محطة (أي لا إبيثون دفتر ، كتكونسول أو الخمول) ، انها 2 بطانة أن يكون الباندا لصناعة السيارات في الكشف عن عرض الشاشة والتكيف على الطاير مع عدد الأعمدة التي تظهر:

pd.set_option('display.large_repr', 'truncate')
pd.set_option('display.max_columns', 0)

يبدو أن جميع الإجابات المذكورة أعلاه تحل المشكلة.نقطة أخرى:بدلا من pd.set_option('option_name'), ، يمكنك استخدام (الإكمال التلقائي قادرة)

pd.options.display.width = None

انظر الباندا دوك:الخيارات والإعدادات:

تحتوي الخيارات على اسم "منقط" كامل ، غير حساس لحالة الأحرف (على سبيل المثال. display.max_rows).يمكنك الحصول على / تعيين الخيارات مباشرة كسمات المستوى الأعلى options السمة:

In [1]: import pandas as pd

In [2]: pd.options.display.max_rows
Out[2]: 15

In [3]: pd.options.display.max_rows = 999

In [4]: pd.options.display.max_rows
Out[4]: 999

[...]

من أجل max_... بارامس:

max_rows و max_columns تستخدم في __repr__() طرق لتحديد ما إذا كان to_string() أو info() يستخدم لتقديم كائن إلى سلسلة.في حالة بيثون / إبيثون يعمل في محطة هذا يمكن تعيين إلى 0 وسوف الباندا بشكل صحيح لصناعة السيارات في الكشف عن عرض المحطة ومبادلة إلى شكل أصغر في حالة جميع الأعمدة لا تناسب عموديا.دفتر إبيثون ، إبيثون كتكونسول ، أو الخمول لا تعمل في محطة ، وبالتالي فإنه ليس من الممكن القيام الصحيح لصناعة السيارات في الكشف. None'القيمة تعني غير محدود. [التركيز ليس في الأصل]

من أجل width بارام:

عرض العرض في الأحرف.في حالة بيثون / إبيثون يعمل في محطة هذا يمكن تعيين إلى None وسوف الباندا بشكل صحيح لصناعة السيارات في الكشف عن العرض.لاحظ أن دفتر إبيثون ، إبيثون كتكونسول ، أو الخمول لا تعمل في محطة ، وبالتالي فإنه ليس من الممكن للكشف عن العرض بشكل صحيح.

import pandas as pd
pd.set_option('display.max_columns', 100)
pd.set_option('display.width', 1000)

SentenceA = "William likes Piano and Piano likes William"
SentenceB = "Sara likes Guitar"
SentenceC = "Mamoosh likes Piano"
SentenceD = "William is a CS Student"
SentenceE = "Sara is kind"
SentenceF = "Mamoosh is kind"


bowA = SentenceA.split(" ")
bowB = SentenceB.split(" ")
bowC = SentenceC.split(" ")
bowD = SentenceD.split(" ")
bowE = SentenceE.split(" ")
bowF = SentenceF.split(" ")

# Creating a set consisted of all words

wordSet = set(bowA).union(set(bowB)).union(set(bowC)).union(set(bowD)).union(set(bowE)).union(set(bowF))
print("Set of all words is: ", wordSet)

# Initiating dictionary with 0 value for all BOWs

wordDictA = dict.fromkeys(wordSet, 0)
wordDictB = dict.fromkeys(wordSet, 0)
wordDictC = dict.fromkeys(wordSet, 0)
wordDictD = dict.fromkeys(wordSet, 0)
wordDictE = dict.fromkeys(wordSet, 0)
wordDictF = dict.fromkeys(wordSet, 0)

for word in bowA:
    wordDictA[word] += 1
for word in bowB:
    wordDictB[word] += 1
for word in bowC:
    wordDictC[word] += 1
for word in bowD:
    wordDictD[word] += 1
for word in bowE:
    wordDictE[word] += 1
for word in bowF:
    wordDictF[word] += 1

# Printing Term frequency

print("SentenceA TF: ", wordDictA)
print("SentenceB TF: ", wordDictB)
print("SentenceC TF: ", wordDictC)
print("SentenceD TF: ", wordDictD)
print("SentenceE TF: ", wordDictE)
print("SentenceF TF: ", wordDictF)

print(pd.DataFrame([wordDictA, wordDictB, wordDictB, wordDictC, wordDictD, wordDictE, wordDictF]))

الناتج:

   CS  Guitar  Mamoosh  Piano  Sara  Student  William  a  and  is  kind  likes
0   0       0        0      2     0        0        2  0    1   0     0      2
1   0       1        0      0     1        0        0  0    0   0     0      1
2   0       1        0      0     1        0        0  0    0   0     0      1
3   0       0        1      1     0        0        0  0    0   0     0      1
4   1       0        0      0     0        1        1  1    0   1     0      0
5   0       0        0      0     1        0        0  0    0   1     1      0
6   0       0        1      0     0        0        0  0    0   1     1      0

لقد استخدمت هذه الإعدادات عندما يكون حجم البيانات مرتفعا.

# environment settings: 
pd.set_option('display.max_column',None)
pd.set_option('display.max_rows',None)
pd.set_option('display.max_seq_items',None)
pd.set_option('display.max_colwidth', 500)
pd.set_option('expand_frame_repr', True)

يمكنك الرجوع إلى الوثائقهنا

إذا كنت لا تريد الفوضى مع خيارات العرض الخاصة بك وتريد فقط أن ترى هذه القائمة واحدة معينة من الأعمدة دون توسيع كل داتافريم عرض ، يمكنك محاولة:

df.columns.values

يمكنك أيضا المحاولة في حلقة:

for col in df.columns: 
    print(col) 

السطر أدناه يكفي لعرض جميع الأعمدة من داتافريم. pd.set_option('display.max_columns', None)

يمكنك ببساطة القيام بالخطوات التالية,

  • يمكنك تغيير خيارات ميزة الباندا ماكس الأعمدة على النحو التالي

    import pandas as pd
    pd.options.display.max_columns = 10
    

    (وهذا يسمح 10 أعمدة لعرض ، يمكنك تغيير هذا ما تحتاج إليه)

  • مثل ذلك يمكنك تغيير عدد الصفوف كما تحتاج إلى عرض على النحو التالي (إذا كنت بحاجة إلى تغيير الصفوف القصوى كذلك)

    pd.options.display.max_rows = 999
    

    (وهذا يسمح لطباعة 999 الصفوف في وقت واحد)

يرجى التكرم الرجوع إلى دوك لتغيير خيارات / إعدادات مختلفة للباندا

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top