7个Python特殊小窍门帮你做数据分析

本文参考原文-http://bjbsair.com/2020-03-22/tech-info/2135.html
本文介绍Peter Nistrup 根据自身经验列出了 7 个有用工具来提升数据分析能力。

本文列举了一些提升或加速日常数据分析工作的技巧,包括:

  1. Pandas Profiling

  2. 使用 Cufflinks 和 Plotly 绘制 Pandas 数据

  3. IPython 魔术命令

  4. Jupyter 中的格式编排

  5. Jupyter 快捷键

  6. 在 Jupyter(或 IPython)中使一个单元同时有多个输出

  7. 为 Jupyter Notebook 即时创建幻灯片

1. Pandas Profiling

该工具效果明显。下图展示了调用 df.profile_report() 这一简单方法的结果:

7个Python特殊技巧,助力你的数据分析工作之路

使用该工具只需安装和导入 Pandas Profiling 包。

本文不再详述这一工具,如欲了解更多,请阅读:https://towardsdatascience.com/exploring-your-data-with-just-1-line-of-python-4b35ce21a82d

2. 使用 Cufflinks 和 Plotly 绘制 Pandas 数据

「经验丰富的」数据科学家或数据分析师大多对 matplotlib 和 pandas 很熟悉。也就是说,你只需调用 .plot() 方法,即可快速绘制简单的 pd.DataFrame 或 pd.Series:

7个Python特殊技巧,助力你的数据分析工作之路

有点无聊?

这已经很好了,不过是否可以绘制一个交互式、可缩放、可扩展的全景图呢?是时候让 Cufflinks* *出马了!(Cufflinks 基于 Plotly 做了进一步的包装。)

在环境中安装 Cufflinks,只需在终端中运行! pip install cufflinks --upgrade 即可。查看下图:

7个Python特殊技巧,助力你的数据分析工作之路

效果好多了!

注意,上图唯一改变的是 Cufflinks cf.go_offline() 的导入和设置,它将 .plot() 方法变为 .iplot()。

其他方法如 .scatter_matrix() 也可以提供非常棒的可视化结果:

7个Python特殊技巧,助力你的数据分析工作之路

需要做大量数据可视化工作的朋友,可以阅读 Cufflinks 和 Plotly 的文档,发现更多方法。

3. IPython 魔术命令

IPython 的「魔术」是 IPython 基于 Python 标准语法的一系列提升。魔术命令包括两种方法:行魔术命令(line magics):以 % 为前缀,在单个输入行上运行;单元格魔术命令(cell magics):以 %% 为前缀,在多个输入行上运行。下面列举了 IPython 魔术命令提供的一些有用功能:

%lsmagic:找出全部命令

如果你只记得一个魔术命令,那必须得是这一个。执行 %lsmagic 命令将提供所有可用魔术命令的列表:

7个Python特殊技巧,助力你的数据分析工作之路

%debug:交互式 debug

这可能是我最常使用的魔术命令了。

大部分数据科学家都遇到过这种情况:执行的代码块一直 break,你绝望地写了 20 个 print() 语句,想输出每个变量的内容。然后,当你最终修复问题后,你还得返回并再次删除所有 print() 语句。

不过以后再也不用这样了。遇到问题后只需执行 %debug 命令,即可执行想要运行的任意代码部分:

7个Python特殊技巧,助力你的数据分析工作之路

上图中发生了什么?

  1. 我们有一个函数,它以列表为输入,并对所有的偶数取平方值。
  2. 我们运行函数,但是出了些问题。但是我们并不知道怎么回事!
  3. 对该函数使用%debug 命令。
  4. 让调试器告诉我们 x 和 type(x) 的值。
  5. 问题显而易见:我们把'6'作为字符串输入到函数中了!

这对于更复杂的函数非常有用。

%store:在 notebook 之间传递变量

这个命令也很酷。假设你花了一些时间清洗 notebook 中的数据,现在你想在另一个 notebook 中测试一些功能,那么你是在同一个 notebook 中实现该功能,还是保存数据并在另一个 notebook 中加载数据呢?使用%store 命令后,这些操作都不需要!该命令将存储变量,你可以在其他任意 notebook 中检索该变量:

7个Python特殊技巧,助力你的数据分析工作之路
  • %store [variable] 存储变量。
  • %store -r [variable] 读取/检索存储变量。

%who:列出所有全局变量。

你是否遇到过,为变量赋值后却忘记变量名的情况?或者不小心删掉了负责为变量赋值的单元格?使用%who 命令,你可以得到所有全局变量的列表:

7个Python特殊技巧,助力你的数据分析工作之路

%%time:计时魔法命令

使用该命令可以获取所有计时信息。只需对任意可执行代码应用%%time 命令,你就可以得到如下输出:

7个Python特殊技巧,助力你的数据分析工作之路

%%writefile:向文件写入单元格内容

在 notebook 中写复杂函数或类,且想将其保存到专属文件中时,该魔法命令非常有用。只需为函数或类的单元格添加 %%writefile 前缀和想要保存到的文件名即可:

7个Python特殊技巧,助力你的数据分析工作之路

如上所示,我们可以将创建的函数保存到 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>

下图展示了它们的运行过程:

7个Python特殊技巧,助力你的数据分析工作之路

当你想以 Notebook 格式呈现一些发现时,这非常有用!

5. Jupyter 快捷键

想了解和学习键盘快捷键,你可以使用命令面板:Ctrl + Shift + P,获取 notebook 所有功能的列表。下面选取了几个最基础的命令:

  • Esc:进入命令模式。在命令模式内,你可以使用方向键在 notebook 内进行导航。

在命令模式内:

  • A 和 B:在当前单元格上方(Above)或下方(Below)插入新的单元格。
  • M:当前单元格转入 Markdown 状态。
  • Y:当前单元格转入 code 状态。
  • D,D:删除当前单元格。
  • Enter:当前单元格回到编辑模式。

在编辑模式内:

  • Shift + Tab:为你在当前单元格中键入的对象提供文档字符串(文档),持续使用该快捷键,可循环使用文档模式。
  • Ctrl + Shift + -:在光标所在处分割当前单元格。
  • Esc + F:查找并替换代码(不包括输出)。
  • Esc + O:切换单元格输出。

选择多个单元格:

  • Shift + Down 和 Shift + Up:选中下方或上方的单元格。
  • Shift + M:合并选中单元格。

注意,选中多个单元格后,你可以批量执行删除/复制/剪切/粘贴/运行操作。

6. 在 Jupyter(或 IPython)中使一个单元同时有多个输出

想展示 pandas DataFrame 的 .head() 和 .tail(),但由于创建运行 .tail() 方法的额外代码单元过于麻烦而不得不中途放弃,你是否有过这样的经历?现在不用怕了,你可以使用以下代码行展示你想展示的输出:

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

下图展现了多个输出的结果:

7个Python特殊技巧,助力你的数据分析工作之路

7. 为 Jupyter Notebook 即时创建幻灯片

使用 RISE,你可以仅通过一次按键将 Jupyter Notebook 即时转变为幻灯片。而且 notebook 仍然处于活跃状态,你可以在展示幻灯片的同时执行实时编码!

要想使用该工具,你只需通过 conda 或 pip 安装 RISE 即可。

conda install -c conda-forge rise

或者

pip install RISE

现在,你可以点击新按钮,为 notebook 创建不错的幻灯片了:

7个Python特殊技巧,助力你的数据分析工作之路
本文参考原文-http://bjbsair.com/2020-03-22/tech-info/2135/
本文介绍Peter Nistrup 根据自身经验列出了 7 个有用工具来提升数据分析能力。

本文列举了一些提升或加速日常数据分析工作的技巧,包括:

  1. Pandas Profiling

  2. 使用 Cufflinks 和 Plotly 绘制 Pandas 数据

  3. IPython 魔术命令

  4. Jupyter 中的格式编排

  5. Jupyter 快捷键

  6. 在 Jupyter(或 IPython)中使一个单元同时有多个输出

  7. 为 Jupyter Notebook 即时创建幻灯片

1. Pandas Profiling

该工具效果明显。下图展示了调用 df.profile_report() 这一简单方法的结果:

7个Python特殊技巧,助力你的数据分析工作之路

使用该工具只需安装和导入 Pandas Profiling 包。

本文不再详述这一工具,如欲了解更多,请阅读:https://towardsdatascience.com/exploring-your-data-with-just-1-line-of-python-4b35ce21a82d

2. 使用 Cufflinks 和 Plotly 绘制 Pandas 数据

「经验丰富的」数据科学家或数据分析师大多对 matplotlib 和 pandas 很熟悉。也就是说,你只需调用 .plot() 方法,即可快速绘制简单的 pd.DataFrame 或 pd.Series:

7个Python特殊技巧,助力你的数据分析工作之路

有点无聊?

这已经很好了,不过是否可以绘制一个交互式、可缩放、可扩展的全景图呢?是时候让 Cufflinks* *出马了!(Cufflinks 基于 Plotly 做了进一步的包装。)

在环境中安装 Cufflinks,只需在终端中运行! pip install cufflinks --upgrade 即可。查看下图:

7个Python特殊技巧,助力你的数据分析工作之路

效果好多了!

注意,上图唯一改变的是 Cufflinks cf.go_offline() 的导入和设置,它将 .plot() 方法变为 .iplot()。

其他方法如 .scatter_matrix() 也可以提供非常棒的可视化结果:

7个Python特殊技巧,助力你的数据分析工作之路

需要做大量数据可视化工作的朋友,可以阅读 Cufflinks 和 Plotly 的文档,发现更多方法。

3. IPython 魔术命令

IPython 的「魔术」是 IPython 基于 Python 标准语法的一系列提升。魔术命令包括两种方法:行魔术命令(line magics):以 % 为前缀,在单个输入行上运行;单元格魔术命令(cell magics):以 %% 为前缀,在多个输入行上运行。下面列举了 IPython 魔术命令提供的一些有用功能:

%lsmagic:找出全部命令

如果你只记得一个魔术命令,那必须得是这一个。执行 %lsmagic 命令将提供所有可用魔术命令的列表:

7个Python特殊技巧,助力你的数据分析工作之路

%debug:交互式 debug

这可能是我最常使用的魔术命令了。

大部分数据科学家都遇到过这种情况:执行的代码块一直 break,你绝望地写了 20 个 print() 语句,想输出每个变量的内容。然后,当你最终修复问题后,你还得返回并再次删除所有 print() 语句。

不过以后再也不用这样了。遇到问题后只需执行 %debug 命令,即可执行想要运行的任意代码部分:

7个Python特殊技巧,助力你的数据分析工作之路

上图中发生了什么?

  1. 我们有一个函数,它以列表为输入,并对所有的偶数取平方值。
  2. 我们运行函数,但是出了些问题。但是我们并不知道怎么回事!
  3. 对该函数使用%debug 命令。
  4. 让调试器告诉我们 x 和 type(x) 的值。
  5. 问题显而易见:我们把'6'作为字符串输入到函数中了!

这对于更复杂的函数非常有用。

%store:在 notebook 之间传递变量

这个命令也很酷。假设你花了一些时间清洗 notebook 中的数据,现在你想在另一个 notebook 中测试一些功能,那么你是在同一个 notebook 中实现该功能,还是保存数据并在另一个 notebook 中加载数据呢?使用%store 命令后,这些操作都不需要!该命令将存储变量,你可以在其他任意 notebook 中检索该变量:

7个Python特殊技巧,助力你的数据分析工作之路
  • %store [variable] 存储变量。
  • %store -r [variable] 读取/检索存储变量。

%who:列出所有全局变量。

你是否遇到过,为变量赋值后却忘记变量名的情况?或者不小心删掉了负责为变量赋值的单元格?使用%who 命令,你可以得到所有全局变量的列表:

7个Python特殊技巧,助力你的数据分析工作之路

%%time:计时魔法命令

使用该命令可以获取所有计时信息。只需对任意可执行代码应用%%time 命令,你就可以得到如下输出:

7个Python特殊技巧,助力你的数据分析工作之路

%%writefile:向文件写入单元格内容

在 notebook 中写复杂函数或类,且想将其保存到专属文件中时,该魔法命令非常有用。只需为函数或类的单元格添加 %%writefile 前缀和想要保存到的文件名即可:

7个Python特殊技巧,助力你的数据分析工作之路

如上所示,我们可以将创建的函数保存到 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>

下图展示了它们的运行过程:

7个Python特殊技巧,助力你的数据分析工作之路

当你想以 Notebook 格式呈现一些发现时,这非常有用!

5. Jupyter 快捷键

想了解和学习键盘快捷键,你可以使用命令面板:Ctrl + Shift + P,获取 notebook 所有功能的列表。下面选取了几个最基础的命令:

  • Esc:进入命令模式。在命令模式内,你可以使用方向键在 notebook 内进行导航。

在命令模式内:

  • A 和 B:在当前单元格上方(Above)或下方(Below)插入新的单元格。
  • M:当前单元格转入 Markdown 状态。
  • Y:当前单元格转入 code 状态。
  • D,D:删除当前单元格。
  • Enter:当前单元格回到编辑模式。

在编辑模式内:

  • Shift + Tab:为你在当前单元格中键入的对象提供文档字符串(文档),持续使用该快捷键,可循环使用文档模式。
  • Ctrl + Shift + -:在光标所在处分割当前单元格。
  • Esc + F:查找并替换代码(不包括输出)。
  • Esc + O:切换单元格输出。

选择多个单元格:

  • Shift + Down 和 Shift + Up:选中下方或上方的单元格。
  • Shift + M:合并选中单元格。

注意,选中多个单元格后,你可以批量执行删除/复制/剪切/粘贴/运行操作。

6. 在 Jupyter(或 IPython)中使一个单元同时有多个输出

想展示 pandas DataFrame 的 .head() 和 .tail(),但由于创建运行 .tail() 方法的额外代码单元过于麻烦而不得不中途放弃,你是否有过这样的经历?现在不用怕了,你可以使用以下代码行展示你想展示的输出:

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

下图展现了多个输出的结果:

7个Python特殊技巧,助力你的数据分析工作之路

7. 为 Jupyter Notebook 即时创建幻灯片

使用 RISE,你可以仅通过一次按键将 Jupyter Notebook 即时转变为幻灯片。而且 notebook 仍然处于活跃状态,你可以在展示幻灯片的同时执行实时编码!

要想使用该工具,你只需通过 conda 或 pip 安装 RISE 即可。

conda install -c conda-forge rise

或者

pip install RISE

现在,你可以点击新按钮,为 notebook 创建不错的幻灯片了:

7个Python特殊技巧,助力你的数据分析工作之路
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,980评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,178评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,868评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,498评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,492评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,521评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,910评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,569评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,793评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,559评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,639评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,342评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,931评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,904评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,144评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,833评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,350评论 2 342

推荐阅读更多精彩内容