Когда я печатаю кадр данных Pandas, он всегда минимизируется [дублировать]

Попробуйте это с использованием границы слова в регулярном выражении:

>>> x="this is a sample"
>>> y="this isis a sample."
>>> regex=re.compile(r"\bis\b")  # For ignore case: re.compile(r"\bis\b", re.IGNORECASE)
>>> regex.findall(y)
[]
>>> regex.findall(x)
['is']

Из документации re.search() .

It matches the empty string, but only at the beginning or end of a word

E.g. r'\bfoo\b' matches 'foo', 'foo.', '(foo)', 'bar foo baz' but not 'foobar' or 'foo3'

Надеюсь, что это поможет!

265
задан serv-inc 23 March 2018 в 17:52
поделиться

11 ответов

Так как @bmu упомянул , pandas auto обнаруживает (по умолчанию) размер области отображения, то итоговое представление будет использоваться, когда репрезентация объекта не будет отображаться на дисплее. Вы упомянули изменение размера окна IDLE, чтобы не повлиять. Если вы делаете print df.describe().to_string(), оно подходит к окну IDLE?

Размер терминала определяется pandas.util.terminal.get_terminal_size(), это возвращает кортеж, содержащий (width, height) на дисплее. Соответствует ли результат размеру вашего окна IDLE? Возможно, возникла проблема (был один из них при запуске терминала в emacs).

Обратите внимание, что можно обойти автоопределение, pandas.set_printoptions(max_rows=200, max_columns=10) никогда не переключается на итоговый просмотр, если количество строк, столбцов не превышает заданные пределы.


Обновление: Pandas 0.11.0 и далее

pandas.set_printoptions(...) устарели. Вместо этого используйте pandas.set_option. Например:

import pandas as pd
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)

Вот помощь для 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)
362
ответ дан halloleo 15 August 2018 в 21:40
поделиться
  • 1
    Да, to_string () отлично подходит для окна. Метод set_printoptions отлично работал и удобен. Я буду использовать это, чтобы начать сеансы. Благодаря! – beets 30 July 2012 в 03:05
  • 2
    Что касается get_terminal_size (), нет, он сообщил о другом номере из окна «Настройка». – beets 30 July 2012 в 03:17
  • 3
    pandas.set_printoptions теперь обесценивается. Таким образом, приведенный выше пример pandas.set_printoptions(max_rows=200, max_columns=10) теперь будет pandas.set_option('max_rows',200) и pandas.set_option('max_columns',10) – zio 22 September 2013 в 02:07
  • 4
    display.height: устарел, используйте display.height вместо этого ... Я в мертвой петле. – Frozen Flame 15 June 2014 в 04:24
  • 5
    Свойство display.height устарело. – Greg M. Krsak 22 March 2016 в 17:47

Эти 3 строки работали лучше для меня:

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

Anaconda / Python 3.6.5 pandas: 0.23.0

1
ответ дан arispen 15 August 2018 в 21:40
поделиться

Вы можете использовать print df.describe().to_string(), чтобы заставить его отобразить всю таблицу. (Вы можете использовать to_string(), как это для любого DataFrame. Результат describe - это только сам DataFrame.)

8 - это количество строк в DataFrame, содержащее «описание» (потому что describe вычисляет 8 статистических данных, min, max, mean и т. д.).

15
ответ дан BrenBarn 15 August 2018 в 21:40
поделиться
  • 1
    Отлично. И to_string () звучит как полезный метод. Благодарю. – beets 30 July 2012 в 03:01

Вы можете настроить параметры печати pandas с помощью 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

Однако это не будет работать во всех случаях, поскольку pandas обнаруживает вашу ширину консоли и будет использовать только to_string, если выход подходит в консоли (см. docstring set_printoptions). В этом случае вы можете явно называть to_string, как указано в BrenBarn .

Обновить

С версией 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  

Кроме того, изменился API для настройки параметров панды:

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
22
ответ дан Community 15 August 2018 в 21:40
поделиться
  • 1
    Я предпочитаю использовать метод max_columns, упомянутый lodagro, но я рад, что вы упомянули ключевое слово precision, так как это поможет очистить статистику, которая отображается. Благодаря! – beets 30 July 2012 в 03:10
  • 2
    +1 для display.precision. Благодаря! – fantabolous 8 July 2014 в 02:26

В соответствии с документами для v0.18.0 , если вы работаете на терминале (то есть не в iPython notebook, qtconsole или IDLE), это 2-лайнер, чтобы Pandas автоматически обнаруживал ваши ширина экрана и адаптироваться «на лету» с указанием количества столбцов:

pd.set_option('display.large_repr', 'truncate')
pd.set_option('display.max_columns', 0)
13
ответ дан hamx0r 15 August 2018 в 21:40
поделиться
  • 1
    Это сработало для меня, спасибо! Я использую Pandas 0.22.0 (последний по состоянию на 8 февраля 2018 года), используя встроенное приложение Terminal в OS X 10.11.6 – Greg Sadetsky 8 February 2018 в 18:41

Если вы хотите временно установить параметры для отображения одного большого DataFrame, вы можете использовать option_context :

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

Значения параметров автоматически восстанавливаются при выходе из with блок.

43
ответ дан Kenny John Jacob 15 August 2018 в 21:40
поделиться
  • 1
    Чтобы не устанавливать ограничения, можно использовать None (вместо 999 и т. Д.). – Eric Lebigot 14 September 2017 в 19:27
  • 2
    Это, похоже, не работает, по крайней мере для Python 3.6 – Aziz Javed 20 September 2017 в 12:39
  • 3
    @AzizJaved - Можете ли вы объяснить больше? Для меня это прекрасно работает. – jezrael 20 September 2017 в 12:40
  • 4
    with pd.option_context('display.max_rows', None, 'display.max_columns', None): print(energy) не работает. Это не изменило количество столбцов, которые я хотел увидеть. Однако решение Wouter Overmeiere действительно сработало. – Aziz Javed 20 September 2017 в 12:43
  • 5
    Использование -1 аварий, и 500 ничего не делал – Aziz Javed 20 September 2017 в 13:07

Установите ширину ширины столбца, используя:

pd.set_option('max_colwidth', 800)

Этот конкретный оператор устанавливает максимальную ширину до 800 пикселей на столбец.

21
ответ дан pX0r 15 August 2018 в 21:40
поделиться
  • 1
    Прокрутка вниз по порядку нисходящего голосования, это первый ответ, который работал на меня, чтобы заставить панды не усекать вывод текстового файла DataFrames. (pandas 0,22, iTerm2 3,0,13, OS X 10,12). – Peter Leimbigler 19 March 2018 в 21:38

Попробуйте следующее:

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

Из документации:

display.expand_frame_repr: boolean

Вывести распечатку полного представления DataFrame для широких DataFrames в нескольких строках, max_columns по-прежнему соблюдается, но вывод будет охватывать несколько «страниц», если его ширина превышает display.width. [default: True] [в настоящее время: True]

См .: http://pandas.pydata.org/pandas-docs/stable/generated/pandas.set_option.html

101
ответ дан Robert Rose 15 August 2018 в 21:40
поделиться
  • 1
    Это работает для меня. Кажется, что по какой-то причине pandas ошибочно вычисляет выходную ширину и бесполезно разбивает столбцы. – zbyszek 24 July 2015 в 17:44

Кажется, что все вышеперечисленные ответы решают проблему. Еще одна точка: вместо pd.set_option('option_name') вы можете использовать (автозаполнение)

pd.options.display.width = None

См. Pandas doc: Параметры и настройки:

У параметров есть полное «неточное», нечувствительное к регистру имя (например, 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_... params:

max_rows и max_columns используются в __repr__() для определения того, используется ли to_string() или info() для рендеринга объекта в строку. В случае, если python / IPython запущен в терминале, это может быть установлено на 0, а pandas будет правильно автоматически определять ширину терминала и свопировать в меньший формат, если все столбцы не поместились бы вертикально. Ноутбук IPython, qtconsole IPython или IDLE не работают в терминале и, следовательно, невозможно выполнить правильное автоматическое обнаружение. Значение «None» означает неограниченное количество. [подчеркивание не в оригинале]

для параметра width:

Ширина отображения в символах. В случае, если python / IPython запущен в терминале, это может быть установлено на None, а pandas будет правильно автоматически определять ширину. Обратите внимание, что IPython-ноутбук, qtconsole IPython или IDLE не запускаются в терминале и, следовательно, невозможно правильно определить ширину.

0
ответ дан serv-inc 15 August 2018 в 21:40
поделиться

Вы можете установить выходной дисплей в соответствии с вашей текущей шириной терминала:

pd.set_option('display.width', pd.util.terminal.get_terminal_size()[0])
21
ответ дан Wilfred Hughes 15 August 2018 в 21:40
поделиться
  • 1
    @ wouter-overmeire говорит, что pandas делает это автоматически , но это, похоже, не так, по крайней мере, не с 0.18.0. Однако, если вы используете pd.set_option('display.width', None) в терминале, "pandas будут правильно автоматически определять ширину" . – Matthias Fripp 28 April 2016 в 00:19
  • 2
    В точку! Он не делает это по умолчанию. Установив его на None, он просто игнорирует ширину. Может быть, это ошибка в Pandas или, возможно, это связано с терминалом gnome ..? Спасибо Уилфред Хьюз! – danger89 12 July 2016 в 13:08
  • 3
    @mfripp: display.width = None обрабатывается как "неограниченный" не «авто». Это будет означать, что ваша терминальная программа будет охватывать длинные строки - как правило, с уродливыми результатами. – John Zwinck 13 July 2016 в 19:22
  • 4
    @ john-zwinck: Я должен не согласиться. В терминале OS X это адаптируется правильно, т. Е. Отображает достаточное количество столбцов для заполнения ширины окна, а затем запускает новую строку ниже, где она показывает больше столбцов: import pandas as pd; pd.set_option('display.width', None); pd.DataFrame(1.00001, index=range(10), columns=range(100)). В какой среде вы работаете? – Matthias Fripp 14 July 2016 в 03:21
  • 5
    AttributeError: модуль 'pandas.util' не имеет атрибута 'terminal' – Bhishan Poudel 21 June 2017 в 00:03
0
ответ дан debaonline4u 5 September 2018 в 21:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: