7件事,让你快速提高数据分析能力
想让自己的数据分析能力更上一层楼吗?本文可以帮助你形成一个“每日加速提升数据分析能力清单”。
#1: Pandas Profiling
这一工具的优点显而易见。以下动画是使用df.profile_report()这一简单方法的结果。请自行观看成果展示;
使用此工具只需安装和导入Pandas Profiling程序包即可。
#2: 使用Cufflinks和Plotly绘制Panda数据
大多所谓的“经验丰富的”数据科学家或数据分析师都对matplotlib和 pandas的协同非常熟悉。也就是说,他们可以通过使用.plot()函数快速绘制pd.DataFrame或pd.Series图像。
有点无聊是吧?
现在就好了。如何做一个交互型全景式可缩放的图像呢?Cufflinks 可以做到!(由 Plotly提供)
在系统中安装Cufflinks即可! 快速安装Cufflinks ——在自己最喜欢的终端进行更新即可。可以观看以下动画:
好多了!
注意,唯一会改变以上结果的是对Cufflinks输入并设置cf.go_offline() 函数。其余的只是把.plot()改成.iplot()。
其他像.scatter_matrix()这样的函数会带来不错的可视化图像:
酷毙了!
希望从事大量数据可视化工作的朋友都看一看有关的Cufflinks和Plotly内容,从中可以找到大量方法!
#3: IPython Magic Commands
IPython 的Magics本质上就是IPython堆叠在Python语法顶端的一系列加强功能。Magic commands有两种:其一为line magics,用%作为前缀表示,在一行输入的代码上运行;而 cell magics用%%作为前缀表示,在多行输入的代码上运行。以下是Magics的一些实用函数:
%lsmagic: 应有尽有。
不妨先尝试一些传统却好用的方法。如果只记得一条Magic Command,估计就是它了。执行%lsmagic将会出现所有可用的Magic Commands列表:
%debug: 交互程序调试
这估计是Magic Command使用频次最高的了。
大多人都试过:程序员执行一个代码块,而这个代码块一直出错。绝望中的程序员为了输出每一变量的内容,写下20 print()一类代码。然后当程序员终于修复了问题时,就不得不回过头删除所有列出的函数。
然而现在不用了!只需在遇到问题的时候执行%debug,就可以执行任意一部分代码了:
那么,总结一下以上内容:
1. 有一个函数,它将一个列表作为输入,并平方所有偶数。
2. 运行函数,某处出现错误。但无法找到错误。
3. 出错时把%debug命令标记到函数中。
4. 让调试程序显示x以及type(x)的值。
5. 由此找到了错误:6被当作了一行字符串!
可以想象,这一命令对更多更复杂的函数都大有用处!
%store: 在notebooks间互传变量
这个命令也很棒。首先说一说起因。程序员花时间清理了notebook中的一些数据,现在要测试另一notebook中的一些函数,因此既需要在同一notebook中实现函数功能,又要将其放到另一notebook中。用%store只要存储变量,并在任一notebook中检索即可:
%store [variable]存储变量。
%store -r [variable]阅读/检索已存储的变量。
%who: 罗列所有变量。
是否曾将某个值赋到一个变量上但忘了变量名称?是否不小心删除了赋值给变量的单元格?有了%who,就可以获得所有已赋值的变量:
%%time: 魔法定时。
有了这个命令,就可以获得一切所需的定时信息。只要将%%time应用到任何一段可执行的代码中,就可以获得如下输出:
24微秒。马马虎虎吧。
%%writefile: 将单元格内容编辑到文档。
这是本文的最后一个命令。当已经在notebook中写了一些复杂的函数或其类别,而想要将其从notebook中分离存到文件中去时,这个命令非常有用。只需为函数或其类别添加前置%%writefile,然后添加文件名储存即可:
如图所示,可以直接将创建的函数储存到 “utils.py” 文件夹中,以任意形式导入函数即可。在其他notebook中也是这样!(只要都在utils.py文件夹的同一个目录中)
#4: Jupyter中的绚丽格式
这个非常棒!基本上,Jupyter允许在markdown单元格中设置一些HTML / CSS格式。这是一些常用的:
忧郁而时髦的:
- <div class="alert alert-block alert-info">
- This is <b>fancy</b>!
- </div>
热血而稍显痛苦的:
- <div class="alert alert-block alert-danger">
- This is <b>baaaaad</b>!
- </div>
青涩而平静的:
- <div class="alert alert-block alert-success">
- This is <b>gooood</b>!
- </div>
此处为操作动画:
当要以notebook形式展示成果时,这些命令非常有用!
#5: Jupyter的快捷键
学习了键盘快捷键后,可以使用命令面板:Ctrl + Shift + P。这一操作可以直接唤起notebook中的函数列表。以下为部分基础命令:
Esc: 使用这一快捷键可直接切换到命令模式。这也是用方向键在notebook中导航的方式。
处于命令模式时:
• A和B:键入新单元格,上移([A]bove)或下移([B]elow)现有单元格。
• M: 将现有单元格markdown( [M]arkdown)。
• Y: 将现有单元格改为代码。
• D,D:确认删除 ([D]efinetly [D]eletes)现有单元格。
Enter: 对现有单元格进行返回编辑模式的操作。
处于编辑模式时:
• Shift + Tab:给键入现有单元格的目标显示Docstring (文档字符串) —— 长按快捷键切换文档模式。
• Ctrl + Shift + -:将现有单元格从光标停留处分离。
• Esc + F:查找替换不含输出的代码。
• Esc + O:切换单元格输出。
选择多个单元格:
• Shift + Down和Shift + Up: 向下或向上选择下一个单元格。个人认为可以使用演绎法进行判别。
• Shift + M: 合并选中的单元格。
• 请注意,一旦单元格被选中,则可以批量删除/复制/粘贴/运行。
#6: Jupyter (或IPython)每一单元格的多种输出
这个也不错。是否曾经想显示pandas数据帧(DataFrame)的the .head()和 the .tail()?但是却半途而废,因为要创建一个额外的代码单元格去运行.tail() ,这太麻烦了。别再害怕了,现在使用下列代码可以显示所有想要的输出:
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
看,多个输出的实力在此:
小菜一碟
#7:不断扩充自己的Jupyter notebook
使用 RISE,就可以将Jupyter Notebook陆续转化为幻灯片形式。最棒的是,notebook仍是可用的,所以可以实现文稿演示的同时实时编码!
根据个人系统环境,通过conda或者pip都可以安装 RISE以使用该工具:
conda install -c conda-forge rise
/// OR ///