ฉันจะขยายการแสดงผลลัพธ์เพื่อดูคอลัมน์เพิ่มเติมของ DataFrame แพนด้าได้อย่างไร


622

มีวิธีที่จะขยายการแสดงผลในโหมดโต้ตอบหรือการดำเนินการสคริปต์ทั้ง?

โดยเฉพาะผมใช้ฟังก์ชั่นเกี่ยวกับหมีแพนด้าdescribe() DataFrameเมื่อDataFrameกว้าง 5 คอลัมน์ (ป้ายกำกับ) ฉันจะได้รับสถิติเชิงพรรณนาที่ฉันต้องการ อย่างไรก็ตามหากDataFrameมีคอลัมน์เพิ่มเติมสถิติจะถูกระงับและสิ่งนี้จะถูกส่งคืน:

>> Index: 8 entries, count to max  
>> Data columns:  
>> x1          8  non-null values  
>> x2          8  non-null values  
>> x3          8  non-null values  
>> x4          8  non-null values  
>> x5          8  non-null values  
>> x6          8  non-null values  
>> x7          8  non-null values  

ค่า "8" ถูกกำหนดว่ามีคอลัมน์ 6 หรือ 7 คอลัมน์ "8" หมายถึงอะไร

ฉันลองลากหน้าต่าง IDLE ให้ใหญ่ขึ้นรวมถึงเพิ่มตัวเลือกความกว้าง "กำหนดค่า IDLE" เพื่อไม่ให้เกิดประโยชน์

จุดประสงค์ของฉันในการใช้แพนด้าdescribe()คือเพื่อหลีกเลี่ยงการใช้โปรแกรมที่สองเช่น Stata เพื่อทำการจัดการข้อมูลพื้นฐานและตรวจสอบ

คำตอบ:


886

อัพเดท: นุ่น 0.23.4 เป็นต้นไป

นี้ไม่จำเป็นหมีแพนด้า autodetects ขนาดของหน้าต่าง terminal pd.options.display.width = 0ของคุณถ้าคุณตั้งค่า (สำหรับรุ่นเก่าดูที่ด้านล่าง)

pandas.set_printoptions(...)เลิกใช้แล้ว แต่ให้ใช้หรือเท่ากันpandas.set_option(optname, val) pd.options.<opt.hierarchical.name> = valชอบ:

import pandas as pd
pd.set_option('display.max_rows', 500)
pd.set_option('display.max_columns', 500)
pd.set_option('display.width', 1000)

นี่คือความช่วยเหลือสำหรับset_option :

set_option (pat, value) - ตั้งค่าของตัวเลือกที่ระบุ

ตัวเลือกที่มี:
ดิสเพลย์ [chop_threshold, colheader_justify, column_space, date_dayfirst,
         date_year ก่อน, การเข้ารหัส, ขยาย _ เฟรม _repr, float_format, ส่วนสูง,
         line_width, max_columns, max_colwidth, max_info_columns, max_info_rows
         max_rows, max_seq_items, mpl_style, multi_sparse, notebook_repr_html
         pprint_nest_depth, ความแม่นยำ, ความกว้าง]
โหมด [sim_interactive, use_inf_as_null]

พารามิเตอร์
----------
pat - str / regexp ซึ่งควรตรงกับตัวเลือกเดียว

หมายเหตุ: การจับคู่บางส่วนได้รับการสนับสนุนเพื่อความสะดวก แต่หากคุณไม่ได้ใช้
ชื่อตัวเลือกแบบเต็ม (egxyzoption_name) รหัสของคุณอาจแตกได้ในอนาคต
เวอร์ชันหากมีการแนะนำตัวเลือกใหม่ที่มีชื่อคล้ายกัน

value - ค่าใหม่ของตัวเลือก

ผลตอบแทน
-------
ไม่มี

ยก
------
KeyError หากไม่มีตัวเลือกดังกล่าว

display.chop_threshold: [ค่าเริ่มต้น: ไม่มี] [ปัจจุบัน: ไม่มี]
: ลอยหรือไม่มี
        หากตั้งค่าเป็นค่าทศนิยมค่าลอยทั้งหมดจะเล็กกว่าค่าที่กำหนด
        จะถูกแสดงเป็นอย่างถูกต้อง 0 โดย repr และเพื่อน ๆ
display.colheader_justify: [ค่าเริ่มต้น: ขวา] [ปัจจุบัน: ขวา]
: 'ซ้ายขวา'
        ควบคุมความสมเหตุสมผลของส่วนหัวคอลัมน์ ใช้โดย DataFrameFormatter
display.column_space: [ค่าเริ่มต้น: 12] [ขณะนี้: 12] ไม่มีคำอธิบาย

display.date_dayfirst: [ค่าเริ่มต้น: เท็จ] [ปัจจุบัน: เท็จ]
: บูลีน
        เมื่อ True ให้พิมพ์และวิเคราะห์วันที่ด้วยวันแรกเช่น 20/01/2005
display.date_yearfirst: [ค่าเริ่มต้น: เท็จ] [ปัจจุบัน: เท็จ]
: บูลีน
        เมื่อ True พิมพ์และวิเคราะห์วันที่ด้วยปีแรกเช่น 2005/01/20
display.encoding: [ค่าเริ่มต้น: UTF-8] [ปัจจุบัน: UTF-8]
: str / unicode
        ค่าเริ่มต้นของการเข้ารหัสที่ตรวจพบของคอนโซล
        ระบุการเข้ารหัสที่จะใช้สำหรับสตริงที่ส่งคืนโดย to_string
        โดยทั่วไปจะเป็นสตริงที่ตั้งใจให้แสดงบนคอนโซล
display.expand_frame_repr: [ค่าเริ่มต้น: จริง] [ปัจจุบัน: จริง]
: บูลีน
        ว่าจะพิมพ์ DataFrame เต็มรูปแบบที่พิมพ์สำหรับ DataFrames แบบกว้าง ๆ
        ข้ามหลายบรรทัด `max_columns 'ยังคงได้รับการเคารพ แต่ผลลัพธ์จะ
        ล้อมรอบในหลาย ๆ "หน้า" ถ้ามันมีความกว้างเกินกว่า `display.width`
display.float_format: [ค่าเริ่มต้น: ไม่มี] [ปัจจุบัน: ไม่มี]
: callable
        callable ควรยอมรับหมายเลขจุดลอยตัวและส่งคืน
        สตริงที่มีรูปแบบที่ต้องการของตัวเลข สิ่งนี้ถูกใช้
        ในบางสถานที่เช่น SeriesFormatter
        ดู core.format.EngFormatter สำหรับตัวอย่าง
display.height: [ค่าเริ่มต้น: 60] [ขณะนี้: 1,000]
: int
        เลิก
        (คัดค้านให้ใช้ "display.height" แทน)

display.line_width: [ค่าเริ่มต้น: 80] [ขณะนี้: 1,000]
: int
        เลิก
        (เลิกใช้แล้วให้ใช้ 'display.width` แทน)

display.max_columns: [ค่าเริ่มต้น: 20] [ปัจจุบัน: 500]
: int
        max_rows และ max_columns ถูกใช้ใน __repr __ () วิธีการตัดสินใจว่า
        to_string () หรือ info () ใช้ในการเรนเดอร์วัตถุเป็นสตริง เผื่อ
        python / IPython กำลังรันอยู่ในเทอร์มินัลซึ่งสามารถตั้งค่าเป็น 0 และ pandas
        จะตรวจสอบความกว้างของเทอร์มินัลอย่างอัตโนมัติและสลับเป็นขนาดเล็ก
        รูปแบบในกรณีที่คอลัมน์ทั้งหมดจะไม่พอดีในแนวตั้ง โน้ตบุ๊ก IPython
        IPython qtconsole หรือ IDLE ไม่ได้รันในเทอร์มินัลดังนั้นจึงไม่ใช่
        เป็นไปได้ที่จะทำการตรวจจับอัตโนมัติที่ถูกต้อง
        ค่า 'ไม่มี' หมายถึงไม่ จำกัด
display.max_colwidth: [ค่าเริ่มต้น: 50] [ปัจจุบัน: 50]
: int
        ความกว้างสูงสุดในอักขระของคอลัมน์ในการพิมพ์
        โครงสร้างข้อมูลแพนด้า เมื่อคอลัมน์ล้นเป็น "... "
        ตัวยึดถูกฝังอยู่ในผลลัพธ์
display.max_info_columns: [ค่าเริ่มต้น: 100] [ขณะนี้: 100]
: int
        max_info_columns ใช้ในวิธี DataFrame.info เพื่อตัดสินใจว่า
        ข้อมูลต่อคอลัมน์จะถูกพิมพ์
display.max_info_rows: [ค่าเริ่มต้น: 1690785] [ปัจจุบัน: 1690785]
: int หรือไม่มี
        max_info_rows คือจำนวนแถวสูงสุดที่เฟรมจะมี
        ทำการตรวจสอบเป็นโมฆะในคอลัมน์ของมันเมื่อ repr'ing To คอนโซล
        ค่าเริ่มต้นคือ 1,000,000 แถว ดังนั้นหาก DataFrame มีมากกว่า
        1,000,000 แถวจะไม่มีการตรวจสอบเป็นโมฆะใน
        คอลัมน์และดังนั้นการเป็นตัวแทนจะใช้เวลาน้อยลง
        แสดงในเซสชันแบบโต้ตอบ ค่าของ None หมายถึงเสมอ
        ทำการตรวจสอบเป็นโมฆะเมื่อทำการพิมพ์ใหม่
display.max_rows: [ค่าเริ่มต้น: 60] [ปัจจุบัน: 500]
: int
        การทำเช่นนี้จะกำหนดจำนวนแถวสูงสุดที่แพนด้าควรออกเมื่อพิมพ์
        เอาท์พุทต่างๆ ตัวอย่างเช่นค่านี้พิจารณาว่าการพิมพ์ซ้ำ ()
        สำหรับ dataframe พิมพ์ออกมาอย่างสมบูรณ์หรือเพียงแค่การสรุปข้อมูลใหม่
        ค่า 'ไม่มี' หมายถึงไม่ จำกัด
display.max_seq_items: [ค่าเริ่มต้น: ไม่มี] [ปัจจุบัน: ไม่มี]
: int หรือไม่มี

        เมื่อพิมพ์สวยต่อเนื่องเป็นลำดับไม่ต้องมีอะไรอีกต่อไปแล้ว max_seq_items`
        จะถูกพิมพ์ หากรายการมีการ ommitted พวกเขาจะถูกแสดงโดยการเพิ่ม
        จาก "... " ถึงสตริงผลลัพธ์

        หากตั้งค่าเป็นไม่มีจำนวนรายการที่จะพิมพ์จะไม่ จำกัด
display.mpl_style: [ค่าเริ่มต้น: ไม่มี] [ปัจจุบัน: ไม่มี]
: บูล

        การตั้งค่านี้เป็น 'ค่าเริ่มต้น' จะแก้ไข rcParams ที่ใช้โดย matplotlib
        เพื่อให้พล็อตมีสไตล์ของภาพที่ชื่นชอบมากขึ้น
        การตั้งค่านี้เป็นไม่มี / เท็จจะคืนค่าเป็นค่าเริ่มต้น
display.multi_sparse: [ค่าเริ่มต้น: จริง] [ปัจจุบัน: จริง]
: บูลีน
        "sparsify" จอแสดงผล MultiIndex (อย่าแสดงซ้ำ
        องค์ประกอบในระดับภายนอกภายในกลุ่ม)
display.notebook_repr_html: [ค่าเริ่มต้น: จริง] [ปัจจุบัน: จริง]
: บูลีน
        เมื่อเป็นจริงสมุดบันทึก IPython จะใช้การแทน html สำหรับ
        วัตถุแพนด้า (ถ้ามี)
display.pprint_nest_depth: [ค่าเริ่มต้น: 3] [ขณะนี้: 3]
: int
        ควบคุมจำนวนระดับที่ซ้อนกันเพื่อดำเนินการเมื่อพิมพ์สวย
display.precision: [ค่าเริ่มต้น: 7] [ขณะนี้: 7]
: int
        ความแม่นยำของการส่งออกจุดลอยตัว (จำนวนหลักสำคัญ) นี่คือ
        เพียงข้อเสนอแนะ
display.width: [ค่าเริ่มต้น: 80] [ขณะนี้: 1,000]
: int
        ความกว้างของจอแสดงผลเป็นตัวอักษร ในกรณีที่ python / IPython ทำงานอยู่
        เทอร์มินัลนี้สามารถตั้งค่าเป็นไม่มีและแพนด้าจะตรวจจับอัตโนมัติ
        ความกว้าง
        โปรดทราบว่าโน้ตบุ๊ก IPython, IPython qtconsole หรือ IDLE ไม่ได้ทำงานใน
        เทอร์มินัลและดังนั้นจึงไม่สามารถตรวจจับความกว้างได้อย่างถูกต้อง
mode.sim_interactive: [ค่าเริ่มต้น: เท็จ] [ปัจจุบัน: เท็จ]
: บูลีน
        ว่าจะจำลองโหมดการโต้ตอบเพื่อการทดสอบหรือไม่
mode.use_inf_as_null: [ค่าเริ่มต้น: เท็จ] [ปัจจุบัน: เท็จ]
: บูลีน
        True หมายถึงถือว่าไม่มี, NaN, INF, -INF เป็นโมฆะ (แบบเก่า)
        เท็จหมายความว่าไม่มีและ NaN เป็นโมฆะ แต่ INF, -INF ไม่ใช่โมฆะ
        (วิธีการใหม่).
Call def: pd.set_option (ตัวเอง * args, ** kwds)

แก้ไข: ข้อมูลรุ่นเก่ากว่านี้ส่วนใหญ่ได้รับการคัดค้าน

ตามที่ @bmu กล่าวไว้แพนด้าจะตรวจจับขนาดของพื้นที่แสดงผลโดยอัตโนมัติ (ตามค่าเริ่มต้น) มุมมองสรุปจะถูกใช้เมื่อวัตถุที่แสดงซ้ำไม่พอดีกับหน้าจอ คุณกล่าวถึงการปรับขนาดหน้าต่าง IDLE เพื่อไม่มีผลกระทบ ถ้าคุณทำprint df.describe().to_string()มันพอดีกับหน้าต่าง IDLE?

ขนาดเทอร์มินัลถูกกำหนดโดยpandas.util.terminal.get_terminal_size()(คัดค้านและนำออก) ซึ่งจะส่งคืน tuple ที่มี(width, height)ส่วนแสดงผล เอาต์พุตตรงกับขนาดของหน้าต่าง IDLE ของคุณหรือไม่? อาจมีปัญหา (มีหนึ่งก่อนเมื่อรันเทอร์มินัลใน emacs)

โปรดทราบว่าเป็นไปได้ที่จะข้ามการตรวจจับอัตโนมัติpandas.set_printoptions(max_rows=200, max_columns=10)จะไม่เปลี่ยนเป็นมุมมองสรุปหากจำนวนแถวคอลัมน์ไม่เกินขีด จำกัด ที่กำหนด


ตัวเลือก 'max_colwidth' ช่วยในการดูรูปแบบที่ไม่ถูกตัดทอนของแต่ละคอลัมน์

TruncatedColumnDisplay


4
display.height: เลิกใช้แล้วใช้display.heightแทน ... ฉันอยู่ในวนซ้ำ
Frozen Flame

5
ปัจจุบันสามารถตั้งค่าตัวเลือกต่าง ๆ ให้เป็นคุณสมบัติของpd.optionsเช่นpd.options.display.max_rows = 999
unutbu

2
คุณสมบัติ 'display.height' เลิกใช้แล้ว
Greg M. Krsak

2
ไม่ได้ผลสำหรับฉันใน Pandas 0.23.2
devinbost

6
คุณอาจต้องการใช้option_contextเพื่อให้การเปลี่ยนแปลงตัวเลือกเป็นสิ่งที่คุณกำลังทำงานอยู่ วิธีนี้ช่วยป้องกันการพิมพ์ขยะ 400 หน้าในการโทรครั้งต่อไป.head()หรืออะไรก็ตาม
Mike Williamson

195

ลองสิ่งนี้:

pd.set_option('display.expand_frame_repr', False)

จากเอกสาร:

display.expand_frame_repr: boolean

ไม่ว่าจะพิมพ์ DataFrame เต็มรูปแบบที่พิมพ์ซ้ำสำหรับ DataFrames กว้างข้ามหลายบรรทัด max_columns ยังคงได้รับความเคารพ แต่ผลลัพธ์จะล้อมรอบในหน้า“ หลายหน้า” หากความกว้างเกินความกว้างของหน้าจอ [ค่าเริ่มต้น: จริง] [ปัจจุบัน: จริง]

ดู: http://pandas.pydata.org/pandas-docs/stable/generated/pandas.set_option.html


6
อันนี้ใช้ได้สำหรับฉัน ดูเหมือนว่าแพนด้าจะคำนวณความกว้างของเอาต์พุตด้วยเหตุผลบางอย่างและแยกคอลัมน์โดยไม่จำเป็น
zbyszek

5
ฉันต้องทำสิ่งนี้ทุกวันอย่างแท้จริง ... มีวิธีใดที่จะทำให้โลกนี้อยู่ที่ไหนสักแห่ง?
citynorman

1
@citynorman ดูpandas\core\config_init.pyเพื่อตั้งค่าอย่างถาวร
Jarad

106

หากคุณต้องการตั้งค่าตัวเลือกชั่วคราวเพื่อแสดงหนึ่ง DataFrame ขนาดใหญ่คุณสามารถใช้option_context :

with pd.option_context('display.max_rows', None, 'display.max_columns', None):
    print (df)

ค่าตัวเลือกจะถูกกู้คืนโดยอัตโนมัติเมื่อคุณออกจากwithบล็อก


3
เพื่อตั้งค่าไม่ จำกัดNoneสามารถใช้ (แทน 999 เป็นต้น)
Eric O Lebigot

5
with pd.option_context('display.max_rows', None, 'display.max_columns', None): print(energy)ไม่ทำงาน มันไม่ได้เปลี่ยนจำนวนคอลัมน์ที่ฉันต้องการดู อย่างไรก็ตามวิธีการแก้ปัญหาของ Wouter Overmeiere ทำงานได้
Aziz Javed

แต่มีความแตกต่างต้องมีจำนวนเหมือน-1หรือ500ไม่ใช่ไม่มี
jezrael

2
ใช้ -1 แฮงค์และ 500 ไม่ได้ทำอะไรเลย
Aziz Javed

1
+1 สำหรับการแนะนำตัวจัดการบริบท แต่ -1 สำหรับmax_rowsค่า;) การตั้งค่า'display.max_rows'เป็น -1 ดูเหมือนว่าการจัดรูปแบบจะเลอะอย่างสมบูรณ์ (สำหรับข้อมูลของฉันไม่มีข้อผิดพลาด แต่มันพิมพ์แถวที่แน่นอนหลายครั้งในขณะนี้)
bluenote10

88

การใช้ 3 บรรทัดเหล่านี้ใช้งานได้สำหรับฉันเท่านั้น:

pd.set_option('display.max_columns', None)  
pd.set_option('display.expand_frame_repr', False)
pd.set_option('max_colwidth', -1)

Anaconda / Python 3.6.5 / pandas: 0.23.0 / Visual Studio รหัส 1.26


54

ตั้งค่าความกว้างสูงสุดของคอลัมน์โดยใช้:

pd.set_option('max_colwidth', 800)

ข้อความเฉพาะนี้ตั้งค่าความกว้างสูงสุดเป็น 800px ต่อคอลัมน์


2
เลื่อนลงมาตามลำดับการลงคะแนนเสียงนี่เป็นคำตอบแรกที่ทำให้ฉันได้รับแพนด้าที่ไม่ตัดทอนข้อความธรรมดาของ DataFrames (นุ่น 0.22, iTerm2 3.0.13, OS X 10.12)
Peter Leimbigler

2
นี่เป็นคนเดียวที่ทำงานสำหรับฉันสำหรับนุ่น 0.23.2
devinbost

1
ทำไมคุณไม่ต้องระบุว่าเป็นdisplay.max_colwidth? นั่นคือวิธีที่มันถูกระบุไว้ในเอกสาร ฉันยอมรับว่าใช้max_colwidthงานได้และสั้นกว่าในการเขียนเท่านั้น แต่ฉันรู้สึกประหลาดใจ
cmo

26

คุณสามารถใช้print df.describe().to_string()เพื่อบังคับให้แสดงตารางทั้งหมด (คุณสามารถใช้to_string()เช่นนี้สำหรับ DataFrame ใด ๆ ผลลัพธ์ของการdescribeเป็น DataFrame เอง)

8 คือจำนวนแถวใน DataFrame ที่ถือ "คำอธิบาย" (เพราะdescribeคำนวณ 8 สถิติ, min, max, Mean, ฯลฯ )


26

set_printoptionsคุณสามารถปรับนุ่นพิมพ์ตัวเลือกด้วย

In [3]: df.describe()
Out[3]: 
<class 'pandas.core.frame.DataFrame'>
Index: 8 entries, count to max
Data columns:
x1    8  non-null values
x2    8  non-null values
x3    8  non-null values
x4    8  non-null values
x5    8  non-null values
x6    8  non-null values
x7    8  non-null values
dtypes: float64(7)

In [4]: pd.set_printoptions(precision=2)

In [5]: df.describe()
Out[5]: 
            x1       x2       x3       x4       x5       x6       x7
count      8.0      8.0      8.0      8.0      8.0      8.0      8.0
mean   69024.5  69025.5  69026.5  69027.5  69028.5  69029.5  69030.5
std       17.1     17.1     17.1     17.1     17.1     17.1     17.1
min    69000.0  69001.0  69002.0  69003.0  69004.0  69005.0  69006.0
25%    69012.2  69013.2  69014.2  69015.2  69016.2  69017.2  69018.2
50%    69024.5  69025.5  69026.5  69027.5  69028.5  69029.5  69030.5
75%    69036.8  69037.8  69038.8  69039.8  69040.8  69041.8  69042.8
max    69049.0  69050.0  69051.0  69052.0  69053.0  69054.0  69055.0

อย่างไรก็ตามสิ่งนี้จะไม่สามารถใช้งานได้ในทุกกรณีขณะที่แพนด้าตรวจพบความกว้างคอนโซลของคุณและจะใช้เฉพาะto_stringเมื่อเอาต์พุตนั้นพอดีกับคอนโซล (ดูที่ docstring ของset_printoptions) ในกรณีนี้คุณสามารถเรียกอย่างชัดเจนto_stringว่ามีคำตอบโดยBrenBarn

ปรับปรุง

ด้วยเวอร์ชัน 0.10 วิธีที่พิมพ์ฐานข้อมูลแบบกว้างเปลี่ยนแปลง :

In [3]: df.describe()
Out[3]: 
                 x1            x2            x3            x4            x5  \
count      8.000000      8.000000      8.000000      8.000000      8.000000   
mean   59832.361578  27356.711336  49317.281222  51214.837838  51254.839690   
std    22600.723536  26867.192716  28071.737509  21012.422793  33831.515761   
min    31906.695474   1648.359160     56.378115  16278.322271     43.745574   
25%    45264.625201  12799.540572  41429.628749  40374.273582  29789.643875   
50%    56340.214856  18666.456293  51995.661512  54894.562656  47667.684422   
75%    75587.003417  31375.610322  61069.190523  67811.893435  76014.884048   
max    98136.474782  84544.484627  91743.983895  75154.587156  99012.695717   

                 x6            x7  
count      8.000000      8.000000  
mean   41863.000717  33950.235126  
std    38709.468281  29075.745673  
min     3590.990740   1833.464154  
25%    15145.759625   6879.523949  
50%    22139.243042  33706.029946  
75%    72038.983496  51449.893980  
max    98601.190488  83309.051963  

ยิ่งไปกว่า API สำหรับการตั้งค่าตัวเลือกแพนด้าเปลี่ยนแปลง:

In [4]: pd.set_option('display.precision', 2)

In [5]: df.describe()
Out[5]: 
            x1       x2       x3       x4       x5       x6       x7
count      8.0      8.0      8.0      8.0      8.0      8.0      8.0
mean   59832.4  27356.7  49317.3  51214.8  51254.8  41863.0  33950.2
std    22600.7  26867.2  28071.7  21012.4  33831.5  38709.5  29075.7
min    31906.7   1648.4     56.4  16278.3     43.7   3591.0   1833.5
25%    45264.6  12799.5  41429.6  40374.3  29789.6  15145.8   6879.5
50%    56340.2  18666.5  51995.7  54894.6  47667.7  22139.2  33706.0
75%    75587.0  31375.6  61069.2  67811.9  76014.9  72039.0  51449.9
max    98136.5  84544.5  91744.0  75154.6  99012.7  98601.2  83309.1

ฉันชอบใช้วิธี max_columns ที่ Lodagro พูดถึง แต่ฉันดีใจที่คุณพูดถึงคำหลักที่มีความแม่นยำเนื่องจากจะช่วยล้างสถิติที่แสดง ขอบคุณ!
หัวผักกาด

22

คุณสามารถตั้งค่าการแสดงผลให้ตรงกับความกว้างในปัจจุบันขั้วของคุณ:

pd.set_option('display.width', pd.util.terminal.get_terminal_size()[0])

6
@ wouter-overmeire บอกว่าหมีแพนด้าทำสิ่งนี้โดยอัตโนมัติแต่ดูเหมือนจะไม่เป็นเช่นนั้นอย่างน้อยก็ไม่ใช่กับ 0.18.0 แต่ถ้าคุณใช้pd.set_option('display.width', None)ใน terminal ที่"หมีแพนด้าจะถูกต้องอัตโนมัติตรวจสอบความกว้าง"
Matthias Fripp

แน่นอน! มันไม่ได้ทำตามค่าเริ่มต้น การตั้งค่าเป็นไม่มีก็แค่เพิกเฉยความกว้างเลย บางทีมันอาจเป็นข้อผิดพลาดใน Pandas หรือบางทีมันอาจจะเกี่ยวกับขั้ว gnome .. ? ขอบคุณ Wilfred Hughes!
อันตราย 89

3
AttributeError: โมดูล 'pandas.util' ไม่มีแอตทริบิวต์ 'เทอร์มินัล'
Bhishan Poudel

1
@BishishPoudel คุณสามารถทำได้แทน:pd.options.display.width = None
SebMa

1
@BishishPoudel คำตอบนี้มีอายุไม่กี่ปีและฉันพบปัญหาเดียวกันกับคุณ ในการเขียนนี้โดยใช้ pandas เวอร์ชั่น 0.23.1 โมดูลคือตอนนี้pd.io.formats.terminal.get_terminal_size()
Ajay

13

จากเอกสารสำหรับ v0.18.0หากคุณกำลังใช้งานเทอร์มินัล (เช่นไม่ใช่โน๊ตบุ๊ก iPython, qtconsole หรือ IDLE) เป็น 2 ซับเพื่อให้ Pandas ตรวจสอบความกว้างของหน้าจอของคุณโดยอัตโนมัติและปรับได้ทันที คอลัมน์ที่แสดง:

pd.set_option('display.large_repr', 'truncate')
pd.set_option('display.max_columns', 0)

1
สิ่งนี้ได้ผลสำหรับฉันขอบคุณ! ฉันกำลังใช้ Pandas 0.22.0 (ล่าสุดจนถึง 8 ก.พ. 2018) โดยใช้แอป Terminal ในตัวบน OS X 10.11.6
Greg Sadetsky

8

ดูเหมือนว่าคำตอบทั้งหมดข้างต้นแก้ปัญหาได้ อีกหนึ่งจุด: แทนที่จะใช้pd.set_option('option_name')คุณสามารถใช้ (auto-complete-can)

pd.options.display.width = None

ดูPandas doc: ตัวเลือกและการตั้งค่า:

ตัวเลือกมีชื่อ“ แบบจุด” เต็มรูปแบบชื่อตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ (เช่น display.max_rows) คุณสามารถรับ / ตั้งค่าตัวเลือกโดยตรงเป็นแอตทริบิวต์ของoptionsแอตทริบิวต์ระดับบนสุด:

In [1]: import pandas as pd

In [2]: pd.options.display.max_rows
Out[2]: 15

In [3]: pd.options.display.max_rows = 999

In [4]: pd.options.display.max_rows
Out[4]: 999

[ ... ]

สำหรับmax_...params:

max_rowsและmax_columnsมีการใช้ใน__repr__()วิธีการตัดสินใจว่าจะใช้to_string()หรือinfo()แสดงวัตถุเป็นสตริง ในกรณีที่ไพ ธ อน / IPython ทำงานในเทอร์มินัลคุณสามารถตั้งค่าเป็น 0 และแพนด้าจะตรวจสอบความกว้างอัตโนมัติเทอร์มินัลและสลับไปยังรูปแบบที่เล็กลงในกรณีที่คอลัมน์ทั้งหมดไม่พอดีในแนวตั้ง โน้ตบุ๊ก IPython, IPython qtconsole หรือ IDLE ไม่ทำงานในเทอร์มินัลจึงไม่สามารถทำการตรวจจับอัตโนมัติได้ ' None' ค่าหมายถึงไม่ จำกัด [เน้นไม่ได้อยู่ในต้นฉบับ]

สำหรับwidthพารามิเตอร์:

ความกว้างของจอแสดงผลเป็นตัวอักษร ในกรณีที่ python / IPython ทำงานในเครื่องเทอร์มินัลสามารถตั้งค่าเป็นNoneและ pandas จะตรวจจับความกว้างอัตโนมัติได้อย่างถูกต้อง โปรดทราบว่าโน้ตบุ๊ก IPython, IPython qtconsole หรือ IDLE ไม่ได้ทำงานในเครื่องเทอร์มินัลดังนั้นจึงไม่สามารถตรวจสอบความกว้างได้อย่างถูกต้อง


5
import pandas as pd
pd.set_option('display.max_columns', 100)
pd.set_option('display.width', 1000)

SentenceA = "William likes Piano and Piano likes William"
SentenceB = "Sara likes Guitar"
SentenceC = "Mamoosh likes Piano"
SentenceD = "William is a CS Student"
SentenceE = "Sara is kind"
SentenceF = "Mamoosh is kind"


bowA = SentenceA.split(" ")
bowB = SentenceB.split(" ")
bowC = SentenceC.split(" ")
bowD = SentenceD.split(" ")
bowE = SentenceE.split(" ")
bowF = SentenceF.split(" ")

# Creating a set consisted of all words

wordSet = set(bowA).union(set(bowB)).union(set(bowC)).union(set(bowD)).union(set(bowE)).union(set(bowF))
print("Set of all words is: ", wordSet)

# Initiating dictionary with 0 value for all BOWs

wordDictA = dict.fromkeys(wordSet, 0)
wordDictB = dict.fromkeys(wordSet, 0)
wordDictC = dict.fromkeys(wordSet, 0)
wordDictD = dict.fromkeys(wordSet, 0)
wordDictE = dict.fromkeys(wordSet, 0)
wordDictF = dict.fromkeys(wordSet, 0)

for word in bowA:
    wordDictA[word] += 1
for word in bowB:
    wordDictB[word] += 1
for word in bowC:
    wordDictC[word] += 1
for word in bowD:
    wordDictD[word] += 1
for word in bowE:
    wordDictE[word] += 1
for word in bowF:
    wordDictF[word] += 1

# Printing Term frequency

print("SentenceA TF: ", wordDictA)
print("SentenceB TF: ", wordDictB)
print("SentenceC TF: ", wordDictC)
print("SentenceD TF: ", wordDictD)
print("SentenceE TF: ", wordDictE)
print("SentenceF TF: ", wordDictF)

print(pd.DataFrame([wordDictA, wordDictB, wordDictB, wordDictC, wordDictD, wordDictE, wordDictF]))

เอาท์พุท:

   CS  Guitar  Mamoosh  Piano  Sara  Student  William  a  and  is  kind  likes
0   0       0        0      2     0        0        2  0    1   0     0      2
1   0       1        0      0     1        0        0  0    0   0     0      1
2   0       1        0      0     1        0        0  0    0   0     0      1
3   0       0        1      1     0        0        0  0    0   0     0      1
4   1       0        0      0     0        1        1  1    0   1     0      0
5   0       0        0      0     1        0        0  0    0   1     1      0
6   0       0        1      0     0        0        0  0    0   1     1      0

คุณเพียงแค่ต้องการสองสิ่งนี้: (ตรวจสอบตัวอย่างด้านบน) นำเข้า pandas เป็น pd pd.set_option ('display.max_columns', 100) pd.set_option ('display.width', 1,000)
William Pourmajidi

4

ฉันใช้การตั้งค่าเหล่านี้เมื่อขนาดของข้อมูลสูง

# environment settings: 
pd.set_option('display.max_column',None)
pd.set_option('display.max_rows',None)
pd.set_option('display.max_seq_items',None)
pd.set_option('display.max_colwidth', 500)
pd.set_option('expand_frame_repr', True)

คุณสามารถอ่านเอกสารได้ที่นี่


4

บรรทัดด้านล่างเพียงพอที่จะแสดงคอลัมน์ทั้งหมดจาก dataframe pd.set_option('display.max_columns', None)


1
ยินดีต้อนรับสู่ SO! เมื่อคุณโพสต์คำตอบใหม่สำหรับคำถามและมีคำตอบเพิ่มเติมลองแสดงข้อดี ยังมีอีกคำตอบหนึ่งคำตอบpd.set_option('display.max_columns', 0)ที่คุณได้รับคืออะไร?
David García Bodego

3

หากคุณไม่ต้องการยุ่งกับตัวเลือกการแสดงผลของคุณและคุณเพียงต้องการที่จะเห็นหนึ่งในคอลัมน์นี้โดยไม่ต้องขยายออกไปทุก dataframe ที่คุณดูคุณสามารถลอง:

df.columns.values


2

คุณสามารถทำตามขั้นตอนต่อไปนี้

  • คุณสามารถเปลี่ยนตัวเลือกสำหรับฟีเจอร์ pandas max_columns ดังนี้

    import pandas as pd
    pd.options.display.max_columns = 10

    (สิ่งนี้อนุญาตให้แสดง 10 คอลัมน์คุณสามารถเปลี่ยนแปลงได้ตามต้องการ)

  • เช่นเดียวกับที่คุณสามารถเปลี่ยนจำนวนแถวตามที่คุณต้องการแสดงดังต่อไปนี้ (ถ้าคุณต้องการเปลี่ยนแถวสูงสุดด้วย)

    pd.options.display.max_rows = 999

    (สิ่งนี้อนุญาตให้พิมพ์ครั้งละ 999 แถว)

โปรดอ้างอิงเอกสารเพื่อเปลี่ยนตัวเลือก / การตั้งค่าต่าง ๆ สำหรับแพนด้า

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.