2012-07-06 79 views
68

我有一个名为params.csv的csv文件。我打开了ipython qtconsole和使用创造了大熊猫dataframe输出来自熊猫数据框中所有列的数据

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

其中,paramnames是字符串对象的Python列表。的paramnames(实际列表的长度为22)实施例:

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

在IPython的提示,如果I型paramdata并按下确认键然后如实施例所示在Pandas website我没有得到列和值数据帧。相反,我得到关于数据框的信息。我得到:

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 

如果键入paramdata['mc']然后我预期的mc列获取值。我有两个问题:

(1)在熊猫网站的例子中(例如,请参阅df的输出:http://pandas.sourceforge.net/indexing.html#additional-column-access),输入数据框的名称会给出实际数据。为什么我如上所示获取有关数据框的信息而不是实际数据?我需要在某处设置一些输出选项吗? (2)如何将数据框中的所有列输出到屏幕而不必键入其名称,即不必输入类似paramdata[['id','fc','mc']]之类的内容。

我正在使用熊猫版本0.8。

谢谢。

+0

近乎重复http://stackoverflow.com/questions/11707586/python-pandas-widen-output-display – nealmcb 2013-12-12 20:14:17

回答

35

屏幕上显示的数据太多,因此会显示摘要。

如果你想输出的数据呢(它不会可能适合在屏幕上,不看非常好):

print paramdata.values 

转换数据帧其numpy的阵列矩阵表示。

paramdata.columns 

存储各列名和

paramdata.index 

存储各个指数(行的名称)。

+17

-1,因为我认为'set_printoptions'应该被提及。 'paramdata.values'不是一个好的解决方案,因为'numpy'可能不会显示全部(取决于大小),并且索引信息会丢失。 – bmu 2012-07-22 15:46:44

9

您还可以使用DataFrame.head(x)/.tail(x)显示DataFrame的第一个/最后一个x行。

0

可以使用序列切片语法即

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

有时数据框可能不适合在这种情况下,你可能会更好过屏幕缓冲区或者印刷的一小部分,或者出口到别的东西,情节或(再次CSV)

165

用途:

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

这将迫使熊猫,显示你有7列。或更一般地说:

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

这将强制它显示任意数量的列。

说明:max_columns的默认值为0,它告诉Pandas只有在所有列都可以挤入控制台宽度时才显示表格。

+2

set_option似乎是新的,也许从版本0.13?对于早期版本,请尝试pd.set_printoptions(max_columns = 7)请参阅http://stackoverflow.com/questions/11707586/python-pandas-widen-output-display – nealmcb 2013-12-12 20:13:32

+6

这应该是被接受的答案.... – 2016-07-19 22:43:01

21

我知道这是一个老问题,但我刚刚有一个类似的问题,我想我所做的也会为你工作。

我用to_csv()方法,并写到标准输出:

import sys 

paramdata.to_csv(sys.stdout) 

这应该放弃整个数据框无论是精美的打印的或没有,你可以使用to_csv参数配置列分隔符,无论是索引打印等

13

ipython,我使用它来打印工作的很好的数据帧的一部分(打印第一100行):

print paramdata.head(100).to_string()