PyETL是Python ETL(Extract, Transform, Load)工具包,它可以帮助用户从多种数据源中提取数据,对数据进行转换和清洗后,将它们保存到文件、数据库或其他数据存储介质中。
PyETL可以通过pip安装,执行以下命令即可:
pip install pyetl
PyETL提供了如下4个主要的类:
下面将演示如何使用PyETL的Pipeline类进行数据清洗和转换。
例如,我们有一份如下的用户数据:
名称 | 年龄 | 邮箱 |
---|---|---|
Michael | 25 | michael@example.com |
John | 30 | john@example.com |
Sarah | 28 | sarah@example.com |
William | 35 | william@example.com |
我们需要将其中的年龄加上5,然后将结果保存到csv文件中。那么可以使用如下代码:
from pyetl import Pipeline, Extractor, Transformer, Loader
import csv
class CSVExtractor(Extractor):
def __init__(self, filename):
self.filename = filename
def extract(self):
with open(self.filename) as f:
reader = csv.DictReader(f)
for row in reader:
yield row
class CSVPipeline(Pipeline):
def __init__(self, filename):
super().__init__()
self.add_extractor(CSVExtractor(filename))
self.add_transformer(Transformer(lambda x: {"name": x["名称"], "age": int(x["年龄"]) + 5, "email": x["邮箱"]}))
self.add_loader(Loader(lambda x: csv.DictWriter(open("output.csv", "w+", newline="", encoding="utf-8"), fieldnames=x[0].keys(), delimiter=",", quotechar='"')))
csv_pipeline = CSVPipeline("input.csv")
csv_pipeline.run()
这个例子中,我们首先定义了一个CSVExtractor类,用于从csv文件中提取数据。然后定义了一个CSVPipeline类,将CSVExtractor、Transformer和Loader类组合在一起构建了一个ETL管道。最后调用run方法即可运行整个管道。输出的结果将保存在output.csv文件中。
另外,PyETL还支持从数据库、NoSQL存储、API等多种数据源中提取数据,以及将数据保存到多种数据存储介质中,具体可以参考官方文档中的示例。
本文链接:http://task.lmcjl.com/news/15046.html