我有一个名称的csv文件params.csv
.我打开ipython qtconsole
并用以下方法创建了一只熊猫dataframe
:
import pandas
paramdata = pandas.read_csv('params.csv', names=paramnames)
Run Code Online (Sandbox Code Playgroud)
其中,paramnames
是一个字符串对象的python列表.示例paramnames
(实际列表的长度为22):
paramnames = ["id",
"fc",
"mc",
"markup",
"asplevel",
"aspreview",
"reviewpd"]
Run Code Online (Sandbox Code Playgroud)
在ipython提示符下,如果我输入paramdata
并按回车键,那么我不会获得带有列和值的数据框,如Pandas网站上的示例所示.相反,我获得有关数据帧的信息.我明白了:
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
Run Code Online (Sandbox Code Playgroud)
如果我键入,paramdata['mc']
那么我确实得到了mc
列的预期值.我有两个问题:
(1)在pandas网站上的例子中(例如,参见df
这里的输出:http://pandas.sourceforge.net/indexing.html#additional-column-access)输入数据帧的名称给出了实际的数据.为什么我如上所示获取有关数据帧的信息而不是实际数据?我需要在某处设置一些输出选项吗?
(2)如何在不必键入名称的情况下将数据框中的所有列输出到屏幕,即无需输入类似的内容paramdata[['id','fc','mc']]
.
我正在使用pandas 0.8版.
谢谢.
Yar*_*riv 251
使用:
pandas.set_option('display.max_columns', 7)
Run Code Online (Sandbox Code Playgroud)
这将迫使Pandas显示您拥有的7列.或者更一般地说:
pandas.set_option('display.max_columns', None)
Run Code Online (Sandbox Code Playgroud)
这会强制它显示任意数量的列.
说明:max_columns
is 的默认值0
,它告诉Pandas只有在所有列都可以挤入控制台宽度时才显示表.
或者,您可以使用以下命令将控制台宽度(以字符为单位)从默认值80更改为:
pandas.set_option('display.width', 200)
Run Code Online (Sandbox Code Playgroud)
eum*_*iro 39
屏幕上显示的数据太多,因此会显示摘要.
如果你想输出数据(它可能不适合在屏幕上看起来不太好):
print paramdata.values
Run Code Online (Sandbox Code Playgroud)
将数据帧转换为其numpy-array矩阵表示.
paramdata.columns
Run Code Online (Sandbox Code Playgroud)
存储相应的列名称和
paramdata.index
Run Code Online (Sandbox Code Playgroud)
存储相应的索引(行名称).
use*_*107 24
我知道这是一个老问题,但我遇到了类似的问题,我认为我所做的也适合你.
我使用了to_csv()方法并写入stdout:
import sys
paramdata.to_csv(sys.stdout)
Run Code Online (Sandbox Code Playgroud)
这应该转储整个数据帧,无论它是否可以很好地打印,并且您可以使用to_csv参数来配置列分隔符,是否打印索引等.
编辑:现在可以使用具有类似效果None
的目标.to_csv()
,这可以说是更好的:
paramdata.to_csv(None)
Run Code Online (Sandbox Code Playgroud)
小智 19
在ipython
,我使用它来打印一个工作得很好的数据帧的一部分(打印前100行):
print paramdata.head(100).to_string()
Run Code Online (Sandbox Code Playgroud)
我从R开始使用python,R的head()
函数以一种非常方便的方式包装行以查看数据:
> head(cbind(mtcars, mtcars, mtcars))
mpg cyl disp hp drat wt qsec vs am gear carb mpg cyl
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 21.0 6
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 21.0 6
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 22.8 4
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1 21.4 6
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2 18.7 8
Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1 18.1 6
disp hp drat wt qsec vs am gear carb mpg cyl disp hp
Mazda RX4 160 110 3.90 2.620 16.46 0 1 4 4 21.0 6 160 110
Mazda RX4 Wag 160 110 3.90 2.875 17.02 0 1 4 4 21.0 6 160 110
Datsun 710 108 93 3.85 2.320 18.61 1 1 4 1 22.8 4 108 93
Hornet 4 Drive 258 110 3.08 3.215 19.44 1 0 3 1 21.4 6 258 110
Hornet Sportabout 360 175 3.15 3.440 17.02 0 0 3 2 18.7 8 360 175
Valiant 225 105 2.76 3.460 20.22 1 0 3 1 18.1 6 225 105
drat wt qsec vs am gear carb
Mazda RX4 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 3.90 2.875 17.02 0 1 4 4
Datsun 710 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 3.15 3.440 17.02 0 0 3 2
Valiant 2.76 3.460 20.22 1 0 3 1
Run Code Online (Sandbox Code Playgroud)
我开发了以下python小功能来模仿此功能:
def rhead(x, nrow = 6, ncol = 4):
pd.set_option('display.expand_frame_repr', False)
seq = np.arange(0, len(x.columns), ncol)
for i in seq:
print(x.loc[range(0, nrow), x.columns[range(i, min(i+ncol, len(x.columns)))]])
pd.set_option('display.expand_frame_repr', True)
Run Code Online (Sandbox Code Playgroud)
(显然取决于熊猫和numpy)