本文列举了一些使用Python和Jupyter Notebook的技巧,讨论了如何轻松分析数据以及如何进行格式化编码、输出和调试等操作。作者:读芯术
在编程领域,有时一个小技巧就能节省大量时间,甚至能起到救命的效果。这些“必杀技”往往能在未来的数据分析中发挥重大作用。
![44cfbaae7b053153e06f97da7b1051df.png](https://i-blog.csdnimg.cn/blog_migrate/60080cc136f7b9c5bbb90601da723b5e.jpeg)
1. 分析Pandas数据框架
Profiling(分析)是一个帮助理解数据的过程,Pandas Profiling(数据预览分析)作为一个python工具包,就是用来帮助理解数据的。该工具能够简单快速地对熊猫数据框架进行探索性数据分析。pandas df.describe()和df.info()functions通常是EDA过程的第一步。然而,这个步骤只提供一个基本的数据预览,对大型数据集帮助不大。另外,Pandas Profiling功能使用df.profile_report()扩展了熊猫数据框架,可以快速进行数据分析。该功能仅用一行代码就可以显示很多信息,这也可以应用在交互式的HTML报告中。
对于给定数据集,数据预览分析包会处理以下数据:
![b25beaeb914c9b78641b89f2053e29dc.png](https://i-blog.csdnimg.cn/blog_migrate/6266e3b8dbb2facf1a9a4d80def6c47c.jpeg)
Pandas Profiling工具包计算的统计数据
安装
![5429ecac35ccdf7597b321161b7bd277.png](https://i-blog.csdnimg.cn/blog_migrate/713f4798e385269e6bfa249296ece757.jpeg)
使用
用古老的大数据集来演示python profiler的功能。
![3ec97c537bff00b61ecea472514ecc68.png](https://i-blog.csdnimg.cn/blog_migrate/bce92df709f4d5bd86c3f31aca86972d.jpeg)
最近,Pandas-Profiling发布了一个重要的2.0.0升级版本。事实上,该版本对语法作了一点改变,这个功能也已经包含在熊猫数据框架中了,报告也变得更加全面。以下是最新的语法用法:
使用
要在Jupyter笔记本中显示报告,并运行:
![ae22d14a033ed19ea623d7543ec6fd33.png](https://i-blog.csdnimg.cn/blog_migrate/c86aa5f4a5f83ac3f763f60006bade0b.jpeg)
这一行代码就是用户在Jupyter笔记本中显示数据分析报告所需的全部内容。显示的报告非常详细,必要时还包括图表。
![af7f3e8bb2f3d402839618570137676d.gif](https://i-blog.csdnimg.cn/blog_migrate/b7711b533e95012f105ac8eb9ea29661.gif)
通过下列代码用户还可以将该报告导出到交互式HTML文件中:
![add2bdf79f558c97ae6db2912e9824a4.png](https://i-blog.csdnimg.cn/blog_migrate/54eab8069288b7fd925bf9d688046b5d.jpeg)
![508d643d6768f9baad0f03049e39514c.gif](https://i-blog.csdnimg.cn/blog_migrate/834a81deb581dc1d8dff62a9d201cc38.gif)
更多详细信息和示例:https://pandas-profiling.github.io/pandas-profiling/docs/
2. 增强Pandas plots的互动性
Pandas有一个内置的 .plot() 功能,是数据框架类的一部分。然而,该功能不尽人意的地方在于呈现的可视化不是交互式的。相反,用pandas.DataFrame.plot()功能绘制图表就很容易。如果不对代码做重大修改,可以绘制出像熊猫图表一样的交互式图表吗?答案是可以的,Cufflinks库能够帮助做到这一点。
Cufflinks库将plotly的功能与Pandas的灵活性结合起来,使绘图简单化。现在就来看看如何安装这个库,并让它在pandas上运行。
![1ca8d8d7f7a666db8262ff01efdb52a1.png](https://i-blog.csdnimg.cn/blog_migrate/2e24208f5b0ee685a63479a1753de44a.jpeg)
![c41126aab55a400b2584461bdfa75a15.gif](https://i-blog.csdnimg.cn/blog_migrate/40a28ee5e2a07db8284623a638558f38.gif)
![3dce079d54816b9399bce1b5e5ca4a44.png](https://i-blog.csdnimg.cn/blog_migrate/73dc6a6c4549adc1b367d1ae9ae79193.jpeg)
![8577456728e02af1fa9d7e4d0430ac6a.png](https://i-blog.csdnimg.cn/blog_migrate/116d996a48455ab5a445366a1cecd117.jpeg)
右边的可视化显示的是静态图表,而左边则是交互式图表,更为详细。这些图表在语法上都没有作出重大改变。
更多示例:https://github.com/santosjorge/cufflinks/blob/master/Cufflinks%20Tutorial%20-%20Pandas%20Like.ipynb
3. 少许魔法
魔法命令(Magic commands)是Jupyter笔记本中的一组便捷功能,旨在解决标准数据分析中的一些常见问题。在 %lsmagic的帮助下,用户可以看到所有可用的魔法功能。
![326eb643750b51e612098c2fa41bf915.png](https://i-blog.csdnimg.cn/blog_migrate/6c78f8cf568e2b00eebc80db3debfc5b.jpeg)
所有可用魔法功能的清单
魔法命令有两种:行魔法,即以单个%字符为前缀,在单行输入上操作;单元格魔法,即以%%为前缀,在多行输入上操作。如果设置为1,则无需键入初始%即可调用魔术功能。
一起来看看两种魔法命令在常见数据分析任务中的应用:
% pastebin
%pastebin将代码上传到Pastebin并返回url地址。Pastebin属于在线内容托管服务,在这里,用户可以存储如源代码片段等纯文本,然后与他人共享网址。事实上,Github的要点也类似于pastebin,尽管存在版权限制。
考虑一个包含以下内容的python脚本file.py:
![00b1ba06366c9a1a6de37a42e9b80b01.png](https://i-blog.csdnimg.cn/blog_migrate/b7b541fe1991404a1b8639b0890e5d56.jpeg)
在Jupyter笔记本中使用 %pastebin会生成一个pastebin网址。
![e8b9cb7d9d0b12af530ae07562821aac.png](https://i-blog.csdnimg.cn/blog_migrate/4eb8a72eddba516ee5583682e3f2a5c5.jpeg)
%matplotlib notebook
%matplotlib inline功能用于渲染Jupyter笔记本中的静态matplotlib图。尝试用notebook替换inline,以轻松获得可变焦、可调整大小的绘图。请确保在导入matplotlib库之前启用该功能。
![1862e93358e7cab797efc01422240afa.png](https://i-blog.csdnimg.cn/blog_migrate/7af13b5d93083a3ada1e1a5b0a485e3f.jpeg)
%matplotlib inline 与 %matplotlib notebook
%run
%run 功能在笔记本内部运行python脚本。
![db0017dbb4418695ffcec76c63f70044.png](https://i-blog.csdnimg.cn/blog_migrate/8100fe60648237fa9a9ae6ac3afd869d.jpeg)
%%writefile
%%writefile 将单元格的内容写入文件。通过该功能,代码将被写入一个名为foo.py的文件,并保存在当前目录中。
![0790a40d9a56112c5e5b95584e862859.png](https://i-blog.csdnimg.cn/blog_migrate/b0a202771f109c3d44d248a65a921d2d.jpeg)
%%latex
%%latex 功能将单元格内容呈现为 LaTeX格式。这对于在单元格中编写数学公式和方程很有用。
![565bcc6930faf27dce36ea3236c477d8.png](https://i-blog.csdnimg.cn/blog_migrate/2cccc22df709f88d499f6f6f2fd65c41.jpeg)
4. 查找并消除错误
Interactive debugger也是一个有魔力的功能,但本文对它进行单独分类。如果在运行代码单元时出现异常,用户可以在新的一行中键入 %debug 并恢复运行。这一操作将打开一个交互式调试环境,找到发生异常的位置。用户还可以检查程序中分配的变量值,并在此执行操作。点击q即可退出调试。
![422c9fb0ecee4d061189cb0689752524.gif](https://i-blog.csdnimg.cn/blog_migrate/239081c4c1a56e63da1de46173c96495.gif)
5. 美观排版
如果想建立美观的数据结构,pprint是一个直接的模块,在打印字典或JSON数据时特别有用。下面来看一个使用print 和 pprint 来显示输出的例子。
![029797e1fc1cf92f98453b546eb77b6a.png](https://i-blog.csdnimg.cn/blog_migrate/57f0203bcd662dd6ebf292cad95797a7.jpeg)
6. 笔记突出显示
可以在Jupyter笔记本中使用alert/Note boxes来标记一些重要的或需要突出的内容。笔记的颜色取决于突出内容的重要程度。用户只需在需要突出显示的单元格中添加以下任意或所有代码。
![82722712820ae3c86d03f2b921609f82.png](https://i-blog.csdnimg.cn/blog_migrate/e871a003ca93d7be3fe046f816991eb0.jpeg)
7. 打印单元格的所有输出
例如包含以下代码行的Jupyter笔记本单元格:
![cec3c7701ef47ebf0c3288fcb3c72f24.png](https://i-blog.csdnimg.cn/blog_migrate/ca08c85e114d85c0243ffc6af6dac4be.jpeg)
只打印最后一个输出是单元格的正常属性,而其他输出,则需要添加 print()功能。事实证明,只要在笔记本顶部添加以下代码段,就可以打印所有的输出内容。
![7444030dec98dbef1b24dd688a175af1.png](https://i-blog.csdnimg.cn/blog_migrate/13936816f6e7c58d3095cf3c9a5ff0fe.jpeg)
现在所有输出可以一个接一个地打印出来。
![4ac24615864fbc8440b71ebcf032e512.png](https://i-blog.csdnimg.cn/blog_migrate/12acb13ff343bb57e9b0980a466362ec.jpeg)
输入以下代码可恢复到初始设置:
![e071afab8ab1e8ef1a8a2869fb12879f.png](https://i-blog.csdnimg.cn/blog_migrate/925cbba5eddb0e6d11cc0b907e4108e5.jpeg)
8. 使用‘i’选项运行python脚本
从命令行运行python脚本的一种典型方式是:python hello.py。但是,如果在运行相同脚本时添加一个额外的-i,例如python -i hello.py,则会带来更多优势。具体操作如下:
首先,一旦程序结束,python就不会退出解释程序。此时,用户可以检查变量值和程序中定义功能。
![7e4351c38aa20a6edc57695195af63a1.gif](https://i-blog.csdnimg.cn/blog_migrate/0ca4e497c52ff0ead677db01f8cadc7d.gif)
其次,因为用户仍然在解释程序中,所以可以通过以下方式轻松调用python调试器:
![d7b506c3f070444ad66c765e69794ab2.png](https://i-blog.csdnimg.cn/blog_migrate/5dcd51a09efeb29fd91fd86d1daf4372.jpeg)
该方式可帮助用户找到异常发生的位置,然后可以处理代码。
![43178f02dfec546d0d1680467d5a518a.png](https://i-blog.csdnimg.cn/blog_migrate/2943cb17a9160b96573c4a537cf1d169.jpeg)
漏洞的原始来源
![bd0aa7da2bf21bc61f44b5f9fd1b2dad.png](https://i-blog.csdnimg.cn/blog_migrate/a465938eefec46ab1b3e7012783ca48e.jpeg)
9. 自动注释代码
Ctrl/Cmd + / 可以自动注释掉单元格中选定的行。再次点击该组合键可以取消同一行代码的注释。
![34832ce848ecbe7228c97f752a3b97ff.gif](https://i-blog.csdnimg.cn/blog_migrate/de63b3e49248504f8e31d3610b2c8bcf.gif)
10. 撤销删除操作
你曾经有不小心删除过笔记本中的单元格吗?如果有,那么这里有一个快捷键可以撤销删除操作。
如果删除了单元格的内容,可以通过点击CTRL/CMD+Z来轻松恢复它
如果需要恢复整个删除的单元格,可以点击ESC+Z或者 EDIT > Undo Delete Cells
![36e29ef7ebdd45df850f6b8701b68dd3.gif](https://i-blog.csdnimg.cn/blog_migrate/345ca3c13093fe861294657d82728258.gif)