提高Python数据分析速度的10个简单小窍门!

---恢复内容开始---

简介

提示和技巧总是非常有用的,在编程领域更是如此。有时候,小小的黑科技可以节省你大量的时间和精力。一个小的快捷方式或附加组件有时会是天赐之物,可以成为实用的效率助推器。所以,我在这里介绍下自己编程时最喜欢使用的一些提示和技巧,在这篇文章中汇总起来呈现给大家。有些可能是大家熟悉的,而有些可能是新鲜的,我相信它们会为你下一次处理数据分析的项目时提供便利。

1. 预览Pandas中的数据框数据(Dataframe)

分析预览(profiling)是一个帮助我们理解数据的过程,在Python中Pandas Profiling 是可以完成这个任务的一个工具包,它可以简单快速地对Pandas 数据框进行搜索性数据分析。Pandas中df.describe()和df.info()函数通常可以实现EDA过程的第一步,但如果只是给出非常基础的数据预览并不能对分析那些大型的数据集提供帮助。另一方面来看,Pandas Profiling函数能通过一行代码来展示出大量的信息,而在交互式HTML报告中也是这样。

对于一个给定的数据集,Pandas Profiling 工具包将会计算出下面的统计信息:

由pandas profiling包算出的统计信息

代码示例:

  • 安装

Python2.x的版本中,运用pip或conda安装pandas-profiling资源包:

pip install pandas-profiling
  • 使用

现在用一个古老的泰坦尼克数据集来演示多功能python profiler的结果:

#importing the necessary packages

这一行就是你需要在jupyter notebook中形成数据分析报告所需的全部代码。这个数据报告十分详细,包括了所有必要的图表。

图1.1

这个报告也可以用下面的代码形成交互HTML文件(interactive HTML file)导出:

profile = pandas_profiling.ProfileReport(df)

图1.2

2. Pandas图表(Plot)的交互性

Pandas中有一个内置的.plot()函数作为数据框(Dataframe)的一部分,但因为这个函数呈现的可视化并不是交互的,这使它的功能没那么吸引人。而且,使用pandas.DataFrame.plot()函数绘制图表也并不容易。如果我们想要在没有对代码进行重大修改的情况下用pandas绘制交互式图表要怎么办?嗯,可以通过Cufflinks资源包来帮助你完成这一目的。

Cufflinks资源包将功能强大的plotly和灵活易用的pandas结合,非常便于绘图。现在我们来看看怎么安装和在pandas中使用这个资源包。

代码示例:

  • 安装

Python2.x的版本中,使用pip安装plotly和cufflink:

pip install plotly # Plotly is a pre-requisite before installing cufflinks(plotly先于cufflinks安装)
  • 使用

调用方法:

#importing Pandas

下面来看一下泰坦尼克数据集所展现的魔力:

df.iplot()

图2.1

图2.2

右边的可视化展示的是静态的线状图,而左边的图是交互式的,并且更加详细,两个图在代码上没有重大的变化。

3. 一点点魔法

Magic命令是Jupyter Notebook中的一组便捷功能,它们旨在解决数据分析中一些常见的问题。你可以用%Ismagic来查阅所有的Magic 命令。

上图列举了所有可用的Magic 函数

Magic命令有两大类:行magic命令(line magics),以单个% 字符为前缀,单行输入操作;单元magics命令(cell magics),以双%% 字符作为前缀,可以在多行输入操作。如果设置为1,我们使用magic 函数时不需要键入%。

下面让我们来看一下,在常见的数据分析任务中一些可能会用到的命令。

  • % pastebin

% pastebin将代码上传到Pastebin并返回一个链接。Pastebin是一个线上内容托管服务,我们可以在上面存储纯文本,如源代码片段,所形成的链接也可以分享给他人。事实上,Github gist也类似于pastebin,只是它带有版本控制。

代码示例:

来看一下这个file.py的python代码文件中的内容:

#file.py

在Jupyter Notebook中使用% pastebin形成一个pastebin的链接。

  • %matplotlib notebook

%matplotlib inline函数用于在Jupyter笔记本中呈现静态matplotlib图。我们可以尝试用notebook来代替inline得到可轻松地缩放和调整大小的绘图,但要确保在套用matplotlib资源包之前调用该函数。

%matplotlib inline vs %matplotlib notebook

  • %run

%run函数用于jupyter notebook中运行一个python脚本文件。

  • %%writefile

%% writefile将执行单元的内容写入文件。下面的这段代码将写入名为foo.py的文件并保存在当前目录中。

  • %%latex

%% latex函数将单元格内容以LaTeX的形式呈现。它对于在单元格中编写数学公式和方程很有用。

4. 发现并减少错误

交互式调试器(interactive debugger)也是一个Magic函数,但我必须给它归个类。如果你在运行代码单元出现异常时,可以在新行中键入%debug运行。这将打开一个交互式调试环境,它将您告诉你代码发生异常的位置。你还可以检查程序中分配的变量值,并在此处执行操作。点击q可退出调试器。

5. 输出也可如此美观

如果你想生成美观的数据结构,pprint是首选的模块。它在输出字典数据或JSON数据时特别有用。下面来看一下print 和pprint输出的一个例子:

6. 让提示更突出

可以在你的Jupyter Notebook中使用提示/注释框来突出显示任何重要的内容。注释的颜色取决于指定的提示类型。只需在代码中加入需要突出显示的内容即可。

  • 蓝色提示框:****注释

代码示例:

<div class="alert alert-block alert-info">#提示框开头

输出结果:

  • 黄色提示框:****警告

代码示例:

<div class="alert alert-block alert-warning">

输出结果:

  • 绿色提示框:****成功

代码示例:

<div class="alert alert-block alert-success">

输出结果:

  • 红色提示框:****高危

代码示例:

<div class="alert alert-block alert-danger">

输出结果:

7. 输出一个执行单元中的所有结果

下面来看一下Jupyter Notebook格中包含的几行代码:

In[1]: 10+5

通常一个执行单元只输出最后一行的结果,而对于其他输出我们需要添加print()函数。好吧,事实证明我们可以通过在Jupyter Notebook开头添加以下代码来输出每一行的结果:

from IPython.core.interactiveshell import InteractiveShell

现在所有结果可以被一一输出:

In[1]: 10+5

如果要恢复成初始设定:

InteractiveShell.ast_node_interactivity = "last_expr"

8. 使用‘i’选项运行Python脚本文件

在命令行中运行python脚本的典型方法是:python hello.py。但是,如果在运行相同的脚本文件时额外添加一个 -i,例如python -i hello.py,这会带来更多好处。我们来看看是怎么回事:

首先,一旦程序结束,python不会退出编译器。因此,我们可以检查变量的值和程序中定义的函数的正确性。

其次,我们可以轻松地调用python调试器,因为我们仍然在编译器中:

import pdb

这将把我们带到代码发生异常的位置,然后我们可以去处理代码。

9. 自动添加代码注释

Ctrl / Cmd + / 命令将自动注释执行单元中的选定行。再次点击组合将取消注释相同的代码行。

10. 删除容易恢复难

你有没有不小心误删过Jupyter Notebook中的执行单元呢?如果有,这里有一个可以撤消该删除操作的快捷方式。

  • 如果你误删了执行单元的内容,可以通过点击CTRL/CMD+Z轻松恢复。
  • 如果你想要恢复所删除执行单元的所有内容,可以点击ESC+Z 或者 EDIT > Undo Delete Cells

总结

在上文中,我列出了在自己在使用Python和Jupyter Notebook时所收集的重要技巧。我相信它们能帮助到你并让你学以致用。到那时我们就可以快乐地写代码啦!大家可以加下这个群631441315一起交流 ,群里有大量的PDF书籍、教程免费使用!不管是学习到哪个阶段的小伙伴都可以获取到自己需要的教程!

---恢复内容结束---

原文地址:https://www.cnblogs.com/qingdeng123/p/11722842.html

时间: 2024-10-20 23:53:09

提高Python数据分析速度的10个简单小窍门!的相关文章

10个SecureCRT 小窍门 - 你玩转几个?

10个SecureCRT 小窍门 - 你玩转几个? SecureCRT,相信不用我过多介绍了吧,一款通过telnet,ssh登录远端设备的终端软件. 无论是搞网络的,做系统的甚至写程序的,连接设备必用软件,容易上手,稳定性高,功能强大. 但是,面对SecureCRT密密麻麻的功能菜单,大家熟悉几个? 别把SecureCRT用成Putty 让我猜猜你平时怎么使用SecureCRT. 第一步:打开软件. 第二步:点开左边的会话管理栏,选择你要连接的设备. 第三步:双击连接,走你! 第四步:开始弹键盘

C++程序运行效率的10个简单方法

深圳中心C++教研部 韩老师 对于每一个程序员来说,程序的运行效率都是一个值得重视,并为之付出努力的问题.本文介绍提高C++程序运行效率的10个简单方法,包括循环.变量.继承等应用的技巧,非常具有实用价值,具体分析如下: 一.尽量减少值传递,多采用引用来传递参数 如果参数是int等语言自定义的类型可能对性能的影响不是很大,但是如果参数是一个类的对象,那么其效率问题就非常突出了.例如一个判断两个字符串是否相等的函数,其声明如下: 其中若使用第一个函数(值传递),则在参数传递和函数返回时,需要调用S

10个提升工作效率的Secure CRT小窍门 - 你玩转了几个?

10个SecureCRT 小窍门 - 你玩转几个? SecureCRT,相信不用我过多介绍了吧,一款通过telnet,ssh登录远端设备的终端软件. 无论是搞网络的,做系统的甚至写程序的,连接设备必用软件,容易上手,稳定性高,功能强大. 但是,面对SecureCRT密密麻麻的功能菜单,大家熟悉几个? 别把SecureCRT用成Putty 让我猜猜你平时怎么使用SecureCRT. 第一步:打开软件. 第二步:点开左边的会话管理栏,选择你要连接的设备. 第三步:双击连接,走你! 第四步:开始弹键盘

小白学 Python 数据分析(10):Pandas (九)数据运算

人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):Pandas (二)数据结构 Series 小白学 Python 数据分析(4):Pandas (三)数据结构 DataFrame 小白学 Python 数据分析(5):Pandas (四)基础操作(1)查看数据 小白学 Python 数据分析(6):Pandas (五)基础操作(2)数据选择 小白学

利用 Python 进行数据分析(七)- pandas 简单介绍(Series和DataFrame)

一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目的是为了数据分析.它提供了大量高级的数据结构和对数据处理的方法. pandas 有两个主要的数据结构:Series 和 DataFrame. 二.Series Series 是一个一维数组对象 ,类似于 NumPy 的一维 array.它除了包含一组数据还包含一组索引,所以可以把它理解为一组带索引的数组. 将 Python 数组转换成 Series 对象: 将 Python 字典转换成 Serie

提高Python性能的一些建议(一)

最近换住的地方,网费到期,有两个星期没更新博客了,博客还是要坚持写的,有时候工作时遇到了相关问题,查看相关博客,还是能够得到一些思路或者灵感.虽然写篇博客要话费不少时间(我一般要花一个半小时到两个小时之间),但是这中间码字呀.归纳总结的过程还是让我受益匪浅的,温故而知新!当然分享自己的学习心得,也会让自己认识一些志同道合的朋友,也挺好.不说许多,今天讲讲如何提高Python性能的问题. python的性能相对c语言等还是有一定的劣势,但是如果能掌握一些优化性能的技巧,不仅能够提高代码的运行效率,

使用Apache Spark 对 mysql 调优 查询速度提升10倍以上

在这篇文章中我们将讨论如何利用 Apache Spark 来提升 MySQL 的查询性能. 介绍 在我的前一篇文章Apache Spark with MySQL 中介绍了如何利用 Apache Spark 实现数据分析以及如何对大量存放于文本文件的数据进行转换和分析.瓦迪姆还做了一个基准测试用来比较 MySQL 和 Spark with Parquet 柱状格式 (使用空中交通性能数据) 二者的性能. 这个测试非常棒,但如果我们不希望将数据从 MySQL 移到其他的存储系统中,而是继续在已有的

小白学 Python 数据分析(11):Pandas (十)数据分组

人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):Pandas (二)数据结构 Series 小白学 Python 数据分析(4):Pandas (三)数据结构 DataFrame 小白学 Python 数据分析(5):Pandas (四)基础操作(1)查看数据 小白学 Python 数据分析(6):Pandas (五)基础操作(2)数据选择 小白学

Web前端优化,提高加载速度

研究表明:用户最满意的打开网页时间是2-5秒,如果等待超过10秒,99%的用户会关闭这个网页.也许这样讲,各位还不会有太多感触,接下来我列举一组数据:Google网站访问速度每慢400ms就导致用户搜索请 求下降0.59%;Amazon每增加100ms网站延迟将导致收入下降1%;雅虎如果有400ms延迟会导致流量下降5-9%.网站的加载速度严重影响了用户体验,也决定了这个网站的生死存亡. 可能有人会说:网站的性能是后端工程师的事情,与前端并无多大关系.我只能说,too young too sim