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

选自TowardsDataScience  作者: Perter Nistrup
机器之心编译  参与: 魔王
如何提升数据分析能力?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() 这一简单方法的结果:

640?wx_fmt=jpeg

使用该工具只需安装和导入 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:

640?wx_fmt=png

有点无聊?

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

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

640?wx_fmt=png
效果好多了!

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

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

640?wx_fmt=png

需要做大量数据可视化工作的朋友,可以阅读 Cufflinks 和 Plotly 的文档,发现更多方法。
  • Cufflinks 文档:https://plot.ly/ipython-notebooks/cufflinks/

  • Plotly 文档:https://plot.ly/

3. IPython 魔术命令

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

%lsmagic: 找出全部命令

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

640?wx_fmt=png

%debug: 交互式 debug

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

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

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

640?wx_fmt=gif

上图中发生了什么?

  1. 我们有一个函数,它以列表为输入,并对所有的偶数取平方值。

  2. 我们运行函数,但是出了些问题。但是我们并不知道怎么回事!

  3. 对该函数使用%debug 命令。

  4. 让调试器告诉我们 x 和 type(x) 的值。

  5. 问题显而易见:我们把'6'作为字符串输入到函数中了!

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

%store: 在 notebook 之间传递变量

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

640?wx_fmt=gif

  • %store [variable] 存储变量。

  • %store -r [variable] 读取/检索存储变量。

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

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

640?wx_fmt=gif


%%time: 计时魔法命令

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

640?wx_fmt=png

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

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

640?wx_fmt=png

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

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

640?wx_fmt=gif


当你想以 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 InteractiveShell	
InteractiveShell.ast_node_interactivity = "all"

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

640?wx_fmt=png

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

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

conda install -c conda-forge rise

或者
pip install RISE

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

640?wx_fmt=png

转自: 机器之心 公众号;

「END」

声明:本号内容部分来自互联网,转载请注明原文链接和作者,如有侵权或出处有误请联系我们。

合作请加qq:365242293  


更多相关知识请回复:“ 月光宝盒 ”;

数据分析(ID : ecshujufenxi )互联网科技与数据圈自己的微信,也是WeMedia自媒体联盟成员之一,WeMedia联盟覆盖5000万人群。

640?wx_fmt=png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/352344.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

推荐 :一文带你了解协同过滤的前世今生

导读 协同过滤&#xff1a;在推荐领域中&#xff0c;让人耳熟能详、影响最大、应用最广泛的模型莫过于协同过滤。2003年&#xff0c;Amazon发表的论文[1]让协同过滤成为今后很长时间的研究热点和业界主流的推荐模型。 什么是协同过滤 协同过滤是基于用户行为设计的推荐算法&…

【Python爬虫】:使用高性能异步多进程爬虫获取豆瓣电影Top250

在本篇博文当中&#xff0c;将会教会大家如何使用高性能爬虫&#xff0c;快速爬取并解析页面当中的信息。一般情况下&#xff0c;如果我们请求网页的次数太多&#xff0c;每次都要发出一次请求&#xff0c;进行串行执行的话&#xff0c;那么请求将会占用我们大量的时间&#xf…

爬虫之静态页面抓取

静态网页抓取 在网络爬虫中&#xff0c;静态网页的数据比较容易获取&#xff0c;因为其所有数据都呈现在网页的HTML代码中 在静态网页抓取中&#xff0c;Python中的Requests库能够容易实现这个需求 通过requests发起Http请求 import requests url"http://www.santostan…

京东常用的API接口

今天分享的是京东平台API&#xff0c;关键字搜索接口。 点击测试​​​​​​​ 万邦京东按关键字搜索商品 API 返回值说明&#xff1a; { "items": { "keyword": "游戏", "page": 1, "real_total…

请问,你了解推荐系统吗

你知道吗 推荐系统&#xff1a;解决问题&#xff1a;系统环节&#xff1a;召回路径&#xff1a;推荐架构&#xff1a;通用技术架构&#xff1a;实现推荐&#xff1a;基于内容的推荐系统【Content-Based Recommendations】余弦相似度&#xff1a;示例计算&#xff1a;余弦相似度…

一条挨踢老狗的 2017 年终总结

2018年是中国的狗年&#xff0c;狗常常象征着忠诚&#xff0c;有忠贞不渝的意义&#xff0c;有时也代表财富。一条常年战斗在挨踢界&#xff0c;对挨踢事业忠贞不渝的老狗今天来回顾2017、展望2018。 作为一条对挨踢事业忠贞不渝的老狗&#xff0c;理所当然是热爱这个工作的&a…

Java面对对象三大特性之封装】

目录 1.封装2. 访问权限2.1 public权限2.2private权限2.3 默认权限 3.包的定义4. static成员5.静态成员初始化6.对象的打印 1.封装 封装&#xff1a;就是将数据和操作数据的方法进行结合&#xff0c;隐藏对象的属性和方法&#xff0c;仅对外实现一些接口和对象进行交互 其实就是…

Storm入门之第6章一个实际的例子

本文翻译自《Getting Started With Storm》译者&#xff1a;吴京润 编辑&#xff1a;郭蕾 方腾飞 本章要阐述一个典型的网络分析解决方案&#xff0c;而这类问题通常利用Hadoop批处理作为解决方案。与Hadoop不同的是&#xff0c;基于Storm的方案会实时输出结果。 我们的这个…

20222817 2022-2023-2《网络攻防实践》第十一次作业

目录 1.实践内容 2.实践过程 3 学习中遇到的问题及解决 4 实践总结 1.实践内容 1.Web浏览器渗透攻击实验 任务&#xff1a;使用攻击机和Windows靶机进行浏览器渗透攻击实验&#xff0c;体验网页木马构造及实施浏览器攻击的实际过程。 2.取证分析实践—网页木马攻击场景分析…

【Storm入门指南】第六章 真实示例

本章将演示一个典型的网页分析方案&#xff0c;通常使用 Hadoop 批量作业来解决的问题。不像 Hadoop 的实现方案&#xff0c;基于 Storm 的解决方案实时刷新并呈现结果。 示例有三个主要部分&#xff08;如图6.1所示&#xff09;&#xff1a; 一个 Node.js 的web应用&#xff0…

Storm 实时分析系统详解

一、Storm 概述 1、Storm 简介 Storm 是一个分布式的,可靠的,容错的数据流处理系统。它会把工作任务委托给不同类型的组件,每个组件负责处理一项简单特定的任务。Storm 集群的输入流由一个被称作 spout 的组件管理,spout 把数据传递给 bolt, bolt 要么把数据保存到某种存…

Storm 的一个案例

本章要阐述一个典型的网络分析解决方案&#xff0c;而这类问题通常利用Hadoop批处理作为解决方案。与Hadoop不同的是&#xff0c;基于Storm的方案会实时输出结果。 我们的这个例子有三个主要组件&#xff08;见图6-1&#xff09; 一个基于Node.js的web应用&#xff0c;用于测试…

getting start with storm 翻译 第六章 part-4

转载请注明出处&#xff1a;http://blog.csdn.net/lonelytrooper/article/details/9982967 Redis服务器 Redis是一套高级的用于持久化的内存KeyValue存储系统(见http://redis.io)。使用它来存储下述信息&#xff1a; ﹒产品信息&#xff0c;用于服务网站。 ﹒用户导航队列…

Phpstorm调试详解(包含命令行以及浏览器)

2019独角兽企业重金招聘Python工程师标准>>> 运行环境 PHP版本&#xff1a;5.5.12 Phpstorm : 9.0.2 xdebug : 2.2.5 下载地址&#xff0c;请下载与当前PHP版本对应的版本 系统平台&#xff1a;Windows 7 一 &#xff0c;要先给php安装xdebug扩展 1&#xff0c;…

windows核心编程之进程(3)

获取系统版本的函数: GetVersion返回一个DWORD类型的值&#xff0c;高子返回MS-DOS版本号&#xff0c;低字返回windows版本号 本来按照逻辑来说应该是低字的高字节返回windows的主版本号&#xff0c;低字节返回此版本号&#xff0c;但是编写该代码程序员犯了一个小错误&#…

2023CCPC河南省赛 VP记录

感觉现在的xcpc&#xff0c;风格越来越像CF&#xff0c;不是很喜欢&#xff0c;还是更喜欢多点算法题的比赛 VP银了&#xff0c;VP银也是银 感觉省赛都是思维题&#xff0c;几乎没有算法题&#xff0c;感觉像打了场大型的CF B题很简单没开出来&#xff0c;一直搞到最后&…

大学计算机专业 学习Python学习路线图(最新版)

这是我刚开始学习python时的一套学习路线&#xff0c;从入门到上手。&#xff08;不敢说精通&#xff0c;哈哈~&#xff09; 希望对大家有帮助哈~ 大家需要高清得完整python学习路线可以 一、Python入门、环境搭建、变量、数据类型 二、数据库编程 三、Linux系统 四、网页编…

哪些手机待办事项软件可以记录备忘并设置提醒?

当下手机软件的种类那么多&#xff0c;为什么有那么多人使用手机待办事项软件呢&#xff1f;原因很简单&#xff0c;因为这类软件可以记录备忘并设置提醒&#xff0c;非常适合哪些喜欢提前规划待办事项的人使用。但是&#xff0c;面对如此多的手机待办事项软件&#xff0c;具体…

【HTML】第 2 节 - HTML 标签

欢迎来到博主 Apeiron 的博客&#xff0c;祝您旅程愉快 &#xff01; 时止则止&#xff0c;时行则行。动静不失其时&#xff0c;其道光明。 目录 1、缘起 2、标题标签 3、段落标签 4、文本格式化标签 5、图像标签 5.1、基本作用 5.2、属性 6、超链接标签 7、音频标…

Vivado下时序逻辑模块的仿真

文章目录 D触发器两级D触发器带异步复位的D触发器带异步复位和同步置数的D触发器移位寄存器单口RAM伪双口RAM真双口RAM单口ROM 组合逻辑电路在逻辑功能上特点是任意时刻的输出仅仅取决于当前时刻的输入&#xff0c;与电路原来的状态无关。 时序逻辑在逻辑功能上的特点是任意时刻…