首页 > 编程语言 >使用Python进行ETL数据处理

使用Python进行ETL数据处理

时间:2023-04-24 19:31:59浏览次数:42  
标签:转换 Python 数据库 df MySQL 数据处理 数据 ETL


ETL(Extract, Transform, Load)是一种广泛应用于数据处理和数据仓库建设的方法论,它主要用于从各种不同的数据源中提取数据,经过一系列的处理和转换,最终将数据导入到目标系统中。本文将介绍如何使用Python进行ETL数据处理的实战案例。

一、数据来源

本次实战案例的数据来源是一个包含销售数据的CSV文件,其中包括订单ID、产品名称、销售额、销售日期等信息。文件大小为100MB,大约有100万条记录。我们需要从这个CSV文件中提取数据,并将其导入到MySQL数据库中。

二、数据提取

数据提取是ETL过程的第一步,我们需要从源数据中获取需要的数据。在本次实战案例中,我们使用Python的pandas库来读取CSV文件,并将其转换为DataFrame对象,如下所示:

import pandas as pd

df = pd.read_csv('sales.csv')

通过上述代码,我们成功将CSV文件转换为DataFrame对象,并可以使用pandas提供的各种方法进行数据处理和转换。

三、数据转换

数据转换是ETL过程的核心步骤,它将原始数据转换为目标格式,以便于后续的处理和分析。在本次实战案例中,我们需要对销售数据进行一些处理和转换,包括:

将销售日期转换为MySQL数据库中的日期类型。

将销售额按照一定规则进行分类。

下面是具体的实现代码:

import pymysql

# 连接MySQL数据库
conn = pymysql.connect(host='localhost', port=3306, user='root', password='123456', db='sales')

# 将销售日期转换为MySQL数据库中的日期类型
df['sale_date'] = pd.to_datetime(df['sale_date'])
df['sale_date'] = df['sale_date'].dt.strftime('%Y-%m-%d')

# 将销售额按照一定规则进行分类
df['sale_category'] = pd.cut(df['sale_amount'], bins=[0, 100, 500, 1000, 5000, float('inf')], labels=['A', 'B', 'C', 'D', 'E'])

# 将DataFrame对象转换为MySQL数据库中的表
df.to_sql(name='sales_data', con=conn, if_exists='append', index=False)

# 关闭数据库连接
conn.close()

通过上述代码,我们成功将DataFrame对象中的销售数据转换为MySQL数据库中的表,并将其插入到sales_data表中。其中,我们使用pandas提供的to_sql()方法,将DataFrame对象转换为MySQL数据库中的表。

四、数据加载

数据加载是ETL过程的最后一步,它将转换后的数据加载到目标系统中。在本次实战案例中,我们使用MySQL数据库作为目标系统,通过Python的pymysql库连接MySQL数据库,并将转换后的数据插入到MySQL数据库中。

上述代码中,我们使用pymysql库连接MySQL数据库,然后将DataFrame对象中的数据使用to_sql()方法插入到MySQL数据库中的sales_data表中。其中,参数if_exists='append’表示如果表已经存在,则将新数据追加到已有数据的末尾,而不是覆盖原有数据。

五、总结

本文介绍了如何使用Python进行ETL数据处理的实战案例,包括数据提取、数据转换和数据加载三个步骤。我们使用pandas库将CSV文件读取为DataFrame对象,并对其中的销售数据进行了一些处理和转换,然后使用pymysql库将转换后的数据插入到MySQL数据库中。这个实战案例展示了ETL数据处理的基本流程和方法,对于从各种数据源中提取、处理和导入数据的数据仓库建设和数据分析工作具有重要的参考价值。

⭐️ 好书推荐

《Python Web深度学习》

使用Python进行ETL数据处理_pandas

【内容简介】

《Python Web深度学习》详细阐述了与Python Web相关的基本解决方案,主要包括人工智能简介和机器学习基础、使用Python进行深度学习、创建第一个深度学习Web应用程序、TensorFlow.js入门、通过API进行深度学习、使用Python在Google云平台上进行深度学习、使用Python在AWS上进行深度学习、使用Python在Microsoft Azure上进行深度学习、支持深度学习的网站的通用生产框架、使用深度学习系统保护Web应用程序、自定义Web深度学习生产环境、使用深度学习API和客服聊天机器人创建端到端Web应用程序等内容。此外,本书还提供了相应的示例、代码,以帮助读者进一步理解相关方案的实现过程。



标签:转换,Python,数据库,df,MySQL,数据处理,数据,ETL
From: https://blog.51cto.com/haiyongblog/6221812

相关文章

  • python钉钉机器人ssl错误,突然不能发送信息
    报错给了这个网址:https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#https-proxy-error-http-proxy 说要将https后面的环境变量改为http的本地连接代理,Windows电脑打开系统环境变量设置,新建系统变量HTTP_PROXY和HTTPS_PROXY里面的内容写图上那两个。重启python脚......
  • Python学习笔记--json序列化时间报错-改源码
    问题:转换时间报错执行代码为:importjsonfromdatetimeimportdate,datetimed={"time1":date.today(),"time2":datetime.today()}res=json.dumps(d)#报错  TypeError:ObjectoftypedateisnotJSONserializable方案1:手动转换str()方案2:继承类......
  • 基于python的Base全家桶解码
    https://www.cnblogs.com/0yst3r-2046/p/11962942.html 函数介绍base64.b16encode  #对字符串进行base16编码base64.b16decode  # 对字符串进行base16解码base64.b32encode  # 对字符串进行base32编码base64.b32decode  # 对字符串进行base32解码ba......
  • Python教程:协程、异步
    协程,又称作Coroutine。从字面上来理解,即协同运行的例程,它是比是线程(thread)更细量级的用户态线程,特点是允许用户的主动调用和主动退出,挂起当前的例程然后返回值或去执行其他任务,接着返回原来停下的点继续执行。yield语句实现函数执行到一半返回等会又跑到原来的地方继续执行。yiel......
  • Ubuntu系统python连接hive遇到的一些问题
    1.第一个问题,sasl这个库安装不上,报缺少sasl.h的问题(#include<sasl/sasl.h>)解决方法:sudoapt-getinstall-ylibsasl2-devgccpython-dev2.第二个问题,连接的时候报CouldnotstartSASL:b‘Errorinsasl_client_start(-4)SASL(-4)解决办法:sudoaptinstalllibsasl2-mod......
  • python zipfile解压文件出现中文乱码
    解压文件首先要在编写代码的开头通过import关键字来调用zipfile,再用with开头的命令来处理需要解压的文件。解决乱码情况可以通过自己创建文件夹的方式来解决,先创建一个自己的解压目录,为了区分是文件还是文件夹要获取文件大小,再把解码方式为cp437变成gbk,再对文件进行拼接,示例如下:......
  • python pyinstaller库
    简要pyinstaller模块主要用于python代码打包成exe程序直接使用,这样在其它电脑上即使没有python环境也是可以运行的。用法一.安装pyinstaller属于第三方库,因此在使用的时候需提前安装pipinstallpyinstaller二.配置spec文件1.配置生成exe程序文件夹(1)如果不熟悉spec配置......
  • python入门编程1
    最近迅速看了以下推荐的两本Python入门书籍:1.Python编程:从入门到实践2.Python编程快速上手——让繁琐工作自动化两本书的前半部分内容相似,都是些简单的基础知识,后半部分是些实践项目,但是从我的感受来看,项目内容组织的还是有点大,比如其中一个web项目开发,对于新手来说,里面包含的......
  • python三角网格划分示例
    python三角网格划分示例 importnumpyasnpimportturtle#输入三角形的边长length=float(input("Enterthelengthofthetriangle:"))#计算最短边、最长边和三角形个数short_side=lengthmax_side=length+lengthn=int(max_side/s......
  • python linux服务器上运行
    后台运行python脚本/opt/njzf/bsp/python37/python37/bin/python3.7main.py>result.log2>&1&说明:1.末尾的“&”:表示后台运行程序2.“nohup”:保证程序不被挂起3.“python”:是执行python代码的命令4.“-u”:表示不启用缓存,实时输出打印信息到日志文件(如果不加-u,则会导致......