首页 > Python教程 > Python应用 > Python开发教程:7个技巧的助力你的数据分析工作之路

Python开发教程:7个技巧的助力你的数据分析工作之路

时间:2019-10-29    作者: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 创建不错的幻灯片了:

              相关推荐
              七星彩开奖时间登入
              Python教程:数据分析模块pandas用法详解
              我用Python纪念了那些被烂片收割的智商税!
              用Python爬取B站5000 条视频,揭秘为何千万人为它流泪!
              Python教程:如何用xlrd和xlwt库读和写Excel表格?
              Python安装MySQL-python:EnvironmentError的解决办法
              分享:Python2和Python3有那些差异?
              Python 的内置对象都藏了哪些小秘密?
              实战干货!用案例让你一文搞懂python网络爬虫
              Python教程:图像处理模块ndimage用法实例分析
              Python教程:代理IP爬虫的使用方法
              Python教程:如何使用scipy模块实现一维卷积运算示例?
              Python:关于内存分配时的那些小秘密分享
              python技巧:global关键字的用法详解
              Python教程:深入了解python在HDA中的应用
              python技巧:SSLerror的requests证书问题解决方法
              PyCharm教程:搭建Spark开发环境的几个步骤
              Python开发技巧:openpyxl读取单元格字体颜色过程解析
              Python教程:面向对象之Web静态服务器
              Python教程:如何为终端提供持久性历史记录
              Python技巧分享:自动登录淘宝并保存登录信息的方法
              python3教程:如何搭建微型的web服务器?
              python技巧:xlwt如何设置单元格的自定义背景颜色
              如何解决Python字符串和正则表达式中的反斜杠('\')问题?
              Python开发技巧:编写一个简单登录功能过程解析
              Python编程:postman传递当前时间戳实例详解
              Python爬虫教程:使用beautifulSoup4爬取名言网案例代码分享
              python开发:动态迁移solr数据过程分享
              python数据分析:用线性回归预测股票价格的代码分析
              Python3教程:pandas.merge用法详解
              Python爬虫案例:如何爬取豆瓣电影信息?附代码实例
              python开发:如何编写简单端口扫描器?
              Django框架教程:Pagination分页实现代码实例
              python爬虫实例:猫眼电影和电影天堂数据csv和mysql存储过程

              精彩推荐

              热门教程

              网站地图 易博彩票注册登入 易博网址登入 七星彩开奖时间登入
              申博游戏下载 澳门赌场排名登入 太阳城娱乐城官方 太阳城游戏介绍
              娱网棋牌游戏下载 欧博音响官网登入 爱彩网平台登录直营网 足球改单系统出租
              彩票99是官方网站登入 七星彩开奖号码登入 金巴黎怎么注册登入 新葡京彩票官网登入
              新葡京彩票网址登入 东方彩票网址登入 99彩票官方网登入 彩客网比分直播登入
              S6189.COM 989jbs.com bq138.com XSB298.COM 1112125.COM
              678XTD.COM 318XTD.COM 548XTD.COM S618G.COM 729DC.COM
              888TGP.COM 1777DZ.COM 298PT.COM XSB687.COM 131sj.com
              298PT.COM 1999DZ.COM S618Q.COM 888sbmsc.com 917SUN.COM