快捷搜索:  汽车  科技

python常用技术:5分钟入门Python的ETL库Bonobo

python常用技术:5分钟入门Python的ETL库Bonobo可以通过pip发出命令来安装它:我要使用的python库是bonobo。它是许多Python可用ETL库之一。选择的原因是我发现使用它来做ETL相对容易。它支持Python 3.5 ,因为我已经在使用Python 3.6,所以使用bonobo对我是顺理成章。ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过萃取(extract)、转置(transform)、加载(load)至目的端的过程。ETL一词较常用在数据仓库,但其对象并不限于数据仓库。--来源:百度百科您可以从文件,网站或某些数据库等数据源中提取数据,转换采集的数据,然后将最终版本加载到数据库中以供业务使用。您可能会问,为什么ETL?以及ETL做了什么,许多人可能已经通过编写不同的函数/脚本来执行任务, ETL的一个主要优点是可视化整个数据流通路,洞悉这些的你从而能更好的掌控数据。下面介绍如

作者:Adnan Siddiqi in Python Pandemonium 翻译:美茹 校对:Jackie.March 本文有1134字,大约需要5分钟阅读。 概述

这篇文章通过引入ETL并解释了其含义,推出了基于Python的好用ETL库,bonobo的安装和简单入门,最后通过一个真实案例让大家能掌握该库的基本用法。

python常用技术:5分钟入门Python的ETL库Bonobo(1)

5分钟入门Python的ETL库Bonobo

在这篇文章中,将讨论如何使用Bonobo库在Python中编写ETL作业。进入正题前,说下 ETL以及为什么需要它?

什么是ETL?

python常用技术:5分钟入门Python的ETL库Bonobo(2)

ETL,是英文Extract-Transform-Load的缩写

ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过萃取(extract)、转置(transform)、加载(load)至目的端的过程。ETL一词较常用在数据仓库,但其对象并不限于数据仓库。--来源:百度百科

您可以从文件,网站或某些数据库等数据源中提取数据,转换采集的数据,然后将最终版本加载到数据库中以供业务使用。您可能会问,为什么ETL?以及ETL做了什么,许多人可能已经通过编写不同的函数/脚本来执行任务, ETL的一个主要优点是可视化整个数据流通路,洞悉这些的你从而能更好的掌控数据。

下面介绍如何用Python开始编写我们的第一个ETL。

Python 库bonobo

我要使用的python库是bonobo。它是许多Python可用ETL库之一。选择的原因是我发现使用它来做ETL相对容易。它支持Python 3.5 ,因为我已经在使用Python 3.6,所以使用bonobo对我是顺理成章。

可以通过pip发出命令来安装它:

pip install

好吧,安装了库,让我们编写一个非常简单的ETL工作。我正在使用他们的Github Repo上给出的例子。

import bonobo def generate_data(): yield 'bar' def uppercase(x: str): def output(x: str): graph = bonobo.Graph( uppercase ) if __name__ == '__main__':

它没有做出令人惊奇的事情,它所做的只是将输入数据转换为大写然后打印它。剩下可视化部分,为此bonobo提供了一种将graphviz库用于图形的方法。安装完成后,您将执行以下两个命令:第一个用于生成dot文件,另一个用于从dot文件生成图形图像文件。

bonobo inspect --graph etl.py> etl.dot

然后

dot -o etl.png -T png etl.dot

这将产生如下图形图像:

python常用技术:5分钟入门Python的ETL库Bonobo(3)

您还可以通过执行来查看输入数据发生的情况bonobo run。对于上面的示例,它显示如下:

python常用技术:5分钟入门Python的ETL库Bonobo(4)

当然,这是只是一个简单示例,下面来通过处理=真实数据来实践ETL。

python常用技术:5分钟入门Python的ETL库Bonobo(5)

下面来通过处理=真实数据来实践ETL

我将制作一些房地产网站记录的ETL。要达到的目标是从Redfin和Zillow这2个站点获取数据。目标是从每个站点捕获价格,然后将它们转换为标准化格式供以后使用。在我们的例子中,它是在清理后将price字符串转换float为文本文件。以下是代码:

import bonobo from bs4 import BeautifulSoup def scrape_zillow(): status = '' https://www.zillow.com/homedetails/41-Norton-Ave-Dallas-PA-18612/2119501298_zpid/' if r.status_code == 200: soup = BeautifulSoup(html 'lxml') if len(price_status_section) > 1: return price def scrape_redfin(): status = '' https://www.redfin.com/TX/Dallas/2619-Colby-St-75204/unit-B/home/32251730' if r.status_code == 200: soup = BeautifulSoup(html 'lxml') if price_section: return price def extract(): yield scrape_redfin() def transform(price: str): return float(t_price) def load(price: float): f.write((str(price) '\n')) if __name__ == '__main__': 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML like Gecko) Chrome/56.0.2924.87 Safari/537.36' https://google.com' # scrape_redfin() extract load bonobo.run(graph)

这里主要介绍ETL,所以暂时忽略爬取数据部分。程序创建了两个独立的函数,然后用于yield使它们可用于ETL,然后,执行清理数据函数,然后load用于在转换后保存到文件中float。

结论

在这篇文章中,您学习了如何使用bonobo库以Python语言编写ETL作业。这是一个入门和实践的的基本演示。希望对喜爱Python的你有所帮助。后面会讨论更多的Python数据分析的内容,感兴趣的朋友可以关注下。

猜您喜欢: