教你漂亮打印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中使用HTML模版的教程
Apr 29 Python
Python的Django框架可适配的各种数据库介绍
Jul 15 Python
5种Python单例模式的实现方式
Jan 14 Python
利用Anaconda完美解决Python 2与python 3的共存问题
May 25 Python
Python设计模式之代理模式简单示例
Jan 09 Python
Python实现将数据写入netCDF4中的方法示例
Aug 30 Python
详细整理python 字符串(str)与列表(list)以及数组(array)之间的转换方法
Aug 30 Python
tensorflow模型的save与restore,及checkpoint中读取变量方式
May 26 Python
Pythonic版二分查找实现过程原理解析
Aug 11 Python
ffmpeg+Python实现B站MP4格式音频与视频的合并示例代码
Oct 21 Python
如何用 Python 处理不平衡数据集
Jan 04 Python
Biblibili视频投稿接口分析并以Python实现自动投稿功能
Feb 05 Python
pytorch 实现多个Dataloader同时训练
python 如何做一个识别率百分百的OCR
基于PyTorch实现一个简单的CNN图像分类器
May 29 #Python
python 爬取华为应用市场评论
python 开心网和豆瓣日记爬取的小爬虫
May 29 #Python
Python趣味挑战之实现简易版音乐播放器
新手必备Python开发环境搭建教程
You might like
使用PHP静态变量当缓存的方法
2013/11/13 PHP
php cookie中点号(句号)自动转为下划线问题
2014/10/21 PHP
PHP关于foreach复制知识点总结
2019/01/28 PHP
用jscript实现新建word文档
2007/06/15 Javascript
超级退弹代码
2008/07/07 Javascript
JQuery文字列表向上滚动的代码
2013/11/13 Javascript
JavaScript中的连字符详解
2013/11/28 Javascript
JS小功能(checkbox实现全选和全取消)实例代码
2013/11/28 Javascript
原生js和jQuery随意改变div属性style的名称和值
2014/10/22 Javascript
JavaScript事件委托用法分析
2015/01/24 Javascript
javascript感应鼠标图片透明度显示的方法
2015/02/24 Javascript
简述jQuery ajax的执行顺序
2016/01/05 Javascript
jQuery validate+artdialog+jquery form实现弹出表单思路详解
2016/04/18 Javascript
JavaScript对象数组如何按指定属性和排序方向进行排序
2016/06/15 Javascript
利用Vue.js指令实现全选功能
2016/09/08 Javascript
jQuery Ajax请求后台数据并在前台接收
2016/12/10 Javascript
Vue.js学习记录之在元素与template中使用v-if指令实例
2017/06/27 Javascript
详解vue渲染从后台获取的json数据
2017/07/06 Javascript
vue组件实现进度条效果
2018/06/06 Javascript
简介Django中内置的一些中间件
2015/07/24 Python
Python 文件管理实例详解
2015/11/10 Python
Django 自动生成api接口文档教程
2019/11/19 Python
PyCharm 2020.2 安装详细教程
2020/09/25 Python
如何以Winsows Service方式运行JupyterLab
2020/08/30 Python
学会迭代器设计模式,帮你大幅提升python性能
2021/01/03 Python
CSS3动画之流彩文字效果+图片模糊效果+边框伸展效果实现代码合集
2017/08/18 HTML / CSS
COACH德国官方网站:纽约现代奢侈品牌,1941年
2018/06/09 全球购物
迪卡侬(Decathlon)加拿大官网:源自法国的运动专业超市
2020/11/22 全球购物
施华洛世奇新加坡官网:SWAROVSKI新加坡
2020/10/06 全球购物
高中毕业生自我鉴定例文
2013/12/29 职场文书
高三语文教学反思
2014/01/15 职场文书
父亲八十大寿答谢词
2014/01/23 职场文书
水利专业大学生职业生涯规划书范文
2014/09/17 职场文书
教师批评与自我批评心得体会
2014/10/16 职场文书
2019年思想汇报
2019/06/20 职场文书
MySQL 数据表操作
2022/05/04 MySQL