提示和技巧, 尤其是在编程领域, 可能是非常有用的. 有时, 一个小技巧可以节省时间和生命. 一个小的快捷方式或附加组件有时会被证明是天赐之物, 并能真正提高生产力. 因此, 下面是我最喜欢的一些提示和技巧, 我将它们以本文的形式一起使用和编译. 有些可能是我们相当熟悉的, 有些可能是新的, 但我确信它们将在你下一次处理数据分析项目时派上用场.
1. 分析 pandas 数据帧
Profiling(分析) 是一个帮助我们理解数据的过程, 而 Pandas Profiling 就是执行这一过程的 python 包. 这是一种对 Pandas Dataframe(数据帧) 进行探索性数据分析的简便, 快速的方法. Pandas 的 df.describe() 和 df.info() 函数通常用作 EDA 过程的第一步. 但是, 它只提供了一个非常基本的数据概览, 对于大型数据集的情况并没有多大帮助. 另一方面, Pandas Profiling(分析) 函数使用 df.profile_report() 对 pandas 数据帧进行了扩展, 以便快速进行数据分析. 它用一行代码显示了很多信息, 在交互式 html 报告中也是如此.
对于一个给定的数据集, pandas profiling(分析) 包会计算以下统计数据:
Pandas Profiling 包计算出的统计数据.
安装
用法
我们来使用古老的 titanic 数据集来演示多功能 python 分析器的功能.
编者注: 本文发布一周后, Pandas-Profiling 发布了一个重大的升级版本 --2.0.0. 语法发生了一些变化, 事实上, 它的功能已经包含在 pandas 本身中了, 并且报告也变得更加全面. 下面是最新的用法语法:
Usage
要在 Jupyter notebook 中显示报告, 请运行以下代码:
你只需要这一行代码就可以在一个 Jupyter notebook 中显示数据分析报告. 报告非常详细, 包括了必要的图表.
你也可以使用以下代码将这个报告输出到一个交互式 HTML 文件中.
查阅文档获取更多细节和例子.
2. 为 pandas 图表带来交互性
Pandas 有一个内置的. plot() 函数, 它是 DataFrame 类的一部分. 然而, 使用该函数呈现的可视化效果并不具有交互性, 这使得它的吸引力降低. 相反, 也不能排除使用 pandas. datafram .plot() 函数绘制图表的方便性. 如果我们不需要对代码进行重大修改, 就可以使用 pandas 绘制出像 plotly 那样的交互式图表, 那会怎么样呢? 实际上, 你可以使用 Cufflinks 库做到这一点.
Cufflinks 库结合了 plotly 的强大功能和 pandas 的灵活性, 便于轻松绘图. 现在我们来看看如何安装这个库并让它在 pandas 中运行.
安装
用法
是时候看看使用 Titanic 数据集展开的神奇之处了.
df.iplot() 对比 df.plot()
右边的可视化显示的是静态图表, 而左边的图表是交互式的, 并且更加详细, 所有这些都没有对语法进行任何重大更改.
3. 一点魔法
魔法命令是 Jupyter Notebook 中的一组方便的函数, 旨在解决标准数据分析中的一些常见问题. 你可以通过 %lsmagic 命令来查看所有可用的魔法命令.
所有可用魔法函数的列表
魔法命令有两种类型: line magics(行魔法) 和 cell magics(单元魔法), 前者以单个 % 字符作为前缀, 并在一行输入上进行操作; 后者与两个 %% 前缀关联, 并在多行输入上进行操作. 如果将魔法函数的选项设置为 1 时, 不需要键入初始 % 就可调用它.
我们来看看在常见的数据分析任务中可能有用的一些魔法函数:
% pastebin
%pastebin 将代码上传到 Pastebin 并返回其 url.Pastebin 是一个在线内容托管服务, 我们可以在其中存储纯文本, 如源代码片段, 然后可以将 url 与他人共享. 事实上, GitHub Gist 也类似于 Pastebin, 尽管它有版本控制.
我们假设有一个包含以下内容的 python 脚本 file.py:
在 Jupyter Notebook 中使用 %pastebin 生成一个 pastebin 的 url 地址.
%matplotlib notebook
%matplotlib inline 函数用于在 Jupyter notebook 中呈现静态 matplotlib 绘图. 尝试用 notebook 替换 inline 部分, 你就可以轻松获得可缩放和可调整大小的绘图. 确保在导入 matplotlib 库之前调用该函数.
%matplotlib inline 对比 %matplotlib notebook
%run
%run 函数会在一个 notebook 中运行一个 python 脚本.
%%writefile
%%writefile 会将单元格的内容写入文件. 这里的代码将被写入一个名为 foo.py 的文件, 并保存在当前目录中.
%%latex
%%latex 函数会将单元格的内容呈现为 LaTeX. 它对在单元格中编写数学公式和方程很有用.
4. 发现和消除错误
Interactive debugger(交互式调试器) 也是一个 magic 函数, 但是我已经将它单独归为一类. 如果在运行代码单元格时出现异常, 请在一个新行中键入 %debug 并运行它. 这会打开一个交互式调试环境, 它会将你带到异常发生的位置. 你还可以检查程序中分配的变量的值, 并在这里执行操作. 要退出这个调试器, 请按 q.
5. 打印输出也可以很漂亮
如果你想为你的数据结构生成美观的表示形式, pprint 是首选模块. 它在打印字典或 JSON 数据时特别有用. 我们来看一个同时使用 print 和 pprint 显示输出的例子.
6. 让注释突出显示.
我们可以在 Jupyter Notebook 中使用信息提示 / 备注框来醒目显示一些重要的或任何需要突出的东西. 注释的颜色取决于你指定的提示类型. 你只需在需要高亮显示的单元格中添加以下任何或所有代码即可.
蓝色信息提示框: 信息
黄色信息提示框: 警告
绿色提示框: 成功
红色提示框: 危险
7. 打印一个单元格中的所有输出
假设有一个含有以下代码行的 Jupyter Notebook 单元格:
只打印最后一个输出是单元格的一个正常属性, 而对于其他输出, 我们需要添加 print() 函数. 事实上, 我们只要在 notebook 的顶部添加以下代码片段, 就可以打印出所有输出.
现在所有的输出一个接一个的被打印出.
还原到原始设置:
8. 使用'i'选项运行 python 脚本.
从命令行运行 python 脚本的一种典型方法是: python hello.py. 但是, 如果你在运行相同的脚本时添加一个附加的 - i, 例如 python -i hello.py, 它会提供更多的优点. 我们来一探究竟.
首先, 一旦程序结束, python 并不会退出解释器. 因此, 我们可以检查变量的值和程序中定义的函数的正确性.
其次, 我们可以很容易地使用以下代码调用 python 调试器, 因为我们仍然在解释器中:
这会将我们带到异常发生的位置, 然后我们就可以处理代码.
这个技巧的初始来源.(http://www.bnikolic.co.uk/blog/python-running-cline.html )
9. 自动对代码进行注释
Ctrl/Cmd + / 会自动注释单元格中选定的行. 再次敲击该组合键将取消对同一行代码的注释.
10. 能删除是人, 能恢复是神.
你是否曾经不小心删除了 Jupyter Notebook 中的一个单元格? 如果是, 那么这里有一个快捷方式可以撤消此删除操作.
如果你删除了一个单元格的内容, 按 CTRL/CMD+Z 可以很容易地恢复它
如果你需要恢复一个全部删除的单元格, 请点击 ESC+Z 或 EDIT> Undo Delete Cells
结论
在本文中, 我列出了在使用 Python 和 JupyterNotebook 时收集到的主要技巧. 我相信它们会对你有用, 你也会从这篇文章中学到一些东西, 从而实现轻松编码!
来源: http://developer.51cto.com/art/201907/599364.htm