811 votes

Python pandas, élargir l'affichage de la sortie ?

Existe-t-il un moyen d'élargir l'affichage de la sortie en mode interactif ou script-exécution ?

Plus précisément, j'utilise la fonction describe() sur un cadre de données Pandas. Lorsque le cadre de données a une largeur de 5 colonnes (étiquettes), j'obtiens les statistiques descriptives que je souhaite. Cependant, si le cadre de données a plus de colonnes, les statistiques sont supprimées et quelque chose comme ceci est retourné :

>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  

La valeur "8" est donnée qu'il y ait 6 ou 7 colonnes. À quoi se réfère le "8" ?

J'ai déjà essayé de faire glisser la fenêtre IDLE pour l'agrandir, ainsi que d'augmenter les options de largeur de "Configure IDLE", en vain.

Mon but en utilisant Pandas et describe() est d'éviter d'utiliser un second programme comme STATA pour faire de la manipulation et de l'investigation de données de base.

Merci.

Python/IDLE 2.7.3
Pandas 0.8.1
Notepad++ 6.1.4 (UNICODE)
Windows Vista SP2

0 votes

Ici Le guide de l'utilisateur "options et paramètres" de pandas avec des exemples est celui que vous recherchez.

8voto

user1587329 Points 91

Il semble que toutes les réponses précédentes résolvent le problème. Un dernier point : au lieu de pd.set_option('option_name') vous pouvez utiliser la fonction (auto-complétable) :

pd.options.display.width = None

Ver Documentation sur les pandas : Options et paramètres :

Les options ont un nom complet "en pointillés", insensible à la casse (par ex. display.max_rows ). Vous pouvez obtenir/définir des options directement comme attributs de le niveau supérieur options attribut :

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

[...]

Pour le max_... paramètres :

max_rows y max_columns sont utilisés dans __repr__() méthodes pour décider si to_string() o info() est utilisé pour convertir un objet en une chaîne de caractères. Dans le cas où Python/ IPython s'exécute dans un terminal, la valeur peut être fixée à 0 et pandas détectera correctement la largeur du terminal et passera à un format plus petit au cas où toutes les colonnes ne tiendraient pas verticalement. Le notebook IPython, la qtconsole IPython ou IDLE ne fonctionnent pas dans un terminal et il n'est donc pas possible de faire une auto-détection correcte. ' None La valeur ' signifie illimitée. [l'accent n'est pas dans l'original]

Pour le width paramètre :

Largeur de l'affichage en caractères. Dans le cas où Python/IPython est exécuté dans un terminal, cette valeur peut être fixée à None et pandas détectera correctement la largeur. Notez que le notebook d'IPython, la qtconsole d'IPython, ou IDLE ne s'exécutent pas dans un terminal et il n'est donc pas possible de détecter correctement la largeur.

6voto

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 consisting 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]))

Sortie :

   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

0 votes

Vous avez juste besoin de ces deux éléments : (Vérifiez l'exemple ci-dessus) import pandas as pd pd.set_option('display.max_columns', 100) pd.set_option('display.width', 1000)

6voto

zeeshan Points 87

La ligne ci-dessous est suffisante pour afficher toutes les colonnes d'un cadre de données.

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

1 votes

Bienvenue sur SO ! Lorsque vous postez une nouvelle réponse à une question et qu'il y a d'autres réponses, essayez de montrer les Pros. Il y a toujours une réponse pd.set_option('display.max_columns', 0) Quels sont vos avantages ?

4voto

AreToo Points 433

Si vous ne voulez pas modifier vos options d'affichage et que vous voulez simplement voir cette liste particulière de colonnes sans développer chaque cadre de données que vous visualisez, vous pouvez essayer :

df.columns.values

3voto

amila_viraj Points 106

Vous pouvez simplement suivre les étapes suivantes,

  • Vous pouvez modifier les options pour les Pandas max_colonnes sont les suivants :

    import pandas as pd
    pd.options.display.max_columns = 10

    (Cela permet d'afficher 10 colonnes, et vous pouvez modifier cela selon vos besoins).

  • Comme cela, vous pouvez modifier le nombre de lignes que vous devez afficher comme suit (si vous devez également modifier le nombre maximum de lignes) :

    pd.options.display.max_rows = 999

    (Cela permet d'imprimer 999 lignes à la fois).

Veuillez vous référer à la documentation pour modifier différentes options/réglages pour Pandas.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X