2012-07-06 16 views
68

Ich habe eine CSV-Datei mit dem Namen params.csv. Ich öffnete ipython qtconsole und schuf eine Pandas dataframe mit:Ausgabedaten aus allen Spalten in einem Datenrahmen in Pandas

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

wo paramnames ist eine Python-Liste von String-Objekte. Beispiel für paramnames (die Länge der aktuellen Liste ist 22):

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

Am ipython Aufforderung, wenn ich paramdata eingeben und drücken Sie die Eingabetaste dann kann ich nicht den Datenrahmen mit Spalten und Werten erhalten, wie in den Beispielen auf Pandas website gezeigt. Stattdessen erhalte ich Informationen über den Datenrahmen. Ich bekomme:

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 

Wenn ich paramdata['mc'] geben Sie dann bekomme ich tun, um die Werte wie für die mc Spalte erwartet. Ich habe zwei Fragen:

(1) In den Beispielen auf der Pandas Website (siehe zum Beispiel die Ausgabe von df hier: http://pandas.sourceforge.net/indexing.html#additional-column-access) den Namen der Datenrahmens Eingabe der aktuellen Daten gibt. Warum erhalte ich Informationen über den Datenrahmen, wie oben gezeigt, anstelle der eigentlichen Daten? Muss ich irgendwo Ausgabeoptionen einstellen?

(2) Wie gebe ich alle Spalten im Datenframe auf dem Bildschirm aus, ohne ihre Namen eingeben zu müssen, d. H. Ohne etwas wie paramdata[['id','fc','mc']] eingeben zu müssen.

Ich benutze Pandas Version 0.8.

Vielen Dank.

+0

Near-duplicate von http://stackoverflow.com/questions/11707586/python-pandas-widen-output-display – nealmcb

Antwort

35

Da zu viele Daten auf dem Bildschirm angezeigt werden, wird stattdessen eine Zusammenfassung angezeigt.

Wenn Sie die Ausgabe trotzdem die Daten wollen (es wird wahrscheinlich nicht auf einem Bildschirm passen und sieht nicht sehr gut):

print paramdata.values 

wandelt den Datenrahmen in seine numpy-Array Matrixdarstellung.

paramdata.columns 

speichert die jeweiligen Spaltennamen und

paramdata.index 

speichert den jeweiligen Index (row Namen).

+17

-1 wie ich denke 'set_printoptions' sollte erwähnt werden. 'paramdata.values' ist keine gute Lösung, weil" numpy "wahrscheinlich nicht alle anzeigen wird (abhängig von der Größe) und die Indexinformationen verloren gehen. – bmu

9

Sie können auch DataFrame.head(x)/.tail(x) verwenden, um die ersten/letzten x Zeilen des DataFrame anzuzeigen.

0

Sie Sequenz Aufschneiden Syntax dh

paramdata[:5] # first five records 
paramdata[-5:] # last five records 
paramdata[:] # all records 

manchmal die Datenrahmen möglicherweise nicht passen in den Bildschirmpuffer, in dem Fall, dass Sie wahrscheinlich besser dran, entweder das Drucken einer kleinen Untergruppe oder exportieren sie auf etwas anderes verwenden können, Grundstück oder (cSV wieder)

165

Verwendung:

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

Dies wird Pandas zwingen, die 7 Spalten angezeigt werden Sie haben.Oder allgemeiner:

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

, die sie zwingen wird, eine beliebige Anzahl von Spalten angezeigt werden soll.

Erläuterung: Die Standardeinstellung für max_columns ist 0, die Pandas anweist, die Tabelle nur anzuzeigen, wenn alle Spalten in die Breite Ihrer Konsole gequetscht werden können.

+2

set_option scheint neu zu sein, vielleicht ab Version 0.13? Für frühere Versionen versuchen Sie z. pd.set_printoptions (max_columns = 7) Siehe http://stackoverflow.com/questions/11707586/python-pandas-widen-output-display – nealmcb

+6

Dies sollte die akzeptierte Antwort gewesen sein .... –

21

Ich weiß, das ist eine alte Frage, aber ich hatte gerade ein ähnliches Problem und ich denke, was ich getan habe, würde auch für Sie arbeiten.

ich die to_csv() -Methode verwendet, und schrieb an stdout:

import sys 

paramdata.to_csv(sys.stdout) 

Dies sollte den gesamten Datenrahmen Dump, ob es schön druckbare oder nicht, und Sie können die to_csv Parameter verwenden können Spaltentrenn zu konfigurieren, ob der Index gedruckt usw.

13

In ipython ich diese verwenden, um einen Teil des Datenrahmen zu drucken, die recht gut (druckt die ersten 100 Zeilen) funktioniert:

print paramdata.head(100).to_string() 
Verwandte Themen