كيف يمكنني توسيع عرض الإخراج لرؤية المزيد من الأعمدة من داتافريم الباندا?
-
13-12-2019 - |
سؤال
هل هناك طريقة لتوسيع عرض الإخراج إما في وضع تفاعلي أو وضع تنفيذ البرنامج النصي?
على وجه التحديد ، وأنا باستخدام 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)
لن يتحول أبدا إلى عرض الملخص إذا كان عدد الصفوف والأعمدة لا يتجاوز الحدود المحددة.
الخيار 'ماكسي_كولويدث' يساعد في رؤية شكل غير مقطوع من كل عمود.
نصائح أخرى
جرب هذا:
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 الصفوف في وقت واحد)
يرجى التكرم الرجوع إلى دوك لتغيير خيارات / إعدادات مختلفة للباندا