4

我无法让 pandas 功能为我工作。这是一个简单的例子。我使用以下命令将 kaggle 数据集读入数据帧:

import pandas as pd
train_data=pd.read_csv('kaggle_train.csv',header=None)

然后我使用 head 命令询问前五个数据行:

train_data.head()

我没有得到前五行数据,而是得到以下输出:

<class 'pandas.core.frame.DataFrame'>
Int64Index: 5 entries, 0 to 4
Data columns:
X0     5  non-null values
X1     5  non-null values
X2     5  non-null values
X3     5  non-null values
X4     5  non-null values
X5     5  non-null values
X6     5  non-null values
X7     5  non-null values
X8     5  non-null values
X9     5  non-null values
X10    5  non-null values
X11    5  non-null values
X12    5  non-null values
X13    5  non-null values
X14    5  non-null values
X15    5  non-null values
X16    5  non-null values
X17    5  non-null values
X18    5  non-null values
X19    5  non-null values
X20    5  non-null values
X21    5  non-null values
X22    5  non-null values
X23    5  non-null values
X24    5  non-null values
X25    5  non-null values
X26    5  non-null values
X27    5  non-null values
X28    5  non-null values
X29    5  non-null values
X30    5  non-null values
X31    5  non-null values
X32    5  non-null values
X33    5  non-null values
X34    5  non-null values
X35    5  non-null values
X36    5  non-null values
X37    5  non-null values
X38    5  non-null values
X39    5  non-null values
X40    5  non-null values
dtypes: float64(40), int64(1)

谁能解释为什么会这样?

我在运行 Windows Vista Home Premium Service Pack 2 的 HP Pavilion 笔记本电脑上的 IPython 窗口版本 0.13.1-1 中运行 Python 2.7.3

4

2 回答 2

2

如另一个答案中所述,这是 DataFrame 的摘要视图(因为要显示的列太多*)。您可以使用 iloc/ 查看第一行和第一列;

In [11]: df = pd.DataFrame(np.random.randn(100,100))

In [12]: df.iloc[:3, :4]  # first 3 rows and 4 columns
Out[12]: 
          0         1         2         3
0  1.271254 -1.057603  0.411799  0.523563
1  0.828735  0.306329  0.508435 -1.214766
2  0.684236 -1.541779  2.354181 -1.036631

*默认为 20,但您可以在选项中更改它(超过列数):

pd.options.display.max_columns = 101

现在df.head()将“按预期”显示所有行。

如前所述,在 0.13 中,此行为正在更改为默认显示更多帧(直到第一max_columns列):

In [21]: pd.options.display.max_columns = 5  # by default this is 20

In [22]: df.head()
Out[22]: 
          0         1         2         3         4    
0 -0.269232  0.059875  1.420564  2.106847  1.999374 ...
1 -0.625981 -0.459105 -0.818499 -0.375799  2.619382 ...
2 -1.027394 -0.084883  0.294238  0.636856 -0.356340 ...
3  1.735632  0.235712 -0.283334 -0.191722 -0.885285 ...
4 -0.154700  1.640423  1.021390  0.636728  0.918846 ...

[5 rows x 100 columns]
于 2013-12-30T20:23:02.547 回答
2

默认情况下,如果输出的列太多而无法以可读方式显示,pandas 会显示输出的摘要形式。您可以通过执行强制它显示实际数据print train_data.head().to_string(),但输出可能难以阅读,因为您有这么多列。

于 2013-12-30T19:58:16.547 回答