站长之家首页 > 经验 > Python最新资讯 > 正文

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

2019-10-29 13:48 · 稿源:机器之心公众号

黑客 代码 安全漏洞 程序员

声明:本文来自于微信公众号机器之心(ID:almosthuman2014),作者: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() 这一简单方法的结果:

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

有点无聊?

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

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

效果好多了!

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

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

需要做大量数据可视化工作的朋友,可以阅读 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 命令将提供所有可用魔术命令的列表:

%debug:交互式 debug

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

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

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

上图中发生了什么?

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

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

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

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

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

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

%store:在 notebook 之间传递变量

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

  • %store [variable] 存储变量。

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

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

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

%%time:计时魔法命令

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

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

在 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:在当前单元格上方(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. 为 Jupyter Notebook 即时创建幻灯片

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

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

            conda install -c conda-forge rise

            或者

              pip install RISE

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

              • 大家在看
              • 相关推荐
              • 江苏天鼎证券有限公司对社融数据分析

                2 月社融数据分析:企业短贷支撑个贷拖累明显 核心观点:随着疫情基本得到控制,企业陆续复工,居民的消费、购房需求将逐渐恢复;财政发力下,企业中长期信贷、政府债不会弱;资管新规的过渡期可能延长, 委贷+信托也将对社融增速有积极作用。 事件 2 月社融结构分析:信贷平稳,拖累 2 月社融主要是政府债、表外融资。 1、在防疫信贷对冲下,新增信贷较去年同期缩量不大:2 月新增信贷 7202 亿,新增规模较去年同期仅下降 439 亿?

              • Mellanox 将收购 Titan IC,领跑安全和数据分析行业

                Titan IC是世界领先的网络智能技术开发商,通过此次并购,将在网络安全和大数据分析中实现顶尖网络技术和深度数据包检测加速技术的完美整合 中国, 北京 – 2020 年 3 月 5 日 – Mellanox Technologies, Ltd.(纳斯达克股票代码:MLNX)是面向数据中心服务器和存储系统的高性能、端到端智能互连解决方案的领先供应商,该公司宣布已达成最终协议,收购私人控股的网络智能 (NI,Network Intelligence) 和安全技术领先开发商 Titan I

              • 2020年2月公众号行业榜单数据分析

                本次榜单分析以西瓜数据发布的 2020 年 2 月公众号行业排行榜为立足点进行数据分析,发布的榜单从公众号发文次数、发文篇数、总阅读数、平均阅读数、平均点赞数、平均留言数等方面进行数据展示。

              • 二月份运营数据分析:三大运营商重心转移 5G成竞争主战场

                ​受疫情影响, 2020 年开年,三大运营商创下4G商用以来最差开局,并将这一糟糕的势头延续到了 2 月份。运营商移动用户和4G用户数据欠佳,宽带用户增长放缓。但是, 2 月份是值得被通信行业铭记的月份,因为从这个月开始,中国电信不再公布4G用户数,转而开始公布5G数据。而此前,中国移动也已经开始公布5G数据。一方谢幕,一方登台,属于5G的时代真正开始了!

              • 仁和ERP系统对企业运营数据分析

                数据信息化时代,企业生存发展之本就是数据。数据化管理是企业的核心,从企业发展的长远角度来看,为未来企业更好的发展,就必须有安全的数据。企业选一款适合企业运营模式的ERP系统是关键。仁和ERP系统,首家硬软件结合的系统软件,服务器自带LINUX系统,以B/S架构采用JAVA高级语言开发,相比其他软件,产品功能全面,简单易用,属于ERP级别,功能模块化设置,更适合网络化运行操作,有效解决了企业数据运营不稳定、易丢失等现象?

              • 数据竞赛白皮书》:各地政府积极举办数据竞赛的深度分析

                数据竞赛是指在以真实业务问题为导向,聚合广泛的、跨学科的数据人才的参与,利用数据研发算法模型、探索解决方案的新型研发模式。放眼中国市场,数据竞赛自 2014 年萌芽以来,数量每年以翻倍之势增加,主导者不乏权威的科研机构与高校,亦有来自各行各业的领军企业。身担城市管理与民生重任的政务机构也在“大众创业、万众创新”的政策驱动下,开始意识到数据的力量,牵头组织了多场大型数据竞赛。在“大众创业、万众创新”的号召

              • 抗击新冠疫情,叮当码推出公益Python编程培训助力“停课不停学”

                2020 年 2 月,一个不平凡的月份。新冠疫情肆虐蔓延,各行业延迟复工,学校延期开学,各级教育主管部门陆续发布非常时期应对政策,暂停一切线下形式的校外培训辅导,积极响应教育部“停课不停教、停课不停学”的号召。 在这个非常时期,叮当码人工智能心系疫情的发展,在 2 月初迅速推出“特别行动计划”,面向全国中小学校在疫情期间免费开放教学平台、针对广大教师推出“停课不停学,师培送到家”的公益活动、为中小学生搭建起P

              • RedMonk 2020 年 Q1 编程语言排行:Python 冲进前二,Dart 值得关注

                编程语言排行榜通过追踪编程语言在 GitHub 和 Stack Overflow 上的代码使用情况与讨论数量,统计分析后进行排序,其旨在深入了解潜在的语言采用趋势。该榜单一年发布两次,这是今年第一份榜单,下一次榜单将于 6 月份,即第三季度编程语言排行。

              • 攻陷朋友圈的8.9元Python小课,有哪些利用“人性”的新套路?

                ​记得有那么一段时间,我经常会在朋友圈刷到同一条广告。神奇的是,几乎我所有的好友都会跑来这条广告底下点赞或评论,评论区异常火爆,滑屏半天都滑不到底。

              • 藏身代码背后的战疫

                为了防控疫情,许多小区实行封闭管理,居民足不出户,卖菜需求在线上爆发。步步高超市虽有到家业务,但此前模式是以门店为中心,覆盖门店半径三公里内的客户,第三方提供配送。特殊时期,原有模式存在覆盖面窄、配送成本高且运力不足的短板,提升到家业务覆盖范围和效率成为步步高面临的首要难题。

              • 看行业大数据分析2020年线下电竞门店应该如何“破与立”?

                当下,全球电子竞技产业已经进入了令人震惊的快速发展阶段。据Newzoo统计报告显示: 2019 年全球电子竞技市场规模达到了 10 亿美元以上,预计到 2025 年,全球电子竞技市场规模将增长至 25 亿美元左右。回首 2019 中国电子竞技:FPX夺冠S9 全球总决赛,各大电竞赛事收视率突破新高、各地政府相继出台电竞扶持政策、5G、VR等科技技术的快速迭代升级也对电竞行业的发展产生了巨大的推动力...尽管突发的疫情,让整个电竞行业面临了不?

              • iOS 14 代码泄露,外媒提前「发布」了今年的苹果新品

                考虑到最近各种大会宣布取消,看网上爆料的理由好像更充足了一些。根据外媒 9to5Mac 的报道,他们已经获取了泄露的 iOS 14 代码,里面不仅包含下一代 iOS 系统的新功能,还透露了一些苹果新产品的信息。

              • iOS 14 代码显示苹果新 iPad 将支持全系统鼠标光标

                代码显示,通过这一次软件升级,Mac 桌面体验中的大部分光标功能都将被引入 iOS 系统。有一个不同之处可能是,如果用户几秒钟未触碰外接鼠标或触控板,则光标指针会自动消失,这是为了保证 iPad 触控优先体验而作出的让步。当用户再次尝试移动光标时,指针会重新出现。

              • 腾讯首度披露开源协同成果 内部代码开源率提升至70%

                腾讯今日对外发布《腾讯研发大数据报告》,披露了2019 年公司在产品及技术研发方面的重要数据,据悉,这也是腾讯自技术委员会成立以来第一次主动对外披露研发相关大数据。

              • 自由软件基金会计划今年推出代码托管平台forge

                自由软件基金会(FSF)在博客宣布将在今年推出代码托管协作平台("forge")以支持自由软件的开发和基础设施的搭建。FSF称,基础设施对自由软件至关重要,但许多自由软件项目开发依赖的网站不公开源代码,有的甚至还会建议或鼓励用户使用私有软件。

              • GitHub移动端APP正式上线,可以在手机上阅读以及审查代码

                3月18日据机器之心消息,GitHub Mobile APP 正式上线了,在 iOS 和安卓端都可以免费下载使用。据官方介绍,移动 app 有四个主要的特性功能值得关注。用户可以在手机上浏览代码、管理工作日程和任务、评价其他工作和项目、合并和管理分支等。

              • iOS 14 代码显示苹果将发布「iPhone 9 / Plus」两款新机

                根据现在的报道,苹果或同步推出这款手机的 Plus 版本,屏幕尺寸为 5.5 英寸。iPhone 9 系列原计划今年三月正式发布。不过鉴于目前疫情的情况,苹果可能会取消发布会,选择直接在官网发布新品。

              • 纳米数据与OPPO达成数据合作,体育大数据玩转智能语音时代

                都市白领熬夜看球伤不起?NBA狂热粉苦于找不到直播链接?不常看球还想收获一手体育消息?现在开始,OPPO在体育大数据时代给你全方位感官快速无延迟的体育赛事阅览体验!在过去的十年间, 人工智能(AI)经历了快速发展,图形图像信息的处理与语音识别信息的处理都达到了前所未有的高度,无论是VR游戏还是智能机器人,人们的生活中人工智能的身影已无处不在。而作为人工智能的重要分支,AI语音技术,拿起你的手机,送上一句轻轻的问候,你

              • 误删数据库?华为云数据库多重防护硬核保证数据安全

                最近有个关于删库的帖子在网上引发热议,数据库的安全可靠性又一次成为很多企业管理者的担忧,数据库安全和备份机制再次成为行业关注的重点。那么,删库的悲剧是否可以避免?删了数据库可以恢复如初吗?安全没到位,再多功能体验也白搭数据安全是守护企业生命的一道有力防线,对企业未来发展至关重要。但绝大多数中小企业的自建数据库和一些云厂商的云数据库服务往往忽略了数据安全的重要性,自身安全防护机制不够严谨,容易面临各种

              • 微信宣布联合Facebook、WHO向全球征集代码 一同抗疫

                这些科技企业将邀请全球各地开发者,从 3 月 26 日开始,提交包括微信小程序在内的多种形式、有助于战“疫”的解决方案,一起参与一场“马拉松”开发比赛,用代码“战疫”。

              • 参与评论
              文明上网理性发言,请遵守新闻评论服务协议

              热文

              • 3 天
              • 7天