2013-06-06 47 views
12

vì tôi đã cài đặt phiên bản cập nhật của gấu trúc mỗi khi tôi nhập tên của một khung dữ liệu, ví dụ:Hiển thị khung dữ liệu Pandas dưới dạng bảng

df[0:5] 

Để xem một vài hàng đầu tiên, nó cho tôi tóm tắt các cột, số lượng giá trị trong chúng và các loại dữ liệu thay thế.

Tôi làm cách nào để xem chế độ xem bảng? (Tôi đang sử dụng iPython btw).

Cảm ơn trước!

+0

http://pandas.pydata.org/pandas-docs/stable/basics.html – colinfang

Trả lời

20

Lưu ý: Để hiển thị một số hàng đầu bạn cũng có thể sử dụng head.

Tuy nhiên, gấu trúc sẽ hiển thị chế độ xem tóm tắt nếu có nhiều cột hơn display.max_columns hoặc dài hơn display.width (tương tự cho hàng), vì vậy bạn cần phải tăng các cột này để hiển thị chế độ xem dạng bảng. Bạn có thể thay đổi các tùy chọn sử dụng bộ, ví dụ:

pd.options.display.max_columns = 50 

Xem vấn đề gấu trúc này: "Unintuitive default behavior with wide DataFrames in the IPython notebook".

Ngoài ra, hiển thị vài dòng đầu tiên trong vài cột đầu tiên bạn có thể sử dụng:

df.head(5)[df.columns[0:4]] 
# alternatively 
df.iloc[:5, :4] 
+0

Cảm ơn cho điều đó - khi tôi gõ vào ' record_refs.head (5) [record_refs.columns [0: 5]] '- nơi record_refs là dataframe, cung cấp cho tôi bản tóm tắt:' Int64Index: 5 mục, 0 đến 4 Cột dữ liệu (tổng cộng 5 cột): không phải bảng. Tôi sử dụng để có thể gõ vào tên của df và có được một bảng tốt đẹp trong iPython cho một vài hàng đầu tiên! – user7289

+0

Chỉ cần thử đầu của chính nó - vẫn không có may mắn, mang lại cho tôi tóm tắt cột ... – user7289

+0

@ user7289 yea nó chỉ là đường cho 'df [0: 5]', vấn đề là max_rows hoặc display_width. –

7

Câu trả lời ngắn: Nếu phiên bản của bạn là sau đó 0.11.0, hãy thử thiết lập chiều rộng màn hình của bạn với:

pd.set_option('display.width', 200) 

Câu trả lời dài: Được cấp, chủ đề là 4 tháng tuổi nhưng tôi gặp vấn đề tương tự tối qua. Một máy tính xách tay ipython đã làm việc tốt tại công việc của tôi sẽ không trình bày các bảng html ở nhà.

Thứ nhất, kiểm tra phiên bản của bạn:

import pandas as pd 
pd.__version__ 

Mine trở lại với: '0.11.0'

Tiếp theo, kiểm tra các thiết lập của bạn với:

pd.describe_option('display') 

này sẽ cung cấp cho bạn một danh sách dài của tất cả các tùy chọn hiển thị có thể có và các giá trị mặc định hiện tại. Bạn có thể phải chơi với thay đổi các giá trị mặc định. Đi với các giá trị lớn để có được nó làm việc và sau đó quy mô trở lại khi cần thiết.

Display.width là quan trọng. Tôi đặt những thứ này lên hàng đầu với hàng nhập khẩu.

pd.set_option('display.height', 500) 
pd.set_option('display.max_rows', 500) 
pd.set_option('display.max_columns', 500) 
pd.set_option('display.width', 200) 
0

Rất hữu ích, cảm ơn. Tôi đã trải qua ulmo + pandas example này trong một Notebook được lưu trữ tại Wakari và đã bối rối vì sao một số bảng chỉ đưa ra một bản tóm tắt, không hiển thị dưới dạng HTML. Có vẻ như tùy chọn display.width trong Wakari mặc định là 80, vì vậy bảng không phải là rất rộng trước khi nó quyết định in một bản tóm tắt thay thế. Đây là một chế độ ẩn khó hiểu. Đã sửa lỗi sau:

pandas.set_option('display.width',500) 

display.max_rows and display.max_columns mặc định là 60 và 20, vì vậy tôi đã để lại các giá trị đó. Điều này là với Pandas 0.11.0.

0

Bước đầu tiên: Tôi đang sử dụng tính năng này để có GUI trong pydev của nhật thực. Hãy chắc chắn rằng pydev của bạn đã thiết lập GUI. Sử dụng hướng dẫn này: http://popdevelop.com/2010/04/setting-up-ide-and-creating-a-cross-platform-qt-python-gui-application/ để thực hiện điều đó.

Second Step: lấy ví dụ từ đây Fastest way to populate QTableView from Pandas data frame và làm một số sửa đổi, chạy mã dưới đây một lần:

import pandas as pd 
from PyQt5 import QtCore, QtGui ,QtWidgets 
class PandasModel2(QtCore.QAbstractTableModel): 
    """ 
    Class to populate a table view with a pandas dataframe 
    """ 
    def __init__(self, data, parent=None): 
     QtCore.QAbstractTableModel.__init__(self, parent) 
     self._data = data 

    def rowCount(self, parent=None): 
     return self._data.shape[0] 

    def columnCount(self, parent=None): 
     return self._data.shape[1] 

    def data(self, index, role=QtCore.Qt.DisplayRole): 
     if index.isValid(): 
      if role == QtCore.Qt.DisplayRole: 
       return str(self._data.iloc[index.row(), index.column()]) 
     return None 

    def headerData(self, col, orientation, role): 
     if orientation == QtCore.Qt.Horizontal and role == QtCore.Qt.DisplayRole: 
      return self._data.columns[col] 
     return None 

view = QtWidgets.QTableView() 

Một khi điều này được thực hiện. Tất cả bạn cần chỉ đơn giản là gõ các lệnh dưới đây và bạn có thể có GUI

view.setModel(PandasModel2("your dataframe name")) 
view.show() 
Các vấn đề liên quan