zl程序教程

您现在的位置是:首页 >  后端

当前栏目

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

2023-09-11 14:14:25 时间

【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

在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

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


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

编辑SQL命令并执行:

sql1 = """
select 品种 from df
"""
# 执行
r1 = pdsql.sqldf(sql1, globals())
r1

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


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

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

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


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