2012-07-06 63 views
68

Tôi có tệp csv có tên params.csv. Tôi mở ra ipython qtconsole và tạo ra một gấu trúc dataframe sử dụng:Dữ liệu đầu ra từ tất cả các cột trong một khung dữ liệu trong gấu trúc

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

nơi, paramnames là danh sách python của các đối tượng chuỗi. Ví dụ về paramnames (chiều dài của danh sách thực tế là 22):

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

Tại dấu nhắc ipython nếu tôi gõ paramdata và nhấn enter sau đó tôi không nhận được dataframe với các cột và các giá trị như trong ví dụ trên Pandas website. Thay vào đó, tôi nhận được thông tin về khung dữ liệu. Tôi nhận được:

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 

Nếu tôi gõ paramdata['mc'] sau đó tôi nhận được các giá trị như mong đợi cho cột mc. Tôi có hai câu hỏi:

(1) Trong ví dụ trên trang web gấu trúc (xem, ví dụ, đầu ra của df tại đây: http://pandas.sourceforge.net/indexing.html#additional-column-access) nhập tên của khung dữ liệu cho dữ liệu thực tế. Tại sao tôi nhận được thông tin về khung dữ liệu như được hiển thị ở trên thay vì dữ liệu thực tế? Tôi có cần thiết lập một số tùy chọn đầu ra ở đâu đó không?

(2) Làm cách nào để xuất tất cả các cột trong khung dữ liệu vào màn hình mà không phải nhập tên của chúng, nghĩa là không cần phải nhập một cái gì đó như paramdata[['id','fc','mc']].

Tôi đang sử dụng gấu trúc phiên bản 0.8.

Cảm ơn bạn.

+0

Gần giống với http://stackoverflow.com/questions/11707586/python-pandas-widen-output-display – nealmcb

Trả lời

35

Có quá nhiều dữ liệu được hiển thị trên màn hình, do đó một bản tóm tắt được hiển thị thay thế.

Nếu bạn muốn xuất dữ liệu nào (nó sẽ không thể phù hợp trên một màn hình và không nhìn rất tốt):

print paramdata.values 

chuyển đổi dataframe để đại diện ma trận NumPy mảng của nó.

paramdata.columns 

lưu trữ các tên cột tương ứng và

paramdata.index 

lưu trữ các chỉ số tương ứng (tên hàng).

+17

-1 như tôi nghĩ 'set_printoptions' nên được đề cập. 'paramdata.values' không phải là một giải pháp tốt, vì có lẽ' numpy' sẽ không hiển thị tất cả (tùy thuộc vào kích thước) và thông tin chỉ mục bị mất. – bmu

9

bạn cũng có thể sử dụng DataFrame.head(x)/.tail(x) để hiển thị các hàng x đầu tiên/cuối cùng của DataFrame.

0

bạn có thể sử dụng chuỗi slicing cú pháp tức là

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

đôi khi dataframe có thể không phù hợp trong bộ đệm màn hình trong trường hợp này bạn có lẽ tốt hơn hoặc in một tập hợp con nhỏ hoặc xuất khẩu nó vào cái gì khác, cốt truyện hay (csv một lần nữa)

165

Sử dụng:

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

Điều này sẽ buộc Pandas để hiển thị 7 cột mà bạn có.Hoặc thông thường hơn:

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

sẽ buộc nó hiển thị số lượng cột bất kỳ.

Giải thích: mặc định cho max_columns0, thông báo cho Pandas chỉ hiển thị bảng nếu tất cả các cột có thể được ép vào chiều rộng của bảng điều khiển của bạn.

+2

set_option có vẻ là mới, có lẽ từ phiên bản 0.13? Đối với các phiên bản trước, hãy thử ví dụ: pd.set_printoptions (max_columns = 7) Xem http://stackoverflow.com/questions/11707586/python-pandas-widen-output-display – nealmcb

+6

Điều này đáng lẽ phải là câu trả lời được chấp nhận .... –

21

Tôi biết đây là một câu hỏi cũ, nhưng tôi đã có một vấn đề tương tự và tôi nghĩ rằng những gì tôi đã làm sẽ làm việc cho bạn quá.

tôi đã sử dụng phương pháp to_csv() và viết thư cho stdout:

import sys 

paramdata.to_csv(sys.stdout) 

này nên đổ toàn bộ dataframe cho dù đó là độc đáo-in hay không, và bạn có thể sử dụng các thông số to_csv để cấu hình dải phân cách cột, cho dù chỉ số được in vv

13

trong ipython, tôi sử dụng để in một phần của dataframe rằng hoạt động khá tốt (in 100 hàng đầu tiên):

print paramdata.head(100).to_string() 
Các vấn đề liên quan