programing

Panda 시리즈 전체를 예쁘게 인쇄 / Data Frame

bestcode 2023. 1. 15. 17:05
반응형

Panda 시리즈 전체를 예쁘게 인쇄 / Data Frame

터미널에서 Series 및 Data Frames를 많이 사용하고 있습니다.디폴트__repr__시리즈일 경우 일부 머리 및 꼬리 값이 있는 축소 샘플을 반환하지만 나머지는 누락됩니다.

시리즈/데이터 프레임 전체를 예쁘게 인쇄할 수 있는 기본 제공 방법이 있습니까?이상적으로는 적절한 정렬, 열 사이의 경계 및 여러 열에 대한 색상 코딩을 지원합니다.

는, 1 개 이상의 옵션과 함께 사용할 수도 있습니다.

with pd.option_context('display.max_rows', None, 'display.max_columns', None):  # more options can be specified also
    print(df)

그러면 옵션이 자동으로 이전 값으로 돌아갑니다.

주피터 노트북을 작업하는 경우display(df)대신print(df)는 주피터 리치 디스플레이 로직을 사용합니다(그렇게).

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

print(df.to_string())

네, 이런 게 많이 나오면 이런 기능을 만들어 보세요.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')

색칠에 관해서는 색칠을 너무 치밀하게 하는 것은 역효과를 낼 수 있지만, 부트스트랩 같은 것이 좋다고 생각합니다.언제든지 이 기능을 제안하는 문제를 만들 수 있습니다.

팬더를 가져온 후 컨텍스트 관리자를 사용하는 대신 전체 데이터 프레임을 표시하는 옵션을 설정합니다.

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

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

pd.describe_option('display')

표 형식의 패키지를 사용합니다.

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 |
+----+--------------+---------+-------+

사용.pd.options.display

이 답변은 루시디안의 이전 답변의 변형이다.이 기능을 사용하면, 코드의 판독성이 향상됩니다.set_option.

팬더를 가져온 후 컨텍스트 관리자를 사용하는 대신 대용량 데이터 프레임을 표시하는 다음과 같은 옵션을 설정합니다.

def set_pandas_display_options() -> None:
    """Set pandas display options."""
    # Ref: https://stackoverflow.com/a/52432757/
    display = pd.options.display

    display.max_columns = 1000
    display.max_rows = 1000
    display.max_colwidth = 199
    display.width = 1000
    # display.precision = 2  # set as needed

set_pandas_display_options()

그 후 다음 중 하나를 사용할 수 있습니다.display(df)아니면 그냥df노트북을 사용하는 경우, 그렇지 않은 경우print(df).

사용.to_string

팬더 0.25.3에는 포맷 옵션을 허용하는 방법이 있습니다.

사용.to_markdown

마크다운 출력이 필요한 경우 Panda 1.0.0에는 및 메서드가 있습니다.

사용.to_html

HTML 출력이 필요한 경우, Panda 0.25.3은 메서드는 있지만, Panda 0.25.3에는 없습니다.Series.to_html주의:Series변환할 수 있다DataFrame.

Ipython 노트북(Jupyter)을 사용하는 경우.HTML 사용 가능

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

이거 드셔보세요

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)

스크립트

이 간단한 일반 텍스트 솔루션을 제안하는 사람은 없습니다.

from pprint import pprint

pprint(s.to_dict())

다음과 같은 결과가 나타납니다.

{'% Diabetes': 0.06365372374283895,
 '% Obesity': 0.06365372374283895,
 '% Bachelors': 0.0,
 '% Poverty': 0.09548058561425843,
 '% Driving Deaths': 1.1775938892425206,
 '% Excessive Drinking': 0.06365372374283895}

주피터 노트북

또한, Jupyter 노트북을 사용할 때 이는 훌륭한 솔루션입니다.

★★★★★★pd.Series().to_html()따라서 변환되어야 합니다.pd.DataFrame()

from IPython.display import display, HTML

display(HTML(s.to_frame().to_html()))

다음과 같은 결과가 나타납니다.

pd를 표시합니다.

datascroller는 이 문제를 해결하기 위해 부분적으로 작성되었습니다.

pip install datascroller

쿼리, 강조 표시 등을 지원하는 단말기의 Excel 워크북과 같은 마우스 또는 화살표 키로 데이터 프레임을 "스크롤"할 수 있는 터미널 뷰에 로드합니다.

import pandas as pd
from datascroller import scroll

# Call `scroll` with a Pandas DataFrame as the sole argument:
my_df = pd.read_csv('<path to your csv>')
scroll(my_df)

공개:나는 데이터크롤러의 저자 중 한 명이다.

다음과 같이 설정할 수 있습니다.False:

display.expand_frame_repr : boolean

DataFrame repr .max_columns존중되고 만, 그 이 「페이지」, 「페이지」, 「페이지」, 「페이지」를 은 복수의 「에 걸쳐 됩니다.display.width.

[default: True]


pd.set_option('expand_frame_repr', False)

자세한 내용은 How to Pretty-Print Panda DataFrames 및 Series를 참조하십시오.

다음 방법을 사용하여 이 작업을 수행할 수 있습니다.데이터 프레임에 있는 열의 총 수를 arg로 전달합니다.

'display.max_display'

예:

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

이 링크는 ypu에 도움이 됩니다.

pd.set_option("display.max_rows", None, "display.max_columns", None)


print(df)

그냥 이렇게 해

산출량

Column
0    row 0
1    row 1
2    row 2
3    row 3
4    row 4
5    row 5
6    row 6
7    row 7
8    row 8
9    row 9
10  row 10
11  row 11
12  row 12
13  row 13
14  row 14
15  row 15
16  row 16
17  row 17
18  row 18
19  row 19
20  row 20
21  row 21
22  row 22
23  row 23
24  row 24
25  row 25
26  row 26
27  row 27
28  row 28
29  row 29
30  row 30
31  row 31
32  row 32
33  row 33
34  row 34
35  row 35
36  row 36
37  row 37
38  row 38
39  row 39
40  row 40
41  row 41
42  row 42
43  row 43
44  row 44
45  row 45
46  row 46
47  row 47
48  row 48
49  row 49
50  row 50
51  row 51
52  row 52
53  row 53
54  row 54
55  row 55
56  row 56
57  row 57
58  row 58
59  row 59
60  row 60
61  row 61
62  row 62
63  row 63
64  row 64
65  row 65
66  row 66
67  row 67
68  row 68
69  row 69

display() 함수를 사용해 보십시오.이렇게 하면 자동으로 수평 및 수직 스크롤 막대가 사용되며, 이를 통해 print()를 사용하는 대신 다양한 데이터 세트를 쉽게 표시할 수 있습니다.

display(dataframe)

display()는 적절한 정렬도 지원합니다.

을 더 이을 선택하면 됩니다.pd.option_context()데이터 프레임을 명확하게 표시할 수 있는 옵션이 많이 있습니다.

메모 - Jupyter 노트북을 사용하고 있습니다.

언급URL : https://stackoverflow.com/questions/19124601/pretty-print-an-entire-pandas-series-dataframe

반응형