• 【mysql+pandas】用MySQL命令处理在python中处理DataFrame数据 pandasql库


    【mysql+pandas】用MySQL命令处理在python中处理DataFrame数据 pandasql库

    在这里插入图片描述


                     请添加图片描述请添加图片描述请添加图片描述

    1. 概述与pandasql安装

    我们在使用python做数据处理时,不仅仅能使用python的相关方法,借助pandasql库提供的接口,我们还可以使用mysql的命令。这无疑给mysql高手们在python数据处理中又打开了一扇窗。

    pandasql库的安装命令:

    pip install pandasql -i https://pypi.tuna.tsinghua.edu.cn/simple
    
    • 1

    在Python中执行MySQL命令,可以使用pandasql库中的 sqldf() 方法。

    使用sqldf()方法主要需要考虑传入两个参数,第一个即sql命令。
    再者就是需要指定作用域,这个参数可以选择locals()和globals() 。
    locals() 表示局部作用域,globals() 表示全局作用域。

    “select * from 表名”中的表名,即DataFrame的变量名。程序会从 局部 或 全局 的变量中寻找变量名等于表名的变量,来做查询。


    2. pandas+mysql操作展示

    首先准备一组数据

    import pandas as pd
    import pandasql as pdsql
     
    df = pd.DataFrame({'品种':list('AAAABBBCCD'),
                       '类型':list('abcdccdadd'),
                       '金额':[1,1,1,1,1,1,1,1,1,1]
                       })
    df
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    数据展示如下:
        在这里插入图片描述


    先做一个简单的示例。只查询所有金额数据为例:

    编辑SQL命令并执行:

    sql1 = """
    select 品种 from df
    """
    # 执行
    r1 = pdsql.sqldf(sql1, globals())
    r1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    查询结果如下:
              在这里插入图片描述


    然后做一个复杂些的聚合查询:

    sql2 =  """
    SELECT 品种,
    SUM(CASE WHEN 类型 IN ('a','b','c') 
        THEN 金额 
        ELSE 0 
        END
        ) '属于abc类型的金额汇总',
        SUM(金额) '按品种汇总金额',
        PRINTF('%2.2f%%', 
        SUM(CASE WHEN 类型 IN ('a','b','c') 
        THEN 金额 
        ELSE 0 
        END)*1.0/SUM(金额)) '占比'
    FROM df 
    GROUP BY 品种"""
    
    r2 = pdsql.sqldf(sql2, globals())
    r2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    查询结果如下:
            在这里插入图片描述


    本次分享就到这里,小啾感谢您的关注与支持!
    🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ


  • 相关阅读:
    阿里云服务 安装 Docker
    Groovy之Map操作
    Day18|106.从中序与后序遍历序列构造二叉树
    用友U8 crm客户关系管理存在任意文件上传漏洞
    字符串相似度问题
    高阶 DS --- AVL 树
    Python&C++相互混合调用编程全面实战-29导入pyffmpeg扩展库完成视频的打开
    从JVM方面解释java传递问题
    将 JavaScript 字符串隐藏为数字的 4 种简单方法以及如何删除浮点数上的尾随零
    如何使用lxml判断网站公告是否更新
  • 原文地址:https://blog.csdn.net/weixin_48964486/article/details/127591910