복붙노트

[PYTHON] Pandas Series / DataFrame 전체를 멋지게 인쇄하십시오.

PYTHON

Pandas Series / DataFrame 전체를 멋지게 인쇄하십시오.

터미널과 DataFrames를 많이 사용합니다. Series의 기본 __repr__은 머리와 꼬리 값이 일부는 있지만 나머지는 누락 된 축소 된 샘플을 반환합니다.

시리즈 / DataFrame 전체를 예쁜 인쇄하는 내장 된 방법이 있습니까? 이상적으로는 적절한 정렬, 즉 열 사이의 경계와 다른 열의 색상 코딩을 지원할 수 있습니다.

해결법

  1. ==============================

    1.하나 이상의 옵션과 함께 option_context를 사용할 수도 있습니다.

    하나 이상의 옵션과 함께 option_context를 사용할 수도 있습니다.

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

    이렇게하면 옵션이 자동으로 기본값으로 돌아갑니다.

    jupyter-notebook에서 작업하는 경우 print 대신 display를 사용하면 jupyter rich display 로직을 사용하게됩니다.

  2. ==============================

    2.설정을 해킹 할 필요가 없습니다. 간단한 방법이 있습니다.

    설정을 해킹 할 필요가 없습니다. 간단한 방법이 있습니다.

    print(df.to_string())
    
  3. ==============================

    3.물론, 이것이 많이 나오면, 이것과 같은 기능을하십시오. IPython을 시작할 때마다로드되도록 구성 할 수도 있습니다. https://ipython.org/ipython-doc/1/config/overview.html

    물론, 이것이 많이 나오면, 이것과 같은 기능을하십시오. IPython을 시작할 때마다로드되도록 구성 할 수도 있습니다. https://ipython.org/ipython-doc/1/config/overview.html

    def print_full(x):
        pd.set_option('display.max_rows', len(x))
        print(x)
        pd.reset_option('display.max_rows')
    

    착색에 관해서는, 색깔로 너무 정교 해지는 것은 나에게 비생산적인 소리를 낸다. 그러나 나는 부트 스트랩의 .table-striped와 같은 것이 멋질 것이라고 동의한다. 언제든지이 기능을 제안하는 문제를 만들 수 있습니다.

  4. ==============================

    4.컨텍스트 관리자를 사용하는 대신 판다를 가져온 후에 전체 데이터 프레임을 표시하기위한 옵션을 설정하십시오.

    컨텍스트 관리자를 사용하는 대신 판다를 가져온 후에 전체 데이터 프레임을 표시하기위한 옵션을 설정하십시오.

    pd.set_option('display.max_columns', None)  # or 1000
    pd.set_option('display.max_rows', None)  # or 1000
    pd.set_option('display.max_colwidth', -1)  # or 199
    

    유용한 옵션의 전체 목록은 다음을 참조하십시오.

    pd.describe_option('display')
    
  5. ==============================

    5.도표 패키지 사용 :

    도표 패키지 사용 :

    pip install tabulate
    

    그리고 다음 예제 사용법을 고려하십시오.

    import pandas as pd
    from io import StringIO
    from tabulate import tabulate
    
    c = """Chromosome Start End
    chr1 3 6
    chr1 5 7
    chr1 8 9"""
    
    df = pd.read_table(StringIO(c), sep="\s+", header=0)
    
    print(tabulate(df, headers='keys', tablefmt='psql'))
    
    +----+--------------+---------+-------+
    |    | Chromosome   |   Start |   End |
    |----+--------------+---------+-------|
    |  0 | chr1         |       3 |     6 |
    |  1 | chr1         |       5 |     7 |
    |  2 | chr1         |       8 |     9 |
    +----+--------------+---------+-------+
    
  6. ==============================

    6.Ipython Notebook (Jupyter)을 사용하는 경우. HTML을 사용할 수 있습니다.

    Ipython Notebook (Jupyter)을 사용하는 경우. HTML을 사용할 수 있습니다.

    from IPython.core.display import HTML
    display(HTML(df.to_html()))
    
  7. ==============================

    7.이 시도

    이 시도

    pd.set_option('display.height',1000)
    pd.set_option('display.max_rows',500)
    pd.set_option('display.max_columns',500)
    pd.set_option('display.width',1000)
    
  8. ==============================

    8.당신은 아래의 방법을 사용하여이를 달성 할 수 있습니다. 그냥 총 번호를 전달하십시오. DataFrame에있는 열을 arg로 대입

    당신은 아래의 방법을 사용하여이를 달성 할 수 있습니다. 그냥 총 번호를 전달하십시오. DataFrame에있는 열을 arg로 대입

    예 :

    df= DataFrame(..)
    with pd.option_context('display.max_rows', None, 'display.max_columns', df.shape[1]):
        print(df)
    
  9. ==============================

    9.이 대답은 lucidyan의 이전 답변의 변형입니다. 그것은 set_option의 사용을 피함으로써 코드를보다 읽기 쉽게 만든다.

    이 대답은 lucidyan의 이전 답변의 변형입니다. 그것은 set_option의 사용을 피함으로써 코드를보다 읽기 쉽게 만든다.

    컨텍스트 관리자를 사용하는 대신 팬더를 가져온 후에 대형 데이터 프레임을 표시 할 수있는 옵션을 설정하십시오.

    def set_pandas_options() -> None:
        pd.options.display.max_columns = 1000
        pd.options.display.max_rows = 1000
        pd.options.display.max_colwidth = 199
        pd.options.display.width = None
        # pd.options.display.precision = 2  # set as needed
    
    set_pandas_options()
    

    그 후에는 노트북을 사용하는 경우 display (df) 또는 df 만 사용할 수 있습니다. 그렇지 않으면 print (df)를 사용할 수 있습니다.

  10. from https://stackoverflow.com/questions/19124601/pretty-print-an-entire-pandas-series-dataframe by cc-by-sa and MIT license