大熊猫的sqldf

pysqldf的Python项目详细描述


Build StatusPyPI VersionPyPI Monthly DownloadsPyPI License

pysqldf允许您使用sql语法查询pandas数据帧。 它的工作方式类似于r中的sqldfpysqldf试图提供 更熟悉的处理和清理数据的方法 python或pandas

安装

$ pip install pysqldf

基本知识

pysqldf中的主类是SQLDFSQLDF接受1个环境 构造函数中的变量集或多个参数。-一套 会话/环境变量(有效值字典,locals()globals())-临时文件类型-用户定义函数-用户 定义的聚合函数

pysqldf使用SQLite syntax。 任何可转换为pandasdataframes的数据都将自动 由pysqldf检测。您可以像查询任何常规sql一样查询它们 桌子。

$python>>>frompysqldfimportSQLDF,load_meat,load_births>>>sqldf=SQLDF(globals())>>>meat=load_meat()>>>births=load_births()>>>printsqldf.execute("SELECT * FROM meat LIMIT 10;").head()datebeefvealporklamb_and_muttonbroilersother_chickenturkey01944-01-0100:00:0075185128089NoneNoneNone11944-02-0100:00:0071377116972NoneNoneNone21944-03-0100:00:0074190112875NoneNoneNone31944-04-0100:00:006508997866NoneNoneNone41944-05-0100:00:00681106102978NoneNoneNone>>>q="SELECT m.date, m.beef, b.births FROM meat m INNER JOIN births b ON m.date = b.date;">>>printsqldf.execute(q).head()datebeefbirths4032012-07-0100:00:002200.83684504042012-08-0100:00:002367.53595544052012-09-0100:00:002016.03619224062012-10-0100:00:002343.73476254072012-11-0100:00:002206.6320195>>>q="SELECT strftime('%Y', date) AS year, SUM(beef) AS beef_total FROM meat GROUP BY year;">>>printsqldf.execute(q).head()yearbeef_total0194488011194599362194690103194710096419488766

用户定义函数和用户定义聚合函数 支持。

$python>>>frompysqldfimportSQLDF,load_iris>>>importmath>>>importnumpy>>>ceil=lambdax:math.ceil(x)>>>udfs={"ceil":lambdax:math.ceil(x)}>>>udafs={"variance":lambdavalues:numpy.var(values)}>>># or you can also define aggregation function as class>>># class variance(object):...#     def __init__(self):...#         self.a = []...#     def step(self, x):...#         self.a.append(x)...#     def finalize(self):...#         return numpy.var(self.a)...>>># udafs={ "variance": variance }>>>iris=load_iris()>>>sqldf=SQLDF(globals(),udfs=udfs,udafs=udafs)>>>sqldf.execute("""
    SELECT
        ceil(sepal_length) AS sepal_length,
        ceil(sepal_width) AS sepal_width,
        ceil(petal_length) AS petal_length,
        ceil(petal_width) AS petal_width,
        species
    FROM iris;
    """).head()sepal_lengthsepal_widthpetal_lengthpetal_widthspecies06421Iris-setosa15321Iris-setosa25421Iris-setosa35421Iris-setosa45421Iris-setosa>>>sqldf.execute("SELECT species, variance(sepal_width) AS var FROM iris GROUP BY species;")speciesvar0Iris-setosa0.1422761Iris-versicolor0.0965002Iris-virginica0.101924

文档

SQLDF(env, inmemory=True, udfs={},udafs={})

env:sql执行环境的变量映射字典。关键是 SQL变量名称和值是您的程序变量。locals()globals()用于简单赋值。

inmemory:sqlite数据库选项。

udfs:用户定义函数的字典。字典键是 函数名,字典值为函数。见sqlite3 document

udafs:用户定义聚合函数的字典。词典 键是函数名,字典值是聚合函数或类。 如果value是function,则function获取一个列列表参数 值,它应该返回聚合的值。另一种情况(值是 类),请参见sqlite3 document

load_iris()load_meat()load_births()

加载示例数据帧数据。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
使用Java将JSON转换为哈希映射   java如何通过使用MapStruct从源对象复制值来填充目标对象内部的映射?   注入泛型类型为@InjectGuice的类时发生java错误   字符串如何在JavaIDE中导入基本符号   在Java中将JSON转换为List<List<String>>   java Java9 HttpClient SSLHandshakeException   java jOOQ代码生成器   java如何调整图标(图像按钮),使其不会放大?   java我可以在使用Eclipse时安装2个或更多Android SDK吗   sqlite Java实现DAO   如何解决此错误?“java.lang.NoSuchFieldError:org.apache.http.conn.ssl.SSLConnectionSocketFactory上的实例。<clinit>。”   java Maven:将基于OSP的zip文件解压缩到WEBINF/lib   java如何在每次调用函数时获取当前gps位置?