{ "info": { "author": "Christopher Prohm", "author_email": "mail@cprohm.de", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Science/Research", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2", "Programming Language :: Python :: 3", "Topic :: Scientific/Engineering" ], "description": "[![Build Status](https://api.travis-ci.org/chmp/framequery.svg?branch=master)](https://travis-ci.org/chmp/framequery)\n\n# framequery - SQL on dataframes \n\nframequery allows to query dataframes with SQL. Currently it targets both \n[pandas][] and [dask][], while aiming for [PostgreSQL][postgres] compatibility.\nframequery is also integrated with [sqlalchemy][].\n\n[dask]: dask.pydata.org\n[pandas]: pandas.pydata.org\n[postgres]: https://www.postgresql.org/\n[sqlalchemy]: http://www.sqlalchemy.org/\n\n## Getting started\n\nInstall framequery with `pip install framequery` and use \n[`framequery.execute`](docs/API.md#framequeryexecute) to run queries against\ndataframes in your scope:\n\n```python\nimport framequery as fq\nimport pandas as pd\n\nstores = pd.read_csv('data/stores.csv')\nsales = pd.read_csv('data/sales.csv')\n\nsales_by_country = fq.execute(\"\"\"\n SELECT country, sum(sales) as total_sales\n\n FROM sales\n JOIN stores\n ON sales.store_id = stores.id\n\n GROUP BY country\n\"\"\")\n\nprint(sales_by_country)\n```\n\nFor a details usage see the [usage guide](docs/Usage.md) and the \n[API reference](docs/API.md).\n\n## Changelog\n\n### Development\n\n- refactored code\n- aim for postgres compatibility\n- first-class dask support\n- sqlalchemy support\n- sort_values / order-by for dask\n\n### 0.1.0\n\n- initial release\n\n\n## License\n\n> The MIT License (MIT)\n>\n> Copyright (c) 2016 - 2017 Christopher Prohm\n>\n> Permission is hereby granted, free of charge, to any person obtaining a copy\n> of this software and associated documentation files (the \"Software\"), to\n> deal in the Software without restriction, including without limitation the\n> rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n> sell copies of the Software, and to permit persons to whom the Software is\n> furnished to do so, subject to the following conditions:\n>\n> The above copyright notice and this permission notice shall be included in\n> all copies or substantial portions of the Software.\n>\n> THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n> FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n> DEALINGS IN THE SOFTWARE.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/chmp/framequery", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "framequery", "package_url": "https://pypi.org/project/framequery/", "platform": "", "project_url": "https://pypi.org/project/framequery/", "project_urls": { "Homepage": "https://github.com/chmp/framequery" }, "release_url": "https://pypi.org/project/framequery/0.2.0/", "requires_dist": [ "pandas", "six", "dask[dataframe]; extra == 'dask'", "sqlalchemy; extra == 'sqlalchemy'" ], "requires_python": "", "summary": "SQL on dataframes", "version": "0.2.0" }, "last_serial": 3800242, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "225e0c012dd04cef44987b3c550e03c5", "sha256": "3132e4c6adc0a4811de4f0d85e21fbcab4fe97ec6326ee55880d140b0c42244a" }, "downloads": -1, "filename": "framequery-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "225e0c012dd04cef44987b3c550e03c5", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 21759, "upload_time": "2016-09-20T17:39:12", "url": "https://files.pythonhosted.org/packages/00/40/93269c8cbee2fb020b888b30437ecaed42170f72a5e6f59a97410e25efe0/framequery-0.1.0-py2.py3-none-any.whl" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "eddc92ec0dce81796caf0682d463df77", "sha256": "b43ba6b58f1c7b3dc15fc65051cdc5655e84fefd63bb4ee3b35a85e3ffa8ef3a" }, "downloads": -1, "filename": "framequery-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "eddc92ec0dce81796caf0682d463df77", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 51420, "upload_time": "2018-04-23T20:00:33", "url": "https://files.pythonhosted.org/packages/f6/9d/2db181b2bc025e3cc3cad9276363dece80faacd9f8fdc6db72351d04e8ac/framequery-0.2.0-py2.py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "eddc92ec0dce81796caf0682d463df77", "sha256": "b43ba6b58f1c7b3dc15fc65051cdc5655e84fefd63bb4ee3b35a85e3ffa8ef3a" }, "downloads": -1, "filename": "framequery-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "eddc92ec0dce81796caf0682d463df77", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 51420, "upload_time": "2018-04-23T20:00:33", "url": "https://files.pythonhosted.org/packages/f6/9d/2db181b2bc025e3cc3cad9276363dece80faacd9f8fdc6db72351d04e8ac/framequery-0.2.0-py2.py3-none-any.whl" } ] }