大熊猫的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查找和替换字符串中的括号   java如何缓存从自动完成API检索的搜索结果   java Jhipster War生成的版本在6.3.1(单机版和tomcat版)中似乎不起作用   java矩形不更新也不显示颜色   java用户向谁发送JMS中客户端确认模式的确认   java为什么javac需要引用类的接口而ECJ不需要?   尝试使用ProcessBuilder执行Java应用程序时,类未找到异常   spring在Java web应用程序中将RESTful URL映射到静态HTML页面   JavaMail如何发送带有图像的html内容   java如果缓存不能保留引用,如何缓存与类相关的方法对象   java Tomcat:热部署新JAR   java Spring的许多缓存实现   java为什么YAMLGenerator不关闭流取决于配置   java如何使用复杂查询获取带有Ebean的项目列表   c#如何使类只允许创建3个对象   正则表达式替换后的java格式错误的xml