教你漂亮打印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 相关文章推荐
使用C语言来扩展Python程序和Zope服务器的教程
Apr 14 Python
web.py在SAE中的Session问题解决方法(使用mysql存储)
Jun 24 Python
Python的Flask框架应用程序实现使用QQ账号登录的方法
Jun 07 Python
python去掉行尾的换行符方法
Jan 04 Python
Python import与from import使用及区别介绍
Sep 06 Python
centos6.5安装python3.7.1之后无法使用pip的解决方案
Feb 14 Python
详解python中init方法和随机数方法
Mar 13 Python
python实现飞行棋游戏
Feb 05 Python
Python中实现输入一个整数的案例
May 03 Python
keras 如何保存最佳的训练模型
May 25 Python
python爬虫基础之urllib的使用
Dec 31 Python
Python办公自动化之教你用Python批量识别发票并录入到Excel表格中
Jun 26 Python
pytorch 实现多个Dataloader同时训练
python 如何做一个识别率百分百的OCR
基于PyTorch实现一个简单的CNN图像分类器
May 29 #Python
python 爬取华为应用市场评论
python 开心网和豆瓣日记爬取的小爬虫
May 29 #Python
Python趣味挑战之实现简易版音乐播放器
新手必备Python开发环境搭建教程
You might like
php ci框架验证码实例分析
2013/06/26 PHP
ecshop适应在PHP7的修改方法解决报错的实现
2016/11/01 PHP
php中文乱码问题的终极解决方案汇总
2017/08/01 PHP
javascript RadioButtonList获取选中值
2009/04/09 Javascript
node.js适合游戏后台开发吗?
2014/09/03 Javascript
举例简介AngularJS的内部语言环境
2015/06/17 Javascript
jquery实现可自动判断位置的弹出层效果代码
2015/10/12 Javascript
javascript类型系统——日期Date对象全面了解
2016/07/13 Javascript
jQuery基于Ajax方式提交表单功能示例
2017/02/10 Javascript
vue-loader教程介绍
2017/06/14 Javascript
引入JavaScript时alert弹出框显示中文乱码问题
2017/09/16 Javascript
微信小程序基于本地缓存实现点赞功能的方法
2017/12/18 Javascript
vue2中使用sass并配置全局的sass样式变量的方法
2018/09/04 Javascript
vue-cli 使用axios的操作方法及整合axios的多种方法
2018/09/12 Javascript
Vue.js 图标选择组件实践详解
2018/12/03 Javascript
echarts 使用formatter 修改鼠标悬浮事件信息操作
2020/07/20 Javascript
[48:54]VGJ.T vs infamous Supermajor小组赛D组败者组第一轮 BO3 第二场 6.3
2018/06/04 DOTA
Python中用Decorator来简化元编程的教程
2015/04/13 Python
在Python的列表中利用remove()方法删除元素的教程
2015/05/21 Python
Python的条件语句与运算符优先级详解
2015/10/13 Python
Python中MySQLdb和torndb模块对MySQL的断连问题处理
2015/11/09 Python
Python序列操作之进阶篇
2016/12/08 Python
解决matplotlib库show()方法不显示图片的问题
2018/05/24 Python
python使用turtle库与random库绘制雪花
2018/06/22 Python
Python3.5实现的三级菜单功能示例
2019/03/25 Python
python实现根据给定坐标点生成多边形mask的例子
2020/02/18 Python
Python 发送邮件方法总结
2020/08/10 Python
摩托车和ATV零件、配件和服装的首选在线零售商:MotoSport
2017/12/22 全球购物
求两个数的乘积和商数,该作用由宏定义来实现
2013/03/13 面试题
触发器(trigger)的功能都有哪些?写出一个触发器的例子
2012/09/17 面试题
如何定义一个可复用的服务
2014/09/30 面试题
触电现场处置方案
2014/05/14 职场文书
会计师事务所实习证明
2014/11/16 职场文书
2014年小学辅导员工作总结
2014/12/23 职场文书
党员读书活动心得体会
2016/01/14 职场文书
导游词之金鞭溪风景区
2019/09/12 职场文书