How do I expand the output display to see more columns of a pandas DataFrame?

后端 未结 19 1613
爱一瞬间的悲伤
爱一瞬间的悲伤 2020-11-22 00:37

Is there a way to widen the display of output in either interactive or script-execution mode?

Specifically, I am using the describe() function on a pand

相关标签:
19条回答
  • 2020-11-22 01:11
    pd.options.display.max_columns = 100
    

    You can specify the numbers of columns as per your requirement in max_columns.

    0 讨论(0)
  • 2020-11-22 01:12

    Only using these 3 lines worked for me:

    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 / Visual Studio Code 1.26

    0 讨论(0)
  • 2020-11-22 01:12

    None of these answers were working for me. A couple of them would indeed print all the columns, but it would look sloppy. As in all the information was there, but it wasn't formatted correctly. I'm using a terminal inside of Neovim so I suspect that to be the reason.

    This mini function does exactly what I need, just change df_data in the two places it is for your dataframe name (col_range is set to what pandas naturally shows, for me it is 5 but it could be bigger or smaller for you).

    import math
    col_range = 5
    for _ in range(int(math.ceil(len(df_data.columns)/col_range))):
        idx1 = _*col_range
        idx2 = idx1+col_range
        print(df_data.iloc[:, idx1:idx2].describe())
    
    0 讨论(0)
  • 2020-11-22 01:14

    I used these settings when scale of data is high.

    # 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)
    

    You can refer to the documentation here

    0 讨论(0)
  • 2020-11-22 01:16

    You can adjust pandas print options with 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
    

    However this will not work in all cases as pandas detects your console width and it will only use to_string if the output fits in the console (see the docstring of set_printoptions). In this case you can explicitly call to_string as answered by BrenBarn.

    Update

    With version 0.10 the way wide dataframes are printed changed:

    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  
    

    Further more the API for setting pandas options changed:

    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
    
    0 讨论(0)
  • 2020-11-22 01:16

    You can set the output display to match your current terminal width:

    pd.set_option('display.width', pd.util.terminal.get_terminal_size()[0])
    
    0 讨论(0)
提交回复
热议问题