加速数据分析,这10个小技巧好用到哭

划重点!!!本文列举了一些使用Python和Jupyter Notebook的技巧,讨论了如何轻松分析数据以及如何进行格式化编码、输出和调试等操作。

加速数据分析,这10个小技巧好用到哭

在编程领域,有时一个小技巧就能节省大量时间,甚至能起到救命的效果。这些“必杀技”往往能在未来的数据分析中发挥重大作用。

1. 分析Pandas数据框架

Profiling(分析)是一个帮助理解数据的过程,Pandas Profiling(数据预览分析)作为一个python工具包,就是用来帮助理解数据的。该工具能够简单快速地对熊猫数据框架进行探索性数据分析。pandas df.describe()和df.info()functions通常是EDA过程的第一步。然而,这个步骤只提供一个基本的数据预览,对大型数据集帮助不大。另外,Pandas Profiling功能使用df.profile_report()扩展了熊猫数据框架,可以快速进行数据分析。该功能仅用一行代码就可以显示很多信息,这也可以应用在交互式的HTML报告中。

对于给定数据集,数据预览分析包会处理以下数据:

加速数据分析,这10个小技巧好用到哭

Pandas Profiling工具包计算的统计数据

安装

  1. pip install pandas-profiling 
  2. or 
  3. conda install -c anaconda pandas-profiling 

使用

用古老的大数据集来演示python profiler的功能。

  1. #importing the necessary packages 
  2. import pandas as pd 
  3. import pandas_profiling 
  4. # Depreciated: pre 2.0.0 version 
  5. df = pd.read_csv('titanic/train.csv'
  6. pandas_profiling.ProfileReport(df) 

最近,Pandas-Profiling发布了一个重要的2.0.0升级版本。事实上,该版本对语法作了一点改变,这个功能也已经包含在熊猫数据框架中了,报告也变得更加全面。以下是最新的语法用法:

使用

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

  1. #Pandas-Profiling 2.0.0 
  2. df.profile_report() 

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

加速数据分析,这10个小技巧好用到哭

通过下列代码用户还可以将该报告导出到交互式HTML文件中:

  1. profile = df.profile_report(title='Pandas Profiling Report'
  2. profile.to_file(outputfile="Titanic data profiling.html"
加速数据分析,这10个小技巧好用到哭

更多详细信息和示例:https://pandas-profiling.github.io/pandas-profiling/docs/

2. 增强Pandas plots的互动性

Pandas有一个内置的 .plot() 功能,是数据框架类的一部分。然而,该功能不尽人意的地方在于呈现的可视化不是交互式的。相反,用pandas.DataFrame.plot()功能绘制图表就很容易。如果不对代码做重大修改,可以绘制出像熊猫图表一样的交互式图表吗?答案是可以的,Cufflinks库能够帮助做到这一点。

Cufflinks库将plotly的功能与Pandas的灵活性结合起来,使绘图简单化。现在就来看看如何安装这个库,并让它在pandas上运行。

安装

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

使用

  1. #importing Pandas  
  2. import pandas as pd 
  3. #importing plotly and cufflinks in offline mode 
  4. import cufflinks as cf 
  5. import plotly.offline 
  6. cf.go_offline() 
  7. cf.set_config_file(offline=False, world_readable=True

现在来看看大数据集的魔力

  1. df.iplot() 
加速数据分析,这10个小技巧好用到哭
加速数据分析,这10个小技巧好用到哭
  1. df.iplot() 与 df.plot() 

右边的可视化显示的是静态图表,而左边则是交互式图表,更为详细。这些图表在语法上都没有作出重大改变。

更多示例:https://github.com/santosjorge/cufflinks/blob/master/Cufflinks%20Tutorial%20-%20Pandas%20Like.ipynb

3. 少许魔法

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

加速数据分析,这10个小技巧好用到哭

所有可用魔法功能的清单

魔法命令有两种:行魔法,即以单个%字符为前缀,在单行输入上操作;单元格魔法,即以%%为前缀,在多行输入上操作。如果设置为1,则无需键入初始%即可调用魔术功能。

一起来看看两种魔法命令在常见数据分析任务中的应用:

  • % pastebin

%pastebin将代码上传到Pastebin并返回url地址。Pastebin属于在线内容托管服务,在这里,用户可以存储如源代码片段等纯文本,然后与他人共享网址。事实上,Github的要点也类似于pastebin,尽管存在版权限制。

考虑一个包含以下内容的python脚本file.py:

  1. #file.py 
  2. def foo(x): 
  3.  return x 

在Jupyter笔记本中使用 %pastebin会生成一个pastebin网址。

加速数据分析,这10个小技巧好用到哭
  • %matplotlib notebook

%matplotlib inline功能用于渲染Jupyter笔记本中的静态matplotlib图。尝试用notebook替换inline,以轻松获得可变焦、可调整大小的绘图。请确保在导入matplotlib库之前启用该功能。

加速数据分析,这10个小技巧好用到哭

%matplotlib inline 与 %matplotlib notebook

  • %run

%run 功能在笔记本内部运行python脚本。

  1. %run file.py 
  • %%writefile

%%writefile 将单元格的内容写入文件。通过该功能,代码将被写入一个名为foo.py的文件,并保存在当前目录中。

加速数据分析,这10个小技巧好用到哭
  • %%latex

%%latex 功能将单元格内容呈现为 LaTeX格式。这对于在单元格中编写数学公式和方程很有用。

加速数据分析,这10个小技巧好用到哭

4. 查找并消除错误

Interactive debugger也是一个有魔力的功能,但本文对它进行单独分类。如果在运行代码单元时出现异常,用户可以在新的一行中键入 %debug 并恢复运行。这一操作将打开一个交互式调试环境,找到发生异常的位置。用户还可以检查程序中分配的变量值,并在此执行操作。点击q即可退出调试。

加速数据分析,这10个小技巧好用到哭

5. 美观排版

如果想建立美观的数据结构,pprint是一个直接的模块,在打印字典或JSON数据时特别有用。下面来看一个使用print 和 pprint 来显示输出的例子。

加速数据分析,这10个小技巧好用到哭

6. 笔记突出显示

可以在Jupyter笔记本中使用alert/Note boxes来标记一些重要的或需要突出的内容。笔记的颜色取决于突出内容的重要程度。用户只需在需要突出显示的单元格中添加以下任意或所有代码。

  • 蓝色笔记框:信息
  1. <div class="alert alert-block alert-info"
  2. <b>Tip:</b> Use blue boxes (alert-info) for tips and notes.  
  3. If it’s a note, you don’t have to include the word “Note”. 
  4. </div> 
加速数据分析,这10个小技巧好用到哭
  • 黄色笔记框:警告
加速数据分析,这10个小技巧好用到哭
  • 绿色笔记框:完成
  1. <div class="alert alert-block alert-success"
  2. Use green box only when necessary like to display links to related content. 
  3. </div> 
加速数据分析,这10个小技巧好用到哭
  • 红色笔记框:危险
  1. <div class="alert alert-block alert-danger"
  2. It is good to avoid red boxes but can be used to alert users to not delete some important part of code etc.  
  3. </div> 
加速数据分析,这10个小技巧好用到哭

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

例如包含以下代码行的Jupyter笔记本单元格:

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

只打印最后一个输出是单元格的正常属性,而其他输出,则需要添加 print()功能。事实证明,只要在笔记本顶部添加以下代码段,就可以打印所有的输出内容。

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

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

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

输入以下代码可恢复到初始设置:

  1. InteractiveShell.ast_node_interactivity = "last_expr" 

8. 使用‘i’选项运行python脚本

从命令行运行python脚本的一种典型方式是:python hello.py。但是,如果在运行相同脚本时添加一个额外的-i,例如python -i hello.py,则会带来更多优势。具体操作如下:

  • 首先,一旦程序结束,python就不会退出解释程序。此时,用户可以检查变量值和程序中定义功能。
加速数据分析,这10个小技巧好用到哭
  • 其次,因为用户仍然在解释程序中,所以可以通过以下方式轻松调用python调试器:
  1. import pdb 
  2. pdb.pm() 

该方式可帮助用户找到异常发生的位置,然后可以处理代码。

加速数据分析,这10个小技巧好用到哭

漏洞的原始来源

9. 自动注释代码

Ctrl/Cmd + / 可以自动注释掉单元格中选定的行。再次点击该组合键可以取消同一行代码的注释。

加速数据分析,这10个小技巧好用到哭

相关推荐