Skip to content

Latest commit

 

History

History
346 lines (209 loc) · 12.9 KB

10-simple-hacks-speed-data-analysis-python.md

File metadata and controls

346 lines (209 loc) · 12.9 KB

10 个简单技巧加速你在 Python 中的数据分析

原文:www.kdnuggets.com/2019/07/10-simple-hacks-speed-data-analysis-python.html

c 评论

Parul Pandey,数据科学爱好者

图示

来源

提示和技巧,尤其是在编程世界中,非常有用。有时一个小技巧既能节省时间又能拯救生命。一个小小的快捷方式或附加功能有时可以成为上天的恩赐,并能显著提升生产力。所以,这里有一些我用过并汇编在这篇文章中的我最喜欢的提示和技巧。有些可能比较常见,有些可能较新,但我相信下次你做数据分析项目时,它们会非常有用。

1. 对 pandas 数据框进行分析

Profiling 是一个帮助我们理解数据的过程,Pandas Profiling 是一个完全实现这一点的 Python 包。它是进行 Pandas 数据框探索性数据分析的简单而快速的方法。pandas 的df.describe()df.info()functions通常作为 EDA 过程的第一步。然而,它仅提供数据的非常基本概述,在大型数据集的情况下帮助不大。另一方面,Pandas Profiling 函数通过df.profile_report()扩展了 pandas DataFrame,实现了快速数据分析。它用一行代码显示大量信息,并且是一个交互式 HTML 报告。

对于给定的数据集,pandas profiling 包计算以下统计数据:

图示

Pandas Profiling 包计算的统计数据。

安装

pip install pandas-profiling
or
conda install -c anaconda pandas-profiling

使用

让我们使用经典的泰坦尼克号数据集来演示这个多功能的 Python 分析器的能力。

#importing the necessary packages
import pandas as pd
import pandas_profiling

# Depreciated: pre 2.0.0 version
df = pd.read_csv('titanic/train.csv')
pandas_profiling.ProfileReport(df)

编辑:在这篇文章发布后一周,Pandas-Profiling 推出了一个重大升级 - 版本 2.0.0。语法有所变化,实际上功能已包含在 pandas 中,报告也变得更加全面。以下是最新的使用语法:

使用

要在 Jupyter 笔记本中显示报告,请运行:

#Pandas-Profiling 2.0.0
df.profile_report()

这行代码就是你需要在 Jupyter 笔记本中显示数据分析报告的全部。报告非常详细,包括必要的图表。

报告还可以导出为交互式 HTML 文件,代码如下。

profile = df.profile_report(title='Pandas Profiling Report')
profile.to_file(outputfile="Titanic data profiling.html")

请参阅文档以获取更多详细信息和示例。

2. 为 pandas 图表添加交互性

Pandas有一个内置的.plot()函数作为 DataFrame 类的一部分。然而,使用该函数生成的可视化图表不具备交互性,这使得它们的吸引力降低。相反,pandas.DataFrame.plot()函数绘制图表的便利性也不可忽视。如果我们能在不对代码进行重大修改的情况下,使用 pandas 绘制类似于 plotly 的交互式图表,那会怎么样呢?实际上,你可以借助Cufflinks库来实现这一点**。**

Cufflinks 库将plotly的强大功能与pandas的灵活性结合起来,方便绘图。现在,让我们看看如何安装这个库并在 pandas 中使用它。

安装

pip install plotly # Plotly is a pre-requisite before installing cufflinks
pip install cufflinks

用法

#importing Pandas 
import pandas as pd
#importing plotly and cufflinks in offline mode
import cufflinks as cf

import plotly.offline
cf.go_offline()
cf.set_config_file(offline=False, world_readable=True)

现在是时候让魔法在 Titanic 数据集中展开了。

df.iplot()

图示图示

XXX

df.iplot() 与 df.plot()

右侧的可视化展示了静态图表,而左侧的图表则是交互式的,并且更加详细,所有这些都没有对语法进行任何重大更改。

点击这里获取更多示例。

3. 一点魔法

魔法命令是 Jupyter Notebooks 中的一组便利函数,旨在解决标准数据分析中的一些常见问题。你可以使用%lsmagic查看所有可用的魔法命令。

图示

所有可用魔法函数的列表

魔法命令有两种类型:行魔法,由单个%字符前缀,并在单行输入上操作;和单元格魔法,由双%%前缀标识,并在多行输入上操作。如果设置为 1,魔法函数可以在不输入初始%符号的情况下调用。

让我们看看一些可能在常见数据分析任务中有用的功能:

  • % pastebin

%pastebin 将代码上传到Pastebin并返回网址。Pastebin 是一个在线内容托管服务,我们可以在这里存储纯文本如源代码片段,然后将网址分享给他人。实际上,Github gist 也类似于pastebin,尽管有版本控制。

考虑一个名为file.py的 Python 脚本,内容如下:

#file.py
def foo(x):
    return x

在 Jupyter Notebook 中使用**%pastebin**会生成一个 pastebin 网址。

  • %matplotlib notebook

%matplotlib inline 函数用于在 Jupyter notebook 中渲染静态 matplotlib 图表。尝试将inline部分替换为notebook,以便获得可缩放和可调整大小的图表。确保在导入 matplotlib 库之前调用该函数。

%matplotlib inline 与 %matplotlib notebook

  • %run

%run 函数在笔记本中运行 Python 脚本。

%run file.py
  • %%writefile

%%writefile 将单元格的内容写入文件。这里的代码将被写入名为 foo.py 的文件,并保存在当前目录中。

  • %%latex

%%latex 函数将单元格内容渲染为 LaTeX。这对于在单元格中书写数学公式和方程非常有用。

4. 查找和消除错误

交互式调试器 也是一个魔法函数,但我将其分为一个独立的类别。如果在运行代码单元时遇到异常,请在新行中输入 %debug 并运行。这将打开一个交互式调试环境,将你带到发生异常的位置。你还可以检查程序中分配的变量的值,并在这里执行操作。要退出调试器,请按 q

5. 打印也可以很漂亮

如果你想生成美观的数据结构表示, pprint 是首选模块。它在打印字典或 JSON 数据时特别有用。让我们来看一个使用 printpprint 显示输出的示例。

6. 使提示框突出显示

我们可以在 Jupyter Notebooks 中使用警告/提示框来突出显示重要内容或需要引起注意的事项。提示框的颜色取决于指定的警告类型。只需在需要突出显示的单元格中添加以下任何或所有代码。

  • 蓝色警告框:信息
<div class="alert alert-block alert-info">
<b>Tip:</b> Use blue boxes (alert-info) for tips and notes. 
If its a note, you dont have to include the wordNote”.
</div>

  • 黄色警告框:警告
<div class="alert alert-block alert-warning">
<b>Example:</b> Yellow Boxes are generally used to include additional examples or mathematical formulas.
</div>

  • 绿色警告框:成功
<div class="alert alert-block alert-success">
Use green box only when necessary like to display links to related content.
</div>

  • 红色警告框:危险
<div class="alert alert-block alert-danger">
It is good to avoid red boxes but can be used to alert users to not delete some important part of code etc. 
</div>

7. 打印单元格的所有输出

设想一个包含以下代码行的 Jupyter Notebook 单元格:

In  [1]: 10+5          
         11+6
Out [1]: 17

这是一个单元格的正常属性,只有最后一个输出会被打印,而对于其他输出,我们需要添加 print() 函数。实际上,我们只需在笔记本顶部添加以下代码片段,就可以打印所有输出。

from IPython.core.interactiveshell import InteractiveShell  InteractiveShell.ast_node_interactivity = "all"

现在所有输出会一个接一个地打印出来。

In  [1]: 10+5          
         11+6
         12+7
Out [1]: 15
Out [1]: 17
Out [1]: 19

要恢复到原始设置:

InteractiveShell.ast_node_interactivity = "last_expr"

8. 使用 'i' 选项运行 Python 脚本

从命令行运行 Python 脚本的典型方法是:python hello.py。然而,如果在运行相同脚本时添加 -i,例如 python -i hello.py,则会提供更多的优势。让我们看看如何。

  • 首先,一旦程序结束,Python 不会退出解释器。因此,我们可以检查变量的值和程序中定义的函数的正确性。

  • 其次,我们可以轻松调用 Python 调试器,因为我们仍然在解释器中:
import pdb
pdb.pm()

这将把我们带到发生异常的位置,然后我们可以进一步处理代码。

图片

原始的来源*。

9. 自动注释代码

Ctrl/Cmd + / 会自动将所选行注释掉。再次按下组合键将取消注释该行代码。

10. 删除是人的本能,恢复是神圣的

你是否曾在 Jupyter Notebook 中不小心删除了一个单元格?如果是,那么这里有一个快捷键可以撤销该删除操作。

  • 如果你删除了一个单元格的内容,可以通过按 CTRL/CMD+Z 容易地恢复它。

  • 如果需要恢复整个删除的单元格,可以按 ESC+ZEDIT > Undo Delete Cells

结论

在这篇文章中,我列出了在使用 Python 和 Jupyter Notebooks 时总结的主要技巧。我相信它们会对你有帮助,你也会从中获得一些收获。祝编程愉快!

个人简介: Parul Pandey 是一位数据科学爱好者,常为数据科学相关出版物如 Towards Data Science 撰写文章。

原文。经许可转载。

相关内容:

  • 使用‘What-If Tool’调查机器学习模型

  • 使用 Matplotlib 制作动画

  • PyViz:简化 Python 中的数据可视化过程


我们的三大课程推荐

1. 谷歌网络安全证书 - 快速进入网络安全职业生涯。

2. 谷歌数据分析专业证书 - 提升你的数据分析能力

3. 谷歌 IT 支持专业证书 - 支持你的组织 IT


更多相关话题