教你漂亮打印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进阶教程之函数对象(函数也是对象)
Aug 30 Python
python使用socket远程连接错误处理方法
Apr 29 Python
Python 详解基本语法_函数_返回值
Jan 22 Python
Python字符串格式化%s%d%f详解
Feb 02 Python
深入理解Python 关于supper 的 用法和原理
Feb 28 Python
python机器学习之贝叶斯分类
Mar 26 Python
Python将list中的string批量转化成int/float的方法
Jun 26 Python
树莓派与PC端在局域网内运用python实现即时通讯
Jun 22 Python
使用Django xadmin 实现修改时间选择器为不可输入状态
Mar 30 Python
解决导入django_filters不成功问题No module named 'django_filter'
Jul 15 Python
详解Python中如何将数据存储为json格式的文件
Nov 18 Python
python openssl模块安装及用法
Dec 06 Python
pytorch 实现多个Dataloader同时训练
python 如何做一个识别率百分百的OCR
基于PyTorch实现一个简单的CNN图像分类器
May 29 #Python
python 爬取华为应用市场评论
python 开心网和豆瓣日记爬取的小爬虫
May 29 #Python
Python趣味挑战之实现简易版音乐播放器
新手必备Python开发环境搭建教程
You might like
Zerg建筑一览
2020/03/14 星际争霸
php去除重复字的实现代码
2011/09/16 PHP
php函数重载的替代方法--伪重载详解
2015/05/08 PHP
在Mac OS上搭建PHP的Yii框架及相关测试环境
2016/02/14 PHP
php求今天、昨天、明天时间戳的简单实现方法
2016/07/28 PHP
IOS 开发之NSDictionary转换成JSON字符串
2017/08/14 PHP
JavaScript实现简单的时钟实例代码
2013/11/23 Javascript
javascript放大镜效果的简单实现
2013/12/09 Javascript
js实现通用的微信分享组件示例
2014/03/10 Javascript
显示今天的日期js代码(阳历和农历)
2014/09/30 Javascript
JavaScript函数详解
2014/11/17 Javascript
JS实现部分HTML固定页面顶部随屏滚动效果
2015/12/24 Javascript
JS作为值的函数用法示例
2016/06/20 Javascript
Bootstrap中的Dropdown下拉菜单更改为悬停(hover)触发
2016/08/31 Javascript
详解Angularjs 如何自定义Img的ng-load 事件
2017/02/15 Javascript
Node.js读取文件内容示例
2017/03/07 Javascript
javascript实现非常简单的小数取整功能示例
2017/06/13 Javascript
vue  自定义组件实现通讯录功能
2018/09/30 Javascript
微信小程序人脸识别功能代码实例
2019/05/07 Javascript
Mpvue中使用Vant Weapp组件库的方法步骤
2019/05/16 Javascript
JS中数据结构与算法---排序算法(Sort Algorithm)实例详解
2019/06/17 Javascript
React学习之JSX与react事件实例分析
2020/01/06 Javascript
vue使用map代替Aarry数组循环遍历的方法
2020/04/30 Javascript
原生js实现日期选择插件
2020/05/21 Javascript
Vue 实现创建全局组件,并且使用Vue.use() 载入方式
2020/08/11 Javascript
Python读写Excel文件方法介绍
2014/11/22 Python
一些常用的Python爬虫技巧汇总
2016/09/28 Python
python使用sqlite3时游标使用方法
2018/03/13 Python
python tools实现视频的每一帧提取并保存
2020/03/20 Python
python通过对字典的排序,对json字段进行排序的实例
2020/02/27 Python
python批量替换文件名中的共同字符实例
2020/03/05 Python
python实现KNN近邻算法
2020/12/30 Python
HTML5中外部浏览器唤起微信分享
2020/01/02 HTML / CSS
团队激励口号
2014/06/06 职场文书
七一建党节演讲稿
2014/09/11 职场文书
学校党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书