133 votes

Produire les données de toutes les colonnes d'un cadre de données dans pandas

J'ai un fichier csv dont le nom est params.csv . J'ai ouvert ipython qtconsole et créé un fichier pandas dataframe en utilisant :

import pandas
paramdata = pandas.read_csv('params.csv', names=paramnames)

où, paramnames est une liste python d'objets de type chaîne de caractères. Exemple de paramnames (la longueur de la liste actuelle est de 22) :

paramnames = ["id",
"fc",
"mc",
"markup",
"asplevel",
"aspreview",
"reviewpd"]

À l'invite d'ipython, si je tape paramdata et d'appuyer sur la touche Entrée, je n'obtiens pas le cadre de données avec les colonnes et les valeurs comme indiqué dans les exemples sur le site Site web des pandas . Au lieu de cela, j'obtiens des informations sur le cadre de données. J'obtiens :

In[35]: paramdata
Out[35]: 
<class 'pandas.core.frame.DataFrame'>
Int64Index: 59 entries, 0 to 58
Data columns:
id                    59  non-null values
fc                    59  non-null values
mc                    59  non-null values
markup                59  non-null values
asplevel              59  non-null values
aspreview             59  non-null values
reviewpd              59  non-null values

Si je tape paramdata['mc'] j'obtiens alors les valeurs attendues pour le paramètre mc colonne. J'ai deux questions à poser :

(1) Dans les exemples du site web de pandas (voir, par exemple, la sortie de df aquí: http://pandas.sourceforge.net/indexing.html#additional-column-access ) en tapant le nom du cadre de données, on obtient les données réelles. Pourquoi est-ce que j'obtiens des informations sur le cadre de données comme indiqué ci-dessus au lieu des données réelles ? Dois-je définir des options de sortie quelque part ?

(2) Comment puis-je afficher à l'écran toutes les colonnes du cadre de données sans avoir à taper leur nom, c'est-à-dire sans avoir à taper quelque chose comme paramdata[['id','fc','mc']] .

J'utilise la version 0.8 de pandas.

Nous vous remercions.

318voto

Yariv Points 1635

Utiliser :

pandas.set_option('display.max_columns', 7)

Cela forcera Pandas à afficher les 7 colonnes que vous avez. Ou plus généralement :

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

ce qui l'obligera à afficher n'importe quel nombre de colonnes.

Explication : la valeur par défaut de max_columns es 0 qui indique à Pandas de n'afficher le tableau que si toutes les colonnes peuvent être comprimées dans la largeur de votre console.

Vous pouvez également modifier la largeur de la console (en caractères) par rapport à la valeur par défaut de 80 en utilisant par exemple

pandas.set_option('display.width', 200)

48voto

eumiro Points 56644

Il y a trop de données pour être affichées à l'écran, c'est pourquoi un résumé est affiché à la place.

Si vous voulez quand même sortir les données (elles ne tiendront probablement pas sur un écran et ne sont pas très esthétiques) :

print paramdata.values

convertit le dataframe en sa représentation matricielle numpy-array.

paramdata.columns

stocke les noms des colonnes respectives et

paramdata.index

stocke l'index correspondant (noms des lignes).

31voto

user2428107 Points 130

Je sais que c'est une vieille question, mais je viens d'avoir un problème similaire et je pense que ce que j'ai fait fonctionnerait pour vous aussi.

J'ai utilisé la méthode to_csv() et j'ai écrit sur stdout :

import sys

paramdata.to_csv(sys.stdout)

Vous pouvez utiliser les paramètres to_csv pour configurer les séparateurs de colonnes, l'impression de l'index, etc.

Edit : Il est maintenant possible d'utiliser None en tant que cible de l .to_csv() avec un effet similaire, ce qui est sans doute beaucoup plus agréable :

paramdata.to_csv(None)

22voto

Tomas Olsson Points 61

En ipython Je l'utilise pour imprimer une partie de la base de données, ce qui fonctionne très bien (impression des 100 premières lignes) :

print paramdata.head(100).to_string()

9voto

K Raphael Points 165

Vous pouvez également utiliser DataFrame.head(x) / .tail(x) pour afficher les x premières / dernières lignes du DataFrame.

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