Python小工具:把jupyter notebook数据直接输出到excel
itomcoil 2025-01-01 20:52 13 浏览
前言
许多用 Python 做数据工作的小伙伴很喜欢 jupyter notebook 环境,因为它可以分块执行:
- 可以一块块代码执行并输出结果
后来,vscode 上也支持这种环境:
而我经常在双屏下工作,非常希望可以在一个屏幕输入代码,另一个屏幕查看数据,特别是表数据。可惜的是以上两种工具都没法支持双屏。
究其原因是输入代码和展示结果都在同一个软件中完成。如果有关注 xlwings 库的朋友应该知道,在 xlwings 的新版本里面提供了一个函数,可以轻松把 pandas 的 dataframe 输出到 excel 上:
如果今天只是介绍怎么使用这个函数,那显然不是我的风格。
我觉得要在代码上使用 view 显得太麻烦,可不可以 连 view 函数都不用写,就像平时输出结果 ,就可以做到一样的效果:
- 更重要的是,现在我可以在双屏下愉快地工作了
接下来我就会把这个效果的制作过程详细讲解,涉及的知识点:
- 如何定制在 jupyter notebook 上的输出
- 修改别人定义的类的函数
- 使用 xlwings 操作 excel
本节内容需要你安装 xlwings 和 pandas:
pip install xlwings pandas
- xlwings 的版本不是很重要,因为我们不会直接使用它的 view 函数
如果希望深入学习 pandas ,可以关注我的专栏
输出接口的函数
首先,我们需要了解 jupyter notebook 是怎么知道一个对象该显示什么。平常我们输出数值、文本、列表、字典这些 Python 内置对象很好理解。
但是如果是我们自定义类型,jupyter notebook 的显示逻辑是什么?
- 显然它会优先调用 _repr_html_
如果没有定义 _repr_html_ ,则会调用 __repr__ :
这里顺带做一些扩展知识。
jupyter notebook 环境是基于网页技术,所以 显示的内容本质上可以是有效的 html 。
比如,数据放到一个红色框里面:
不仅如此,还可以放入一个链接:
- 点击链接,会使用浏览器访问
可以加入各种网页的动画效果:
"这些有什么用呀?"
这就取决于你的想象力了。
跑题了,这些只是一点点课外知识。
接管 DataFrame 的 函数
现在我们知道当一个 dataframe 数据显示出来之前,会调用它的 _repr_html_ 。那么很简单,我们直接定义一个函数,直接赋给 pd.DataFrame 类型的同名函数:
- 为了通用,我们把这个步骤写在一个单独的代码文件
函数 _cus_repr_html_ 里面的代码怎么写?
我们可以参考 xlwings 的 view 函数的代码,稍微修改一下:
- 代码大概10来行,但是我只是修改了一点点(红框处),其他都是从新版的 xlwings 的 view 函数抄过来
之所以要修改,是因为目前最新版本的 xlwings 的 view 函数不够灵活(不能设置输出位置等细节)
最后,在 _cus_repr_html_ 使用 我们自己魔改过的 _view 函数即可:
- 行8:为什么这里要用 nonlocal 关键字?因为 book_name 变量不是全局变量,而是定义在函数 output2excel 中的局部变量,并且我们需要在另一个函数 cus repr html 中修改这个变量的值
nonlocal 使得变量成为自由变量,以后有机会再深入讲解这些细节
这样子我们就准备好一切,使用很简单:
- 导入,运行一次函数 output2excel 即可
私信我:"python制作小工具" 获得相关源码
记得点赞、转发、收藏,一键三连~~~
相关推荐
- PS小技巧 调整命令,让人物肤色变得更加白皙 #后期修图
-
我们来看一下如何去将人物的皮肤变得更加的白皙。·首先选中图层,Ctrl键加J键复制一层。·打开这里的属性面板,选择快速操作删除背景,这样就会将人物进行单独的抠取。·接下来在上方去添加一个黑白调整图层,...
- 把人物肤色提亮的方法和技巧
-
PS后期调白肤色提亮照片的方法。一白遮百丑,所以对于Photoshop后期来说把人物肤色调白是一项非常重要的任务。就拿这张素材图片来说,这张素材图片人脸的肤色主要偏红、偏黄,也不够白皙,该怎样对它进行...
- 《Photoshop教程》把美女图片调成清爽色彩及润肤技巧
-
关注PS精品教程,每天不断更新~~室内人物图片一般会偏暗,人物脸部、肤色及背景会出现一些杂点。处理之前需要认真的给人物磨皮及美白,然后再整体润色。最终效果原图一、用修补工具及图章工具简单去除大一点的黑...
- PS后期对皮肤进行美白的技巧
-
PS后期进行皮肤美白的技巧。PS后期对皮肤进行美白的技巧:·打开素材图片之后直接复制原图。·接下来直接点击上方的图像,选择应用图像命令。·在通道这里直接选择红通道,混合这里直接选择柔光,然后点击确定。...
- 493 [PS调色]调模特通透肤色
-
效果对比:效果图吧:1、光位图:2、拍摄参数:·快门:160;光圈:8;ISO:1003、步骤分解图:用曲线调整图层调出基本色调。用可选颜色调整图层调整红色、黄色、白色和灰色4种颜色的混合比例。用色彩...
- 先选肤色再涂面部,卡戴珊的摄影师透露:为明星拍完照后怎么修图
-
据英国媒体12月17日报道,真人秀明星金·卡戴珊终于承认,她把女儿小北P进了家族的圣诞贺卡,怪不得粉丝们都表示这张贺卡照得非常失败。上周,这位39岁的女星遭到了一些粉丝针对这张照片的批评,她于当地时间...
- 如何在PS中运用曲线复制另一张照片的色调
-
怎样把另一张作品的外观感觉,套用到自己的照片上?单靠肉眼来猜,可能很不容易,而来自BenSecret的教学,关键是在PS使用了两个工具,让你可以准确比较两张照片的曝光、色调与饱和度,方便你调整及复制...
- PS在LAB模式下调出水嫩肤色的美女
-
本PS教程主要使用Photoshop使用LAB模式调出水嫩肤色的美女,教程调色比较独特。作者比较注重图片高光部分的颜色,增加质感及肤色调红润等都是在高光区域完成。尤其在Lab模式下,用高光选区调色后图...
- 在Photoshop图像后期处理中如何将人物皮肤处理得白皙通透
-
我们在人像后期处理中,需要将人物皮肤处理的白皙通透,处理方法很多,大多数都喜欢使用曲线、磨皮等进行调整,可以达到亮但是不透,最终效果往往不是很好,今天就教大家一种如何将任务皮肤处理得白皙通透,希望能帮...
- PS调色自学教程:宝宝照片快速调通透,简单实用!
-
PS调色自学教程:宝宝照片快速调通透。·首先复制图层,然后选择进入ACR滤镜,选择曲线锁定照片的亮部,也就高光位置,其他部位补亮一点,尤其是阴影的部位补亮多一些,让画面的层次均匀一点。·然后回到基本项...
- 【干货】如何利用PS进行人物美化
-
人物图像美化在Photoshop中非常常用,Photoshop作为一款功能强大的图像处理软件,不仅可以对人像进行基本的调色、美化和修复等处理,还可以改变人物的线条和幅度,如调整脸部器官和脸型的大小、调...
- 教大家一种可以快速把肤色处理均匀的方法@抖音短视频
-
快速把肤色处理均匀的方法。今天教大家一种可以快速把肤色处理均匀的方法。像这张照片整体肤色走紫红色,但是局部偏黄缘处理起来非常的麻烦。其实我们只需要新建空白图层,图层混合模式更改为颜色,再选择画笔工具把...
- PS调色教程 利用RAW调出干净通透的肤色
-
要么不发,要么干货。后期教程来噜~用RAW调出干净通透的肤色。这次终于不会原片比PS后好看了吧。如果你依然这么觉得,请不要残忍的告诉我这个事实,泪谢TAT)附送拍摄花絮,感谢各位的支持更多风格请关注m...
- photoshop后期皮肤变白的技巧
-
PS后期皮肤变白的技巧。1.PS后期让皮肤变白的方法有很多种,接下来教你一种非常简单容易上手的方法。2.打开素材图片之后,直接在小太极下拉框的位置添加一个纯色调整图层,颜色设置一个纯白色,点击...
- Photoshop调出人物的淡雅粉嫩肤色教程
-
本教程主要使用Photoshop调出人物的淡雅粉嫩肤色教程,最终的效果非常的通透迷人,下面让我们一起来学习.出自:86ps效果图:原图:1、打开原图复制一层。2、用Topaz滤镜磨皮(点此下载)。3、...
- 一周热门
- 最近发表
- 标签列表
-
- ps像素和厘米换算 (32)
- ps图案在哪里 (33)
- super().__init__ (33)
- python 获取日期 (34)
- 0xa (36)
- super().__init__()详解 (33)
- python安装包在哪里找 (33)
- linux查看python版本信息 (35)
- python怎么改成中文 (35)
- php文件怎么在浏览器运行 (33)
- eval在python中的意思 (33)
- python安装opencv库 (35)
- python div (34)
- sticky css (33)
- python中random.randint()函数 (34)
- python去掉字符串中的指定字符 (33)
- python入门经典100题 (34)
- anaconda安装路径 (34)
- yield和return的区别 (33)
- 1到10的阶乘之和是多少 (35)
- python安装sklearn库 (33)
- dom和bom区别 (33)
- js 替换指定位置的字符 (33)
- python判断元素是否存在 (33)
- sorted key (33)