使用Python加速数据分析的10个简单技巧
提示和技巧,尤其是在编程领域,可能是非常有用的。有时,一个小技巧可以节省时间和生命。一个小的快捷方式或附加组件有时会被证明是天赐之物,并能真正提高生产力。因此,下面是我最喜欢的一些提示和技巧,我将它们以本文的形式一起使用和编译。有些可能是我们相当熟悉的,有些可能是新的,但我确信它们将在你下一次处理数据分析项目时派上用场。
1.分析pandas数据帧
Profiling(分析)是一个帮助我们理解数据的过程,而Pandas Profiling就是执行这一过程的python包。这是一种对Pandas Dataframe(数据帧)进行探索性数据分析的简便、快速的方法。Pandas的df.describe()和df.info()函数通常用作EDA过程的第一步。但是,它只提供了一个非常基本的数据概览,对于大型数据集的情况并没有多大帮助。另一方面,Pandas Profiling(分析)函数使用df.profile_report()对pandas数据帧进行了扩展,以便快速进行数据分析。它用一行代码显示了很多信息,在交互式HTML报告中也是如此。
对于一个给定的数据集,pandas profiling(分析)包会计算以下统计数据:
![使用Python加速数据分析的10个简单技巧 使用Python加速数据分析的10个简单技巧](https://cdn.ancii.com/article/image/v1/bF/jG/W1/1WjFGbm8HLFtAH_u0xOtdnRzw-2qgWd2aejMDA8Yop7A6_Sh0u1mkE4askppHz39Zcpp2liv2A114pTXTjADUB_0cY8pYmbh_JChm0tPLuk.jpeg)
Pandas Profiling 包计算出的统计数据.
安装
![使用Python加速数据分析的10个简单技巧 使用Python加速数据分析的10个简单技巧](https://cdn.ancii.com/article/image/v1/nE/Qq/OF/FOQEqnhn2Rw1d5AwR24pT3Rzw-2qgWd2aejMDA8Yop5wJZrsK60h3wk_XwN2y-jQk-lDVKk-AKtTSdRC9VH45DY5v1muFgmnQPx7HbPt0So.jpeg)
用法
我们来使用古老的titanic数据集来演示多功能python分析器的功能。
![使用Python加速数据分析的10个简单技巧 使用Python加速数据分析的10个简单技巧](https://cdn.ancii.com/article/image/v1/nE/Qq/OF/FOQEqnhn2Rw1d5AwR24pT3Rzw-2qgWd2aejMDA8Yop7hKbGWubI9-sKujFBt2k3YLnIcYhhjKqWbI0P8jWcKPzm6kimcwQqMpxkCuyObSek.jpeg)
编者注:本文发布一周后,Pandas-Profiling发布了一个重大的升级版本——2.0.0。语法发生了一些变化,事实上,它的功能已经包含在pandas本身中了,并且报告也变得更加全面。下面是最新的用法语法:
Usage
要在 Jupyter notebook中显示报告,请运行以下代码:
![使用Python加速数据分析的10个简单技巧 使用Python加速数据分析的10个简单技巧](https://cdn.ancii.com/article/image/v1/nE/Qq/OF/FOQEqnhn2Rw1d5AwR24pT3Rzw-2qgWd2aejMDA8Yop6bAy8gCp72XgOxjPebw2WpkuEJbILtHVLEsjqr0UYe6HWcYG6X2LDaZaeZEgzSsGE.jpeg)
你只需要这一行代码就可以在一个Jupyter notebook中显示数据分析报告。报告非常详细,包括了必要的图表。
![使用Python加速数据分析的10个简单技巧 使用Python加速数据分析的10个简单技巧](https://cdn.ancii.com/article/image/v1/5j/up/aP/Paujp55OYl-3m_8_NjAruHRzw-2qgWd2aejMDA8Yop4DiNbC3T35MTKNbQ2gVZ0rvnnBX3_lT_3WAwYiDkN_LoWSqxyqcSC5MvHUIsFuIrs.gif)
你也可以使用以下代码将这个报告输出到一个交互式HTML文件中。
![使用Python加速数据分析的10个简单技巧 使用Python加速数据分析的10个简单技巧](https://cdn.ancii.com/article/image/v1/S6/Vw/SY/YSV6wSY-OkQYFU1zfJYNlnRzw-2qgWd2aejMDA8Yop52ndrTb4wKfwi4VxFwvJNXfCIpuyc4bNeAlnRd2t8k_gY_4Um9N18AAlWHWvmUfQ8.jpeg)
![使用Python加速数据分析的10个简单技巧 使用Python加速数据分析的10个简单技巧](https://cdn.ancii.com/article/image/v1/5j/up/aP/Paujp55OYl-3m_8_NjAruHRzw-2qgWd2aejMDA8Yop6eHkhSt0ZV9GJgCW8lRW9z5ZMeDa4CpIr09dyMG29I2y2-p0h8u_fkNHc1I6ETODw.gif)
查阅文档获取更多细节和例子。
2.为pandas 图表带来交互性
Pandas有一个内置的.plot()函数,它是DataFrame类的一部分。然而,使用该函数呈现的可视化效果并不具有交互性,这使得它的吸引力降低。相反,也不能排除使用pandas. datafram .plot()函数绘制图表的方便性。如果我们不需要对代码进行重大修改,就可以使用pandas绘制出像plotly那样的交互式图表,那会怎么样呢?实际上,你可以使用Cufflinks库做到这一点。
Cufflinks库结合了plotly的强大功能和pandas的灵活性,便于轻松绘图。现在我们来看看如何安装这个库并让它在pandas中运行。
安装
![使用Python加速数据分析的10个简单技巧 使用Python加速数据分析的10个简单技巧](https://cdn.ancii.com/article/image/v1/l7/qi/bN/Nbq7ilYF1suGxDU6bIGQU3Rzw-2qgWd2aejMDA8Yop6yH3Dwz1RDFc7_JRJdsrRtqLl0pysGWKrUS2XiUkT-rArZLTyV5WIPouXQOJ-HFFQ.jpeg)
用法
![使用Python加速数据分析的10个简单技巧 使用Python加速数据分析的10个简单技巧](https://cdn.ancii.com/article/image/v1/l7/qi/bN/Nbq7ilYF1suGxDU6bIGQU3Rzw-2qgWd2aejMDA8Yop4TIsGHw5QZohmISeMP5ce10EzkEgH3iO1CFXbOJom_Ucy-HFoTXCBAb4GwUFEt1Qo.jpeg)
是时候看看使用Titanic数据集展开的神奇之处了。
![使用Python加速数据分析的10个简单技巧 使用Python加速数据分析的10个简单技巧](https://cdn.ancii.com/article/image/v1/l7/qi/bN/Nbq7ilYF1suGxDU6bIGQU3Rzw-2qgWd2aejMDA8Yop7VRIlZcnxHD8tchpz7BSp3uDQ4PeDDs5eoUZ_aaZFFd9VyTFQqIUc7sn9sD-0M7d0.jpeg)
![使用Python加速数据分析的10个简单技巧 使用Python加速数据分析的10个简单技巧](https://cdn.ancii.com/article/image/v1/S6/Vw/SY/YSV6wSY-OkQYFU1zfJYNlnRzw-2qgWd2aejMDA8Yop6iZY40y-slKrYBpvr3Np6yajHS7bUyj9tSu9bkvUPXyTG4FLI80hYHd6NAszj3uSE.jpeg)
df.iplot() 对比 df.plot()
右边的可视化显示的是静态图表,而左边的图表是交互式的,并且更加详细,所有这些都没有对语法进行任何重大更改。
3. 一点魔法
魔法命令是Jupyter Notebook中的一组方便的函数,旨在解决标准数据分析中的一些常见问题。你可以通过%lsmagic命令来查看所有可用的魔法命令。
![使用Python加速数据分析的10个简单技巧 使用Python加速数据分析的10个简单技巧](https://cdn.ancii.com/article/image/v1/l7/qi/bN/Nbq7ilYF1suGxDU6bIGQU3Rzw-2qgWd2aejMDA8Yop6nIrNnGoVqxLURXBsWfh-_kuvIx9D86UxPfiDplWrIblbdVG-RnJJS90h79ipC5Ac.jpeg)
所有可用魔法函数的列表
魔法命令有两种类型: line magics(行魔法)和cell magics(单元魔法),前者以单个%字符作为前缀,并在一行输入上进行操作;后者与两个%%前缀关联,并在多行输入上进行操作。如果将魔法函数的选项设置为1时,不需要键入初始%就可调用它。
我们来看看在常见的数据分析任务中可能有用的一些魔法函数:
% pastebin
%pastebin将代码上传到Pastebin并返回其url。Pastebin是一个在线内容托管服务,我们可以在其中存储纯文本,如源代码片段,然后可以将url与他人共享。事实上,Github gist也类似于Pastebin,尽管它有版本控制。
我们假设有一个包含以下内容的python脚本file.py:
![使用Python加速数据分析的10个简单技巧 使用Python加速数据分析的10个简单技巧](https://cdn.ancii.com/article/image/v1/bF/jG/W1/1WjFGbm8HLFtAH_u0xOtdnRzw-2qgWd2aejMDA8Yop7tRSsKLvvNJGHl-WwheLSVWUUPL-qKl6YEIkHH1EkjaV03Gh3n8LW-28fyNZX3zB8.jpeg)
在Jupyter Notebook中使用%pastebin生成一个pastebin的url地址.
![使用Python加速数据分析的10个简单技巧 使用Python加速数据分析的10个简单技巧](https://cdn.ancii.com/article/image/v1/5j/up/aP/Paujp55OYl-3m_8_NjAruHRzw-2qgWd2aejMDA8Yop6lqP5CMyU9B_X70Nmv9FmxhgSCB3HNfl3IlvPGRlXg-z0VVrnid71RO6vrNqXVbQk.jpeg)
%matplotlib notebook
%matplotlib inline函数用于在Jupyter notebook中呈现静态matplotlib绘图。尝试用notebook替换inline部分,你就可以轻松获得可缩放和可调整大小的绘图。确保在导入matplotlib库之前调用该函数。
![使用Python加速数据分析的10个简单技巧 使用Python加速数据分析的10个简单技巧](https://cdn.ancii.com/article/image/v1/5j/up/aP/Paujp55OYl-3m_8_NjAruHRzw-2qgWd2aejMDA8Yop6-vVKUDUZS379NzbfZvMs4KEYH_KWcO2v49IEL5x-yC76smNx33AAwerwqf0EjY6o.jpeg)
%matplotlib inline 对比 %matplotlib notebook
%run
%run函数会在一个notebook中运行一个python脚本。
![使用Python加速数据分析的10个简单技巧 使用Python加速数据分析的10个简单技巧](https://cdn.ancii.com/article/image/v1/bF/jG/W1/1WjFGbm8HLFtAH_u0xOtdnRzw-2qgWd2aejMDA8Yop7oHUv3y3Yrj-pi_krLcMq1Gy98X0MyftBHJkL5TMXxfAAQtKCe8FvMRWMzK98_RYA.jpeg)
%%writefile
%%writefile 会将单元格的内容写入文件。这里的代码将被写入一个名为foo.py的文件,并保存在当前目录中。
![使用Python加速数据分析的10个简单技巧 使用Python加速数据分析的10个简单技巧](https://cdn.ancii.com/article/image/v1/5j/up/aP/Paujp55OYl-3m_8_NjAruHRzw-2qgWd2aejMDA8Yop5OwabiEVn8PV1XJmSQk5GwEbAILF_lxfVcyCLZbcuWKdR8pvutKZCsP5u_kl8uC3M.jpeg)
%%latex
%%latex函数会将单元格的内容呈现为LaTeX。它对在单元格中编写数学公式和方程很有用。
![使用Python加速数据分析的10个简单技巧 使用Python加速数据分析的10个简单技巧](https://cdn.ancii.com/article/image/v1/nE/Qq/OF/FOQEqnhn2Rw1d5AwR24pT3Rzw-2qgWd2aejMDA8Yop57GP_OX1n5LLYlWdgVJtdMhTgtQIkg2VUGEfwzdmLMlAUzXFR9flusD5ATuhyuxjM.jpeg)
4.发现和消除错误
Interactive debugger(交互式调试器)也是一个magic函数,但是我已经将它单独归为一类。如果在运行代码单元格时出现异常,请在一个新行中键入%debug并运行它。这会打开一个交互式调试环境,它会将你带到异常发生的位置。你还可以检查程序中分配的变量的值,并在这里执行操作。要退出这个调试器,请按q。
![使用Python加速数据分析的10个简单技巧 使用Python加速数据分析的10个简单技巧](https://cdn.ancii.com/article/image/v1/5j/up/aP/Paujp55OYl-3m_8_NjAruHRzw-2qgWd2aejMDA8Yop5ZcWrrV4-_VBnieeUPEhPJxN1ig8VONDYWb6U35gvxg7LXTP0ObWDUKDUpwQgPixY.gif)
5. 打印输出也可以很漂亮
如果你想为你的数据结构生成美观的表示形式,pprint是首选模块。它在打印字典或JSON数据时特别有用。我们来看一个同时使用print和pprint显示输出的例子。
![使用Python加速数据分析的10个简单技巧 使用Python加速数据分析的10个简单技巧](https://cdn.ancii.com/article/image/v1/nE/Qq/OF/FOQEqnhn2Rw1d5AwR24pT3Rzw-2qgWd2aejMDA8Yop6a1hGDzzYPe9peP88SUR7yy2UTdvv34Nkm0vFDQ3raM3ms-qPGqr8THpPWxgYj9gw.jpeg)
![使用Python加速数据分析的10个简单技巧 使用Python加速数据分析的10个简单技巧](https://cdn.ancii.com/article/image/v1/5j/up/aP/Paujp55OYl-3m_8_NjAruHRzw-2qgWd2aejMDA8Yop4v_-4y8q435HiflpLIr9QdCNxeuq36aExmIhmeqBXoWBTSxz2qF34VER_T1mNujxM.jpeg)
6. 让注释突出显示。
我们可以在Jupyter Notebook中使用信息提示/备注框来醒目显示一些重要的或任何需要突出的东西。注释的颜色取决于你指定的提示类型。你只需在需要高亮显示的单元格中添加以下任何或所有代码即可。
蓝色信息提示框: 信息
![使用Python加速数据分析的10个简单技巧 使用Python加速数据分析的10个简单技巧](https://cdn.ancii.com/article/image/v1/S6/Vw/SY/YSV6wSY-OkQYFU1zfJYNlnRzw-2qgWd2aejMDA8Yop5h1BxJeSBJjz26mVvUaOJAGXI8a8EhLGbqCvoj_DijnjUya8-m1nAQEEJb3i8yxuU.jpeg)
黄色信息提示框: 警告
![使用Python加速数据分析的10个简单技巧 使用Python加速数据分析的10个简单技巧](https://cdn.ancii.com/article/image/v1/bF/jG/W1/1WjFGbm8HLFtAH_u0xOtdnRzw-2qgWd2aejMDA8Yop4ISWM5l5N7TQzdH8c7wUrMXAZsBOhWA3HijLfTJRkWXQILFXmKmPm8fup0ZlECcEI.jpeg)
绿色提示框: 成功
![使用Python加速数据分析的10个简单技巧 使用Python加速数据分析的10个简单技巧](https://cdn.ancii.com/article/image/v1/nE/Qq/OF/FOQEqnhn2Rw1d5AwR24pT3Rzw-2qgWd2aejMDA8Yop7WyyGY1K0uvTDlGLaIGCfHrrWKH-4mvSDtwMMWYXZGPhSaQ2yenCTGlo-ozWpyX84.jpeg)
红色提示框: 危险
![使用Python加速数据分析的10个简单技巧 使用Python加速数据分析的10个简单技巧](https://cdn.ancii.com/article/image/v1/5j/up/aP/Paujp55OYl-3m_8_NjAruHRzw-2qgWd2aejMDA8Yop7OMYUWaziJ2k1i1WV-C7f-xtpsdgMIulntbXv7rLMx2aWlyM9p59bERsHI10rVwyU.jpeg)
7.打印一个单元格中的所有输出
假设有一个含有以下代码行的Jupyter Notebook单元格:
![使用Python加速数据分析的10个简单技巧 使用Python加速数据分析的10个简单技巧](https://cdn.ancii.com/article/image/v1/l7/qi/bN/Nbq7ilYF1suGxDU6bIGQU3Rzw-2qgWd2aejMDA8Yop6T56aNmvXBC75PxweTOutwZglyq8Tz2QRXTUbE_hbWzrAvf2rvMNHFV7EVC9NJsC0.jpeg)
只打印最后一个输出是单元格的一个正常属性,而对于其他输出,我们需要添加print()函数。事实上,我们只要在notebook的顶部添加以下代码片段,就可以打印出所有输出。
![使用Python加速数据分析的10个简单技巧 使用Python加速数据分析的10个简单技巧](https://cdn.ancii.com/article/image/v1/S6/Vw/SY/YSV6wSY-OkQYFU1zfJYNlnRzw-2qgWd2aejMDA8Yop4fqUeRDFWpI66sXDJcnS1sOoxnMRSh6RBD3DbPjykb3YEf6PHnB6Srgt7v5HD6XJM.jpeg)
现在所有的输出一个接一个的被打印出。
![使用Python加速数据分析的10个简单技巧 使用Python加速数据分析的10个简单技巧](https://cdn.ancii.com/article/image/v1/l7/qi/bN/Nbq7ilYF1suGxDU6bIGQU3Rzw-2qgWd2aejMDA8Yop5JEVUSyz9AGtSbfiuKRurD3IKFb3YFGCuUSGFVQ7EUZ-iWjQ-IC8tuejs_dMb5NCU.jpeg)
还原到原始设置:
![使用Python加速数据分析的10个简单技巧 使用Python加速数据分析的10个简单技巧](https://cdn.ancii.com/article/image/v1/5j/up/aP/Paujp55OYl-3m_8_NjAruHRzw-2qgWd2aejMDA8Yop6XixIaAFjhml-7zcMIRzi8m0b-67YQSHFV60ec-BXAve7H8gHlpHH02597XBsnuiA.jpeg)
8.使用‘i’选项运行python脚本.
从命令行运行python脚本的一种典型方法是: python hello.py。但是,如果你在运行相同的脚本时添加一个附加的-i,例如python -i hello.py,它会提供更多的优点。我们来一探究竟。
首先,一旦程序结束,python并不会退出解释器。因此,我们可以检查变量的值和程序中定义的函数的正确性。
![使用Python加速数据分析的10个简单技巧 使用Python加速数据分析的10个简单技巧](https://cdn.ancii.com/article/image/v1/S6/Vw/SY/YSV6wSY-OkQYFU1zfJYNlnRzw-2qgWd2aejMDA8Yop5YO61Si2woB4zj4KLFEHyZm5ETKCqbhQkDfnCximNuYa7gz4lmzlureczxjWCien4.gif)
其次,我们可以很容易地使用以下代码调用python调试器,因为我们仍然在解释器中:
![使用Python加速数据分析的10个简单技巧 使用Python加速数据分析的10个简单技巧](https://cdn.ancii.com/article/image/v1/nE/Qq/OF/FOQEqnhn2Rw1d5AwR24pT3Rzw-2qgWd2aejMDA8Yop7LMk4lMkgvgHPuPHA0Tn8HcVpwTXAdVXeyZ1MYE2T78wXHVwCZqd63JnCFElelZpM.jpeg)
这会将我们带到异常发生的位置,然后我们就可以处理代码。
![使用Python加速数据分析的10个简单技巧 使用Python加速数据分析的10个简单技巧](https://cdn.ancii.com/article/image/v1/bF/jG/W1/1WjFGbm8HLFtAH_u0xOtdnRzw-2qgWd2aejMDA8Yop68yXON4qnj9LLvvlMLyyjGCRhhX1reztklLRalYKLPoruDYNM9pideiEES2sescOs.jpeg)
这个技巧的初始来源。(http://www.bnikolic.co.uk/blog/python-running-cline.html )
9.自动对代码进行注释
Ctrl/Cmd + / 会自动注释单元格中选定的行。再次敲击该组合键将取消对同一行代码的注释。
![使用Python加速数据分析的10个简单技巧 使用Python加速数据分析的10个简单技巧](https://cdn.ancii.com/article/image/v1/S6/Vw/SY/YSV6wSY-OkQYFU1zfJYNlnRzw-2qgWd2aejMDA8Yop5p4Nip8VhpBtpfPLMhEa22TQm5jfwzCTpmsqAzmgyxwSVEGbAAoGzSIDPV8dHib4E.gif)
10.能删除是人,能恢复是神。
你是否曾经不小心删除了Jupyter Notebook中的一个单元格?如果是,那么这里有一个快捷方式可以撤消此删除操作。
- 如果你删除了一个单元格的内容,按CTRL/CMD+Z可以很容易地恢复它
- 如果你需要恢复一个全部删除的单元格,请点击ESC+Z或EDIT > Undo Delete Cells
![使用Python加速数据分析的10个简单技巧 使用Python加速数据分析的10个简单技巧](https://cdn.ancii.com/article/image/v1/bF/jG/W1/1WjFGbm8HLFtAH_u0xOtdnRzw-2qgWd2aejMDA8Yop4a5eDRhSGoAmg2RIYRLgdHHBj-UHp57FC9oKHmRo4BC_7O4azzHM7rrhTvid7hTBI.gif)