教你漂亮打印Pandas DataFrames和Series


Posted in Python onMay 29, 2021

一、前言

当我们必须处理可能有多个列和行的大型DataFrames时,能够以可读格式显示数据是很重要的。这在调试代码时非常有用。

默认情况下,当打印出DataFrame且具有相当多的列时,仅列的子集显示到标准输出。 显示的列甚至可以多行打印出来。

二、问题

假设我们有以下DataFrame:

import pandas as pd 
import numpy as np


df = pd.DataFrame(
  np.random.randint(0, 100, size=(100, 25)), 
  columns=[f'column{i}' for i in range(0, 25)]
)

print(df)

现在,如果列数超过显示选项display.max_rows的值,则输出DataFrame可能不完整,如下所示。 仅显示一部分列(缺少第4列和第5列),而其余列以多行方式打印。

教你漂亮打印Pandas DataFrames和Series

尽管输出仍可读取,但绝对不建议保留列或将其打印在多行中。

三、如何漂亮打印Pandas的DataFrames

如果您的显示器足够宽并且能够容纳更多列,则可能需要调整一些显示选项。 我将在下面使用的值可能不适用于您的设置,因此请确保对其进行相应的调整。 就个人而言,我使用超宽显示器,可以在必要时打印出相当多的列。

如何在同一行打印所有列

现在,为了显示所有的列(如果你的显示器能够适合他们),并在短短一行所有你需要做的是设置显示选项expand_frame_repr为False:

pd.set_option('expand_frame_repr', False)

教你漂亮打印Pandas DataFrames和Series

display.expand_frame_repr 默认值:True

是否跨多行打印宽数据的完整DataFrame ,可以考虑使用max_columns,但是如果宽度超过display.width,则输出将在多个“页面”中回绕。

另外,您可以更改display.max_rows的值,而不是将expand_frame_repr设置为False:

pd.set_option(‘display.max_rows', False)

如果列仍打印在多页中,那么您可能还必须调整display.width。

四、如何打印所有行

现在,如果您的DataFrame包含的行数超过一定数目,那么将仅显示一些记录(来自df的头部和尾部):

import pandas as pd 
import numpy as np


df = pd.DataFrame(
  np.random.randint(0, 5, size=(100, 4)), 
  columns=[f'column{i}' for i in range(0, 4)]
)

print(df)

# column0  column1  column2  column3
# 0         4        0        0        0
# 1         2        2        4        2
# 2         2        4        0        2
# 3         0        0        0        4
# 4         3        4        3        3
# ..      ...      ...      ...      ...
# 95        3        1        1        2
# 96        1        4        0        0
# 97        0        3        2        1
# 98        3        3        4        2
# 99        0        3        0        3
# [100 rows x 4 columns]

如果要显示更大范围(甚至全部)的行,则需要将display.max_rows设置为要输出的行数。 如果要显示所有行,请将其设置为“None”:

pd.set_option('display.max_rows', None)

五、使用上下文管理器

更好的方法是使用option_context(),它是一个上下文管理器,可用于在with语句上下文中临时设置特定选项。

import pandas as pd 
import numpy as np

df = pd.DataFrame(
  np.random.randint(0, 100, size=(100, 25)), 
  columns=[f'column{i}' for i in range(0, 25)]
)

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

六、其他有用的显示选项

您可以调整更多显示选项,并更改Pandas DataFrames的显示方式。

display.max_colwidth:这是显示列名的最大字符数。 如果某个列名溢出,则将添加一个占位符(…)。

pd.set_option('display.max_colwidth', None)

display.precision:这是将用于浮点数的精度。 它指定小数点后的位数。

display.width:这是显示字符的总数。 如果要显示更多列,则可能有时还必须调整display.width。

您可以使用describe_option()找到完整的显示列表:

pd.describe_option(‘display') .

给Jupyter用户的注意事项

如果您正在使用Jupyter Notebooks,而不是print(df),只需使用display(df)即可相应地调整宽度。

七、总结

在今天的文章中,我们讨论了Pandas的一些显示选项,使您可以根据要显示的内容以及可能使用的显示器,漂亮地打印DataFrame。

熊猫带有一个设置系统,使用户可以调整和自定义显示功能。 我们仅涵盖了可用显示选项的一小部分。

到此这篇关于教你漂亮打印Pandas DataFrames和Series的文章就介绍到这了,更多相关打印Pandas DataFrames和Series内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python中实现php的var_dump函数功能
Jan 21 Python
python算法表示概念扫盲教程
Apr 13 Python
利用Django内置的认证视图实现用户密码重置功能详解
Nov 24 Python
python3模块smtplib实现发送邮件功能
May 22 Python
Python魔法方法功能与用法简介
Apr 04 Python
用python生成(动态彩色)二维码的方法(使用myqr库实现)
Jun 24 Python
处理python中多线程与多进程中的数据共享问题
Jul 28 Python
python3 图片 4通道转成3通道 1通道转成3通道 图片压缩实例
Dec 03 Python
python操作gitlab API过程解析
Dec 27 Python
python3.x中安装web.py步骤方法
Jun 23 Python
python+selenium自动化实战携带cookies模拟登陆微博
Jan 19 Python
详解在OpenCV中如何使用图像像素
Mar 03 Python
pytorch 实现多个Dataloader同时训练
python 如何做一个识别率百分百的OCR
基于PyTorch实现一个简单的CNN图像分类器
May 29 #Python
python 爬取华为应用市场评论
python 开心网和豆瓣日记爬取的小爬虫
May 29 #Python
Python趣味挑战之实现简易版音乐播放器
新手必备Python开发环境搭建教程
You might like
PHP DataGrid 实现代码
2009/08/12 PHP
PHP 5.3新增魔术方法__invoke概述
2014/07/23 PHP
PHP实现将浏览历史页面网址保存到cookie的方法
2015/01/26 PHP
PHP面向对象之后期静态绑定功能介绍
2015/05/18 PHP
PHP session 会话处理函数
2016/06/06 PHP
PHP数组相加操作及与array_merge的区别浅析
2016/11/26 PHP
Yii CFileCache 获取不到值的原因分析
2017/02/08 PHP
php四种定界符详解
2017/02/16 PHP
php 开发中加密的几种方法总结
2017/03/22 PHP
Thinkphp5.0 框架使用模型Model添加、更新、删除数据操作详解
2019/10/11 PHP
Laravel 框架返回状态拦截代码
2019/10/18 PHP
jquery mobile页面跳转后样式丢失js失效的解决方法
2014/09/06 Javascript
JavaScript分页功能的实现方法
2015/04/25 Javascript
JavaScript获取并更改input标签name属性的方法
2015/07/02 Javascript
浅谈JavaScript异步编程
2017/01/20 Javascript
js实现文字无缝向上滚动
2017/02/16 Javascript
JQuery validate 验证一个单独的表单元素实例
2017/02/17 Javascript
mac上node.js环境的安装测试
2017/07/03 Javascript
详解 vue better-scroll滚动插件排坑
2018/02/08 Javascript
vue中的.$mount('#app')手动挂载操作
2020/09/02 Javascript
[02:01]大师之路——DOTA2完美大师赛11月论剑上海
2017/11/06 DOTA
简单介绍Python的轻便web框架Bottle
2015/04/08 Python
分享一下Python数据分析常用的8款工具
2018/04/29 Python
djano一对一、多对多、分页实例代码
2019/08/16 Python
python GUI库图形界面开发之PyQt5复选框控件QCheckBox详细使用方法与实例
2020/02/28 Python
Python IDE环境之 新版Pycharm安装详细教程
2020/03/05 Python
Python semaphore evevt生产者消费者模型原理解析
2020/03/18 Python
Python全局变量与global关键字常见错误解决方案
2020/10/05 Python
分享29个基于Bootstrap的HTML5响应式网页设计模板
2015/11/19 HTML / CSS
关于Assembly命名空间的三个面试题
2015/07/23 面试题
民主评议党员自我评议范文2014
2014/09/26 职场文书
高中班长竞选稿
2015/11/20 职场文书
2016年“六一儿童节”校园广播稿
2015/12/17 职场文书
Redis 哨兵集群的实现
2021/06/18 Redis
Pandas 数据编码的十种方法
2022/04/20 Python
JavaScript中reduce()的用法
2022/05/11 Javascript