使用python进行快速高效数据分析的工具和方法(免费送福利)

原文来自medium

原作者:Parul Pandey

本人对原文进行了加工编辑。

今天我将给大家介绍几种利用python进行快速高效数据分析的工具和技术,废话少说,让我们撸起袖子干起来。

1.pandas_profiling

我们知道pandas的dataframe是一个内存数据集,我们通常使用会使用df.describe()或者 df.info()来查看数据的概况,但是对于高手来说,这些方法有点弱,pandas_profiling扩展了pandas的DataFrame,df.profile_report()用于快速数据分析。pandas_profiling会对数据集中的每一列进行详细的分析,并给出精美的可视化的HTML报告,主要分析内容如下:

对于数据集中的每一列,以下统计信息(如果与列类型相关)将显示在交互式HTML报告中

  • 要点:类型,唯一值,缺失值
  • 分位数统计量,如最小值,Q1,中位数,Q3,最大值,范围,四分位数范围
  • 数据统计,如均值,模式,标准差,总和,中位数绝对偏差,变异系数,峰度,偏度
  • 最频繁的值
  • 直方图
  • 变量的相关性 高亮度显示变量之间相关系数矩阵,斯皮尔曼,Pearson和肯德尔矩阵
  • 丢失缺失值的值,矩阵,计数,热图和树形图

大家可以在这里查看pandas_profiling的官方文档和例子。

pandas_profiling安装

pip install pandas-profiling

pandas_profiling使用

2.交互式的数据可视化库Cufflinks

我们知道pandas内置了数据可视化方法plot(),但是它不能实现交互式的可视化,Cufflinks弥补了pandas的这个短板,它为用户提供了一种交互式的数据可视化,用户可以在jupyter notebook中与各种图表进行交互,甚至是三维数据的可视化,都可以让用户任意拖动图像,给你带来一种震撼的体验。Cufflinks结合了plotly 使得pandas绘图更加灵活方便。

更多的例子请查看:

Cufflinks安装

pip install plotly # 安装cufflinks之前必须先安装plotly
pip install cufflinks

Cufflinks使用

上面的图是数据集中的基本统计信息,下面的图是交互图,用户可以在图上进行随意拖拽,放大,缩小等操作。 

3.魔法命令 

Magic命令是Jupyter notebook中的一组便捷功能,旨在解决标准数据分析中的一些常见问题。 你可以在%lsmagic的帮助下看到所有可用的魔法。

 

魔术命令有两种:行命令,以单个%字符为前缀,在单行输入上操作,以及单元命令,与双%%字符为前缀,并在多行输入上操作。 让我们看一下在常见数据分析任务中可能有用的一些内容:

  • % pastebin

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

下面我写了一个helloWorld.py文件,我想把helloworld的代码共享给朋友,我可以这样做:首先编辑一个helloworld文件,然后使用%pastebin命令,上传该代码文件,同时得到一个短链接,然后将该短链接分享给自己的朋友,那么我的朋友就能看见我所写的代码了:

 

  • %matplotlib notebook

经常使用jupyter notebook的朋友一定知道%matplotlib inline命令,它是用来在对数据可视化时将matplotlib的各种图表嵌入notebook中显示,但是你可能不知道还有一个%matplotlib notebook命令,它扩展了%matplotlib inline命令,让图像具备放大,缩小等功能。

                                       %matplotlib inline vs %matplotlib notebook 

  • %run 命令

%run 命令可以用来在notebook中运行一个.py的python脚本文件

  • %%writefile

%%writefile命令用来将当前代码单元(cell)中的代码写入写入指定的脚本文件中,如果文件存在将会被覆盖。

%%latex

%%latex命令的运行我们在当前代码单元中输入latex语法,以生成各种数学公式和特殊符号。如大家对latex语法不熟悉,在这里给大家推荐一个在线latex公式编辑器(https://private.codecogs.com/latex/eqneditor.php?lang=en-us),该在线公式编辑器可自动生成llatex语法。

4.jupyter notebook 交互调试(debug)

当我们的代码出现异常是我们可以输入%debug命令,对错误的代码进行调试。

5.更美观的打印命令pprint

如果您想生成美观的数据结构表示,pprint是首选模块。它在打印字典或JSON数据时特别有用。让我们看一下使用print和pprint时打印结果的差异:

6.漂亮的Markdown

当我们在notebook中将单元(cell)的类型改成markdown时,我们便可以在其中编辑文本信息。这时我们可以对markdown的单元做一些设置让它更加美观.

当我们在notebook中将单元(cell)的类型改成markdown时,我们便可以在其中编辑文本信息。这时我们可以对markdown的单元做一些设置让它更加美观.

  • 蓝色警示框:信息
<div class="alert alert-block alert-info">
可以在这里输入一般信息.
</div>

  • 黄色警示框:警告
<div class="alert alert-block alert-warning">
可以在这里输入警告信息.
</div>

  • 绿色警示框:成功 
<div class="alert alert-block alert-success">
可以在这里输入成功信息
</div>

 

  • 红色警示框:危险
<div class="alert alert-block alert-danger">
可以在这里输入危险警告信息
</div>

 

7.打印出单元(cell)中所有输出内容

如果一个代码单元中有多个输出时,notebook一般只会输出最后一个结果,请看下面的一个例子:

如何在不使用print命令时输出单元中所有的输出结果呢?我们只需要添加如下两条代码:

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

 

如果想要恢复原先的设置只需要将InteractiveShell.ast_node_interactivity设置为"last_expr"

InteractiveShell.ast_node_interactivity = "last_expr"

8.运行python脚本时使用-i选项

行运行python脚本的典型方法是在命令行中输入:python hello.py。 但是,如果在运行相同的脚本时添加额外的-i选项,例如python -i hello.py,它会提供更多优势。 我们来看看实现

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

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

这将使我们进入发生异常的位置,然后我们可以处理代码。进一步内容请参考这篇文档

9.jupyter notebook中批量注释/缩进代码

我们可以使用Ctrl(Cmd) + / 来注释多行代码:

批量注释代码

  • windows电脑: Ctrl+/
  • 苹果电脑: Cmd+/

批量缩进代码

  • 向左缩进:Ctrl+[
  • 向右缩进:Ctrl+]


 

10.恢复被意外删除的cell

  • 如果你意外删除了cell中的代码(没有删除cell),那么你可以按下:CTRL(CMD)+Z,恢复cell中被删除的内容
  • 如果你意外的将整个cell给误删除了,那么你可以按下:ESC+Z 或 EDIT > Undo Delete Cells,恢复被删除的cell.结论

 11. 在jupyter notebook中安装R语言的编程环境

在命令行中输入:

conda install -c r r-essentials

结论

在本文中,我列出了使用Python和Jupyter notebook时收集到的一些技巧。 我相信它们会对你有用,你会从这篇文章中学到一些东西。 祝各位程序猿编码快乐!!

你可以在这里下载完整代码:

https://github.com/tongzm/ml-python/blob/master/jupyter%20notebook%20%E9%BB%91%E7%A7%91%E6%8A%80.ipynb

猜你喜欢

转载自blog.csdn.net/weixin_42608414/article/details/96460436