Afficher toutes les colonnes de dataframe dans un bloc-notes Jupyter Python


103

Je souhaite afficher toutes les colonnes d'une trame de données dans un bloc-notes Jupyter. Jupyter montre certaines des colonnes et ajoute des points aux dernières colonnes comme dans l'image suivante:

Capture d'écran de Juputer

Comment afficher toutes les colonnes?

Réponses:


173

Essayez le paramètre d'affichage max_columns comme suit:

import pandas as pd
from IPython.display import display

df = pd.read_csv("some_data.csv")
pd.options.display.max_columns = None
display(df)

Ou

pd.set_option('display.max_columns', None)

Edit: Pandas 0.11.0 à l'envers

Ceci est obsolète mais dans les versions de Pandas antérieures à 0.11.0, le max_columnsparamètre est spécifié comme suit:

pd.set_printoptions(max_columns=500)

Cela devrait fonctionner à moins que vous n'ayez une très ancienne version de Pandas. J'ai mis à jour la réponse ...
Isma

4
Je ne peux pas croire que c'est la façon de le faire!
information_interchange

2
Si vous souhaitez effectuer un réglage temporaire, vous pouvez utiliser par exemple with pd.option_context("display.max_rows", 10, "display.max_columns", 5):(voir Options d'obtention et de configuration ).
Benjamin B.

35

Je sais que cette question est un peu vieille, mais la suivante a fonctionné pour moi dans un Jupyter Notebook exécutant pandas 0.22.0 et Python 3:

import pandas as pd
pd.set_option('display.max_columns', <number of columns>)

Vous pouvez également faire de même pour les lignes:

pd.set_option('display.max_rows', <number of rows>)

Cela évite d'importer IPython, et il y a plus d'options dans la documentation pandas.set_option: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.set_option.html


1
Vous pouvez utiliser le mot-clé None dans <nombre de colonnes> si vous ne connaissez pas au préalable le nombre de colonnes.
kmundnic

9

Python 3.x pour les DataFrames volumineux (mais pas trop volumineux)

Peut-être parce que j'ai une ancienne version de pandas mais sur le notebook Jupyter, cela fonctionne pour moi

import pandas as pd
from IPython.core.display import HTML

df=pd.read_pickle('Data1')
display(HTML(df.to_html()))

J'ai essayé cela mais cela a ruiné ma session jupyter en perdant la mémoire. Mon PC a SSD et 8 Go de mémoire RAM ...
FLBKernel

@FLBKernel il ne m'a pas fait ça, peut-être que votre Dataframe est beaucoup plus grande que la mienne. Quelle a été votre issue? Avez-vous essayé une autre méthode et travaillé pour vous? si c'est le cas, partagez vos connaissances. Merci.
rsc05

Je n'ai pas encore trouvé de méthode, mais je vous ferai savoir dès que je pourrai résoudre ce problème. Et oui, mon Dataframe était probablement plus grand, alors soulignons que ce n'est pas recommandé pour les grands Dataframes
FLBKernel

1
@FLBKernel Mon bloc de données était également volumineux. Mais je ne savais pas dans quelle mesure cela pouvait être important. Je vais le souligner. Merci!
rsc05

Le mien a 107.763 lignes et 15 colonnes. Nous pouvons établir - peut-être - que plus d'environ 100 000 lignes et 15 colonnes cette réponse n'est pas recommandable. J'aime bien le titre "large (mais pas trop grand)" :)
FLBKernel

5

Je recommande de définir les options d'affichage dans un gestionnaire de contexte afin qu'il n'affecte qu'une seule sortie. Si vous souhaitez également imprimer une "jolie" version html, je définirais une fonction et afficherais le dataframe en dfutilisant force_show_all(df):

from IPython.core.display import display, HTML

def force_show_all(df):
    with pd.option_context('display.max_rows', None, 'display.max_columns', None, 'display.width', None):
        display(HTML(df.to_html()))

Comme d'autres l'ont mentionné, veillez à n'appeler cela que sur une trame de données de taille raisonnable.


1

vous pouvez utiliser pandas.set_option (), pour la colonne, vous pouvez spécifier l'une de ces options

pd.set_option("display.max_rows", 200)
pd.set_option("display.max_columns", 100)
pd.set_option("display.max_colwidth", 200)

Pour une colonne d'impression complète, vous pouvez utiliser comme ceci

import pandas as pd
pd.set_option('display.max_colwidth', -1)
print(words.head())

entrez la description de l'image ici


0

Si vous voulez afficher toutes les lignes définies comme ci-dessous

pd.options.display.max_rows = None

Si vous souhaitez afficher toutes les colonnes définies comme ci-dessous

pd.options.display.max_columns = None
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.