深圳幻海软件技术有限公司 欢迎您!

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

2023-02-27

划重点!!!本文列举了一些使用Python和JupyterNotebook的技巧,讨论了如何轻松分析数据以及如何进行格式化编码、输出和调试等操作。在编程领域,有时一个小技巧就能节省大量时间,甚至能起到救命的效果。这些“必杀技”往往能在未来的数据分析中发挥重大作用。1.分析Pandas数据框架Prof

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

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

1. 分析Pandas数据框架

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

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


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

安装

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

使用

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

#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) 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

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

使用

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

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

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


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

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

 


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

2. 增强Pandas plots的互动性

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

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

安装

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

使用

#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
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

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

df.iplot() 
  • 1.

 

 

 


 

 

df.iplot() 与 df.plot() 
  • 1.

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

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

3. 少许魔法

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


所有可用魔法功能的清单

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

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

  • % pastebin

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

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

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

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


  • %matplotlib notebook

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


%matplotlib inline 与 %matplotlib notebook

  • %run

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

%run file.py 
  • 1.
  • %%writefile

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


  • %%latex

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


4. 查找并消除错误

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


5. 美观排版

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


6. 笔记突出显示

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

  • 蓝色笔记框:信息
<div class="alert alert-block alert-info"
<b>Tip:</b> Use blue boxes (alert-info) for tips and notes.  
If it’s a note, you don’t have to include the word “Note”. 
</div> 
  • 1.
  • 2.
  • 3.
  • 4.

 


  • 黄色笔记框:警告
Example: Yellow Boxes are generally used to include additional examples or mathematical formulas.

  • 绿色笔记框:完成
<div class="alert alert-block alert-success"
Use green box only when necessary like to display links to related content. 
</div> 
  • 1.
  • 2.
  • 3.

 


  • 红色笔记框:危险
<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> 
  • 1.
  • 2.
  • 3.

 


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

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

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

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

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

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

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

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

InteractiveShell.ast_node_interactivity = "last_expr" 
  • 1.

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

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

  • 首先,一旦程序结束,python就不会退出解释程序。此时,用户可以检查变量值和程序中定义功能。

  • 其次,因为用户仍然在解释程序中,所以可以通过以下方式轻松调用python调试器:
import pdb 
pdb.pm() 
  • 1.
  • 2.

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


漏洞的原始来源

9. 自动注释代码

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


10. 撤销删除操作

你曾经有不小心删除过笔记本中的单元格吗?如果有,那么这里有一个快捷键可以撤销删除操作。

  • 如果删除了单元格的内容,可以通过点击CTRL/CMD+Z来轻松恢复它
  • 如果需要恢复整个删除的单元格,可以点击ESC+Z或者 EDIT > Undo Delete Cells