web-dev-qa-db-fra.com

ipython notebook pandas max colonnes autorisées

J'ai un fichier CSV simple avec dix colonnes!

Lorsque je définis l'option suivante dans le bloc-notes et que j'imprime mon fichier csv (qui se trouve dans un cadre de données de pandas), toutes les colonnes ne sont pas imprimées de gauche à droite, mais les deux premières, les deux suivantes, etc.

J'ai utilisé cette option, pourquoi ça ne marche pas?

pd.option_context("display.max_rows",1,"display.max_columns",100)

Même cela ne semble pas fonctionner:

pandas.set_option('display.max_columns', None)
15
yoshiserry

Je suppose que vous souhaitez afficher vos données dans le bloc-notes pour que les options suivantes fonctionnent correctement pour moi (IPython 2.3):

import pandas as pd
from IPython.display import display
data = pd.read_csv('yourdata.txt')

Soit directement définir l'option

pd.options.display.max_columns = None
display(data)

Ou bien, utilisez la méthode set_option que vous avez montrée et qui fonctionne aussi très bien

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

Si vous ne souhaitez pas définir ces options pour l'ensemble du script, utilisez le gestionnaire de contexte.

with pd.option_context('display.max_columns', None):
    display(data)

Si cela ne vous aide pas, vous pouvez donner un exemple minimal pour reproduire votre problème.

30
Jakob

Vous pouvez également afficher toutes les données en demandant aux pandas de renvoyer le balisage HTML, puis à IPython de restituer le tableau HTML.

import pandas as pd
from IPython.display import HTML
data = pd.read_csv('yourdata.csv')
HTML(data.to_html())

En utilisant IPython 3.0.0 et Python 3.4, j'ai découvert que display(data), tel que décrit par @Jakob, restituerait un tableau avec des barres de défilement haut/bas et gauche/droite, mais le tableau est toujours plus large que la cellule et certaines colonnes sont hors écran. à droite. Pour voir toutes les données, il faut réduire la cellule - ce qui ajoute des barres de défilement. Par conséquent, vous avez une boîte de défilement dans une boîte de défilement, ce qui n’est pas idéal, car vous devez déplacer le focus entre les barres de défilement doublées pour naviguer dans les données.

En utilisant la méthode HTML, vous rendez l’énorme tableau tel quel sans barres de défilement. Cette cellule peut ensuite être réduite pour ne montrer qu'une seule barre verticale et horizontale, ce qui est plus convivial.

La mise en garde à l'utilisation de HTML est que le rendu de la table est plus long. J'utilisais seulement une matrice de ~ 150x50 et la différence de vitesse était perceptible, mais pas gênante. Si vous avez une table énorme, n'utilisez pas cette méthode pour tout afficher en une fois. Cela dit, si vous avez un tableau énorme, le rendre tout à la fois va évidemment être une mauvaise idée, peu importe comment vous essayez de le faire.

0
scottclowe

J'ai trouvé cette question parmi les premiers hits de Google. Dans le laboratoire Jupyter,

pandas.set_option("display.max_columns", None)

Cela semble fonctionner correctement - mon exemple était de 32 colonnes, il était tronqué et n’est plus.

0
MasterAir