Python + MySQL 数据分析新手教程

部署运行你感兴趣的模型镜像

想成为数据驱动的产品经理,那么SQL+Python是必备技能!

        以前要手动拉取数据、整理 Excel、做图,如果你懂 Python,你可以写个简单的自动化脚本,每天自动拉取数据,减少手动工作量,大大提升效率!

         在数据分析时,我们经常需要对数据进行条件筛选,本文将介绍如何使用python和MySQL直接获取和分析数据,pandas是python中常用的数据分析库,可以帮助我们进行SQL语句的处理和分析,并附带代码示例。

1.建立MySQL数据库

        首先,假设我们的目标是通过python将数据库中的数据计算出交易总额、总数量和退单率。同时我们已经将所有收集的数据,将其交易额、笔数、成交量和退单率作为列属性生成了SQL数据库:

create database economy;    -- 创建数据库
use `economy`;   -- 使用数据库

create table `transactions`(
`transaction_id` varchar(20) primary key,
`amount` decimal(10,2) ,
`quantity` int  default null,
`is_refunded` boolean not null default 0
);       -- 创建表格,增加列属性

insert into `transactions`values(001,34000,12,1);
insert into `transactions`values(002,46000,10,0);
insert into `transactions`values(003,34000,11,0);
insert into `transactions`values(004,12400,3,1);
insert into `transactions`values(005,54000,15,0);
insert into `transactions`values(006,23000,9,0);     -- 导入数据 

select *from `transactions`;      -- 查看整个表格

2.接入pandas库

       完成SQL的数据导入之后,我们将pandas库接入python,在终端(Windows 命令提示符 cmd、PowerShell 或 macOS/Linux 终端)中输入以下命令:

pip install pandas

        如果你的python的版本比较旧,可以升级之后再安装pandas库:

python -m pip install --upgrade pip
pip install pandas

3.连接数据库并查询数据

       接下来,我们在python使用借助MySQL.connector 库来连接到 MySQL 数据库。

import mysql.connector  # 连接 MySQL
import pandas as pd  # 处理数据

      设置一个字典(这里是config 字典)用于配置 MySQL 数据库连接的参数。

#config字典主要是用来配置 MySQL 数据库连接的参数
config = {       
    'user': "root",  # MySQL 的用户名
    'password': "数据库密码",  # MySQL 数据库的密码(请替换成你的实际密码)
    'host': "your_host",  # 数据库服务器IP地址,如'127.0.0.1' 表示本地服务器
    'database': "economy",  # 需要连接的数据库名称
    'raise_on_warnings': True  # 当发生警告时,是否抛出异常(True 表示抛出异常)
}

           try 是 Python 中用于异常处理的关键字。若try代码块中的代码执行期间出现异常,程序会跳转到对应的except 块来处理该异常。

    try:
        # 连接数据库
        connection = mysql.connector.connect(**config)
        cursor = connection.cursor() #创建游标对象,用于执行 SQL 查询和获取查询结果

            这里补充说明一下创建游标对象的基本流程:

    1. 连接数据库:使用connect()方法连接数据库,获取数据库连接对象。

    2. 创建游标对象:调用cursor()方法,从数据库连接对象创建游标对象。

    3. 执行 SQL 语句:使用execute()方法在游标对象上执行 SQL 语句。

    4. 获取查询结果(如果是 SELECT 查询):使用fetchall()、fetchone()获取数据。

    5. 关闭游标和连接:分别调用close()方法关闭游标和数据库连接。

            那么接下来我们就按照这个流程,进行查询MySQL中的数据:

    
    query = "SELECT amount, quantity, is_refunded FROM transactions"
    cursor.execute(query)    # 查询数据
    
    # fetchall()获取所需的查询数据
    query = "SELECT amount, quantity, is_refunded FROM transactions"
        cursor.execute(query)
        results = cursor.fetchall()
    except mysql.connector.Error as err:
        print(f"数据库连接错误: {err}")
        connection = None  # except 避免未定义的情况出现,导致程序报错
    
    if connection and connection.is_connected():  #检查数据库连接是否成功是否
        print("数据库连接成功!")
        pass
    

              在上方的代码中,我们使用execute()方法在游标对象上执行 SQL 语句,并使用fetchall()获取数据。为了避免try代码块中的代码执行出错,导致的程序报错,使用except处理异常情况,确保程序可以进行下去。

    4.数据分析

            现在,我们已经把 MySQL 里的数据加载到 python 的 Pandas 中,那么接下来计算交易总额、总数量和退单率:

        total_amount = 0          #总交易额(初始值为0)
        total_quantity = 0        #总成交额(初始值为0)
        total_transactions = len(results)   # 总交易笔数(results 的长度)
        refund_count = 0           # 退单数(初始化为0)
    
    # 遍历 results 结果集,并进行数据处理
        for amount, quantity, is_refunded in results:
            total_amount += amount            # 累加订单金额
            total_quantity += quantity        # 累加购买的商品数量
            if is_refunded:                   # 如果该订单被退款
                refund_count += 1              # 退款笔数 +1
                pass
    # 计算退单率(退款订单数占比)
            if total_transactions > 0:
                refund_rate = (refund_count / total_transactions) * 100
            else:
                 refund_rate=0
            pass
    # 打印汇总统计信息
        print(f"总交易额: {total_amount}")
        print(f"总笔数: {total_transactions}")
        print(f"总成交量: {total_quantity}")
        print(f"退单率: {refund_rate:.2f}%")
        pass

    5.完整代码示例:

    import pandas as pd
    print(pd.__version__)
    
    import mysql.connector
    config ={
        'user':"root",
        'password':"数据库密码",
        'host':"127.0.0.1",
        'database':"economy",
        'raise_on_warnings': True
    }
    try:
        connection = mysql.connector.connect(**config)
        cursor= connection.cursor()
        query = "SELECT amount, quantity, is_refunded FROM transactions"
        cursor.execute(query)
        results = cursor.fetchall()
    except mysql.connector.Error as err:
        print(f"数据库连接错误: {err}")
        connection = None  # 避免未定义的情况
    if connection and connection.is_connected():  # 后续数据库操作代码
        print("数据库连接成功!")
        pass
    
        total_amount = 0
        total_quantity = 0
        total_transactions = len(results)
        refund_count = 0
    
        for amount, quantity, is_refunded in results:
            total_amount += amount
            total_quantity += quantity
            if is_refunded:
                refund_count += 1
                pass
            if total_transactions > 0:
                refund_rate = (refund_count / total_transactions) * 100
            else:
                 refund_rate=0
            pass
        print(f"总交易额: {total_amount}")
        print(f"总笔数: {total_transactions}")
        print(f"总成交量: {total_quantity}")
        print(f"退单率: {refund_rate:.2f}%")
        pass
    
    print("数据库连接已关闭")

    运行之后的结果是:

    6.总结:

              本文介绍了如何使用python和MySQL进行数据分析,首先我们学习了安装pandas库,使用connect()将 Python 与MySQL进行连接 ,然后使用execute()、fetchall()执行和查询数据结果,最后我们使用for循环计算交易数据(总交易额、退单率等)。

              希望本文能够帮助你理解如何使用python对数据库进行数据分析,并在实际数据处理中得到应用。

     

    您可能感兴趣的与本文相关的镜像

    Python3.8

    Python3.8

    Conda
    Python

    Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

    评论 1
    成就一亿技术人!
    拼手气红包6.0元
    还能输入1000个字符
     
    红包 添加红包
    表情包 插入表情
     条评论被折叠 查看
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值