关于人工智能:10个强大的Python数据科学技巧

1次阅读

共计 6262 个字符,预计需要花费 16 分钟才能阅读完成。

作者 |LAKSHAY ARORA
编译 |Flin
起源 |analyticsvidhya

介绍

你上一次学习新的 Python 技巧是什么时候?作为数据科学家,咱们习惯于应用相熟的库并每次都调用雷同的函数。当初该打破旧的常规了!

Python 不仅限于 Pandas,NumPy 和 scikit-learn(只管它们在数据迷信中相对必不可少)!咱们能够应用大量的 Python 技巧来改良代码,减速数据迷信工作并进步编写代码的效率。

更重要的是,学习咱们能够在 Python 中做的新事件真的十分乏味!我喜爱玩各种不同的程序包和函数。每隔一段时间,就会有一个新的花色吸引我,我将其融入我的日常工作。

因而,我决定在一个中央整顿我最喜爱的 Python 技巧——本文!此列表的范畴从放慢根本数据迷信工作(如预处理)到在同一 Jupyter Notebook 中获取 R 和 Python 代码不等。有大量的学习工作在等着咱们,让咱们开始吧!

Python 和数据迷信世界的老手?这是一门精妙而全面的课程,可帮忙你同时入门:

  • 利用机器学习——从入门到业余

    • https://courses.analyticsvidh…

1. zip:在 Python 中合并多个列表

通常咱们最终会写出简单的 for 循环以将多个列表组合在一起。听起来很相熟?那么你会喜爱 zip 函数的。这个 zip 函数的目标是“创立一个迭代器,从每个 iterable 中聚合元素”。

让咱们通过一个简略的示例来理解如何应用 zip 函数并组合多个列表:

https://id.analyticsvidhya.co…://www.analyticsvidhya.com/blog/2019/08/10-powerful-python-tricks-data-science

看到合并多个列表有多容易了吗?

2. gmplot:在 Google Maps 的数据集中绘制 GPS 坐标

我喜爱应用 Google Maps 数据。想想看,它是最丰盛的数据应用程序之一。这就是为什么我决定从这个 Python 技巧开始的起因。

当咱们想查看两个变量之间的关系时,应用散点图是十分好的。然而如果变量是一个地位的经纬度坐标,你会应用它们吗?可能不会。最好把这些点标在实在的地图上,这样咱们就能够很容易地看到并解决某个特定的问题(比方优化路线)。

gmplot 提供了一个令人惊叹的界面,能够生成 HTML 和 JavaScript,将咱们想要的所有数据出现在 Google Maps 之上。让咱们来看一个如何应用 gmplot 的例子。

装置 gmplot

!pip3 install gmplot

在 Google 地图上绘制地位坐标

你能够在此处下载此代码的数据集。

  • https://drive.google.com/file…

让咱们导入库并读取数据:

import pandas as pd
import gmplot
data = pd.read_csv('3D_spatial_network.csv')
data.head()

# latitude and longitude list 
latitude_list = data['LATITUDE'] 
longitude_list = data['LONGITUDE'] 

# center co-ordinates of the map 
gmap = gmplot.GoogleMapPlotter(56.730876,9.349849,9)

# plot the co-ordinates on the google map 
gmap.scatter(latitude_list, longitude_list, '# FF0000', size = 40, marker = True) 

# the following code will create the html file view that in your web browser 
gmap.heatmap(latitude_list, longitude_list) 

gmap.draw("mymap.html")

下面的代码将生成 HTML 文件,你能够看到 Google 地图上绘制了纬度和经度坐标。热图以红色显示具备高密度点的区域。很酷吧?

3. category_encoders:应用 15 种不同的编码方案对分类变量进行编码

咱们在晚期数据迷信数据集中面临的最大阻碍之一 —— 咱们应该如何解决分类变量?咱们的机器眨眼间就能够解决数字,然而解决类别却是一个齐全不同的问题。

一些机器学习算法能够本人解决分类变量。然而咱们须要将它们转换为数值变量,为此,category_encoders 是一个了不起的库,提供了 15 种不同的编码方案。

让咱们看看如何利用这个库。

装置 category-encoders

!pip3 install category-encoders

将分类数据转换为数值数据


import pandas as pd 
import category_encoders as ce 

# create a Dataframe 
data = pd.DataFrame({'gender' : ['Male', 'Female', 'Male', 'Female', 'Female'],
                      'class' : ['A','B','C','D','A'],
                      'city' : ['Delhi','Gurugram','Delhi','Delhi','Gurugram'] }) 
                                                                                      
data.head()

# One Hot Encoding 
# create an object of the One Hot Encoder 

ce_OHE = ce.OneHotEncoder(cols=['gender','city']) 

# transform the data 
data = ce_OHE.fit_transform(data) 
data.head()

category_encoders 反对大概 15 种不同的编码方法,例如:

  • 哈希编码
  • LeaveOneOut 编码
  • 程序编码
  • 二进制编码
  • 指标编码

所有编码器都与 sklearn-transformers 齐全兼容,因而能够轻松地在你现有的脚本中应用它们。另外,category_encoders 反对 NumPy 数组和 Pandas 数据帧。你能够在此处浏览无关 category_encoders 的更多信息。

  • https://github.com/scikit-lea…

4. progress_apply:监督你破费在数据迷信工作上的工夫

你通常破费多少工夫来清理和预处理数据?数据科学家通常破费 60~70%的工夫来清理数据这一说法是正确的。对咱们来说,追踪这一点很重要,对吗?

咱们不想破费数天的工夫来清理数据,而疏忽其余数据迷信步骤。这是progress_apply 函数使咱们的钻研更加轻松的中央。让我演示一下它是如何工作的。

让咱们计算所有点到特定点的间隔,并查看实现此工作的进度。你能够在此处下载数据集。

  • https://drive.google.com/file…
import pandas as pd
from tqdm._tqdm_notebook import tqdm_notebook
from pysal.lib.cg import harcdist
tqdm_notebook.pandas()
data = pd.read_csv('3D_spatial_network.csv')
data.head()

# calculate the distance of each data point from # (Latitude, Longitude) = (58.4442, 9.3722) 

def calculate_distance(x): 
   return harcdist((x['LATITUDE'],x['LONGITUDE']),(58.4442, 9.3722)) 
   
data['DISTANCE'] = data.progress_apply(calculate_distance,axis=1)

你会看到跟踪咱们的代码进度有如许容易。简略,高效。

5. pandas_profiling:生成数据集的具体报告

咱们花了很多工夫来了解咱们失去的数据。这很偏心——咱们不想在不理解咱们正在应用的模型的状况下间接跳入模型构建。这是任何数据迷信我的项目中必不可少的步骤。

pandas_profiling 是一个 Python 软件包,可缩小执行初始数据分析步骤所需的大量工作。该软件包只需一行代码即可生成无关咱们数据的具体报告!

import pandas as pd 
import pandas_profiling 

# read the dataset 
data = pd.read_csv('add-your-data-here') 
pandas_profiling.ProfileReport(data)

咱们能够看到,仅用一行代码,就失去了数据集的具体报告:

  • 正告,例如:Item_Identifier 具备高基数:1559 个不同的值正告
  • 所有类别变量的 频率计数
  • 数字变量的 分位数和描述统计
  • 相干图

6. grouper:对工夫序列数据进行分组

当初谁不相熟 Pandas?它是最风行的 Python 库之一,宽泛用于数据操作和剖析。咱们晓得 Pandas 有惊人的能力来操纵和总结数据。

我最近在钻研一个工夫序列问题,发现 Pandas 有一个我以前从未应用过的 Grouper 函数。我开始对它的应用感到好奇。

事实证明,这个 Grouper 函数对于工夫序列数据分析是一个十分重要的函数。让咱们试试这个,看看它是如何工作的。你能够在这里下载此代码的数据集。

  • https://drive.google.com/file…
import pandas as pd 

data = pd.read_excel('sales-data.xlsx') 
data.head()

当初,解决任何工夫序列数据的第一步是将 date 列转换为 DateTime 格局:

data['date'] = pd.to_datetime(data['date'])

假如咱们的指标是查看每个客户的每月销售额。咱们大多数人都在这里尝试写一些简单的货色。但这是 Pandas 对咱们来说更有用的中央。

data.set_index('date').groupby('name')["ext price"].resample("M").sum()

咱们能够通过 groupby 语法应用一种简略的办法,而不用再进行从新索引。咱们将为这个函数增加一些额定的内容,提供一些对于如何在 date 列中对数据分组的信息。它看起来更洁净,工作原理完全相同:

data.groupby(['name', pd.Grouper(key='date', freq='M')])['ext price'].sum()

7. unstack:将索引转换为 Dataframe 的列

咱们刚刚看到了 grouper 如何帮忙对工夫序列数据进行分组。当初,这里有一个挑战——如果咱们想将 name 列(在下面的示例中是索引)作为 dataframe 的列呢。

这就是 unstack 函数变得至关重要的中央。让咱们对下面的代码示例利用 unstack 函数并查看后果。

data.groupby(['name', pd.Grouper(key='date', freq='M')])['ext price'].sum().unstack()


十分有用!留神:如果索引不是 MultiIndex,则输入将是 Series。

8.%matplotlib Notebook:Jupyter Notebook 中的交互式绘图

我是 matplotlib 库的超级粉丝。它是咱们在 Jupyter Notebook 中用来生成各种图形的最常见的可视化库。

要查看这些绘图,咱们通常在导入 matplotlib 库时应用一行——%matplotlib inline。这很好用,它出现了 Jupyter Notebook 中的动态图。

只需将行 %matplotlib替换为 %matplotlib notebook,就能够看到神奇的成果了。你将在你的 Notebook 失去可调整大小和可缩放的绘图!

%matplotlib notebook
import matplotlib.pyplot as plt

# scatter plot of some data # try this on your dataset
plt.scatter(data['quantity'],data['unit price'])

只需更改一个字,咱们就能够获取交互式绘图,从而能够在绘图中调整大小和缩放。

9. %% time:查看特定 Python 代码块的运行工夫

解决一个问题能够有多种办法。作为数据科学家,咱们对此十分理解。计算成本在行业中至关重要,尤其是对于中小型组织而言。你可能心愿抉择最好的办法,以在最短的工夫内实现工作。

实际上,在 Jupyter Notebook 中查看特定代码块的运行工夫非常容易。

只需增加 %% time 命令来查看特定单元格的运行工夫:

%%time 
def myfunction(x) : 
    for i in range(1,100000,1) : 
        i=i+1

在这里,咱们有 CPU 工夫和 Wall 工夫。CPU 工夫是 CPU 专用于某个过程的总执行工夫或运行工夫。Wall 工夫是指时钟从流程开始到“当初”之间通过的工夫。

10:rpy2:R 和 Python 在同一个 Jupyter Notebook 中!

R 和 Python 是数据迷信世界中最好的和最受欢迎的两种开源编程语言。R 次要用于统计分析,而 Python 提供了一个简略的接口,可将数学解决方案转换为代码。

这是个好消息,咱们能够在一个 Jupyter Notebook 中同时应用它们!咱们能够利用这两个生态系统,为此,咱们只须要装置 rpy2。

因而,当初临时搁置 R 与 Python 的争执,并在咱们的 Jupyter Notebook 中绘制 ggplot 级图表。

!pip3 install rpy2

咱们能够同时应用两种语言,甚至能够在它们之间传递变量。

%load_ext rpy2.ipython
%R require(ggplot2)
import pandas as pd
df = pd.DataFrame({'Class': ['A', 'A', 'A', 'V', 'V', 'A', 'A', 'A'],
        'X': [4, 3, 5, 2, 1, 7, 7, 5],
        'Y': [0, 4, 3, 6, 7, 10, 11, 9],
        'Z': [1, 2, 3, 1, 2, 3, 1, 2]
    })
%%R -i df
ggplot(data = df) + geom_point(aes(x = X, y= Y, color = Class, size = Z))

在这里,咱们用 Python 创立了一个数据框 df,并应用它创立了一个应用 R 的 ggplot2 库(geom_point 函数)的散点图。

尾注

这是我必不可少的 Python 技巧汇合。我喜爱在日常工作中应用这些软件包和性能。诚实说,我的工作效率进步了,这使在 Python 中工作比以往更加乏味。

除了这些之外,你还有什么想让我晓得的 Python 技巧吗?在上面的评论局部中通知我,咱们能够替换想法!

而且,如果你是 Python 的初学者和数据迷信的老手,那么你真的应该查看咱们全面且滞销的课程:

  • 利用机器学习–从入门到业余

    • https://courses.analyticsvidh…

原文链接:https://www.analyticsvidhya.c…

欢送关注磐创 AI 博客站:
http://panchuang.net/

sklearn 机器学习中文官网文档:
http://sklearn123.com/

欢送关注磐创博客资源汇总站:
http://docs.panchuang.net/

正文完
 0