划重点!!!本文列举了一些使用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.
- 黄色笔记框:警告
- 绿色笔记框:完成
<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