Dun*_*eal 531 python dataframe pandas
我在终端上使用Series和DataFrames很多.__repr__
Series 的默认值返回一个简化的样本,带有一些head和tail值,但其余的则丢失.
是否有内置的方式来打印整个Series/DataFrame?理想情况下,它将支持正确的对齐,可能支持列之间的边界,甚至可能支持不同列的颜色编码.
tsv*_*kas 712
您还可以使用option_context
带有一个或多个选项的:
with pd.option_context('display.max_rows', None, 'display.max_columns', None): # more options can be specified also
print(df)
Run Code Online (Sandbox Code Playgroud)
这将自动将选项返回到其默认值.
如果您在jupyter笔记本工作时,使用display(df)
的不是print(df)
将使用jupyter丰富的显示逻辑.
And*_*hin 506
无需破解设置.有一个简单的方法:
print(df.to_string())
Run Code Online (Sandbox Code Playgroud)
Dan*_*lan 161
当然,如果出现这种情况,请制作一个类似这样的功能.您甚至可以将其配置为每次启动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')
Run Code Online (Sandbox Code Playgroud)
至于着色,过于精细的颜色听起来适得其反,但我同意像bootstrap这样的.table-striped
东西会很好.您始终可以创建一个问题来建议此功能.
luc*_*yan 86
导入pandas后,作为使用上下文管理器的替代方法,设置显示整个数据帧的选项:
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
Run Code Online (Sandbox Code Playgroud)
有关有用选项的完整列表,请参阅:
pd.describe_option('display')
Run Code Online (Sandbox Code Playgroud)
The*_*Cat 38
使用制表包:
pip install tabulate
Run Code Online (Sandbox Code Playgroud)
并考虑以下示例用法:
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 |
+----+--------------+---------+-------+
Run Code Online (Sandbox Code Playgroud)
小智 15
如果您使用的是Ipython Notebook(Jupyter).您可以使用HTML
from IPython.core.display import HTML
display(HTML(df.to_html()))
Run Code Online (Sandbox Code Playgroud)
小智 15
运行这个
pd.set_option("display.max_rows", None, "display.max_columns", None)
print(df)
Run Code Online (Sandbox Code Playgroud)
就这样做
输出
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
Run Code Online (Sandbox Code Playgroud)
Acu*_*nus 13
此答案是lucidyan先前的答案的变形。通过避免使用,可以使代码更具可读性set_option
。
导入熊猫后,作为使用上下文管理器的替代方法,请设置以下选项以显示大型数据框:
def set_pandas_display_options() -> None:
display = pd.options.display
display.max_columns = 1000
display.max_rows = 1000
display.max_colwidth = 199
display.width = None
# display.precision = 2 # set as needed
set_pandas_display_options()
Run Code Online (Sandbox Code Playgroud)
之后,您可以使用display(df)
或仅df
在使用笔记本时使用,否则print(df)
。
D-W*_*D-W 11
没有人提出这个简单的纯文本解决方案:
from pprint import pprint
pprint(s.to_dict())
Run Code Online (Sandbox Code Playgroud)
产生如下结果:
{'% Diabetes': 0.06365372374283895,
'% Obesity': 0.06365372374283895,
'% Bachelors': 0.0,
'% Poverty': 0.09548058561425843,
'% Driving Deaths': 1.1775938892425206,
'% Excessive Drinking': 0.06365372374283895}
Run Code Online (Sandbox Code Playgroud)
此外,当使用 Jupyter 笔记本时,这是一个很好的解决方案。
注意:pd.Series()
没有.to_html()
所以必须转换为pd.DataFrame()
from IPython.display import display, HTML
display(HTML(s.to_frame().to_html()))
Run Code Online (Sandbox Code Playgroud)
产生如下结果:
试试这个
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)
Run Code Online (Sandbox Code Playgroud)
datascroller 的创建部分是为了解决这个问题。
pip install datascroller
Run Code Online (Sandbox Code Playgroud)
它将数据帧加载到终端视图中,您可以使用鼠标或箭头键“滚动”,有点像终端上的 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)
Run Code Online (Sandbox Code Playgroud)
披露:我是 datascroller 的作者之一
您可以设置expand_frame_repr
为False
:
\n\n\n
display.expand_frame_repr : boolean
是否跨多行打印宽 DataFrame 的完整 DataFrame 表示
\nmax_columns
仍然受到尊重,但如果输出宽度超过,输出将环绕多个 \xe2\x80\x9cpages\xe2\x80\x9ddisplay.width
。\n
[default: True]
pd.set_option(\'expand_frame_repr\', False)\n
Run Code Online (Sandbox Code Playgroud)\n有关更多详细信息,请阅读如何漂亮打印 Pandas 数据帧和系列
\n