{"id":34850314,"url":"https://github.com/techtonique/querier","last_synced_at":"2026-04-27T09:01:32.835Z","repository":{"id":136134251,"uuid":"287446773","full_name":"Techtonique/querier","owner":"Techtonique","description":"A query language for Python Data Frames (currently Python)","archived":false,"fork":false,"pushed_at":"2024-05-30T22:06:00.000Z","size":198,"stargazers_count":2,"open_issues_count":2,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2026-01-15T22:20:43.843Z","etag":null,"topics":["data-frames","databases","sql","sql-query"],"latest_commit_sha":null,"homepage":"https://techtonique.github.io/querier/","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause-clear","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Techtonique.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGES.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"Techtonique"}},"created_at":"2020-08-14T04:54:50.000Z","updated_at":"2024-05-31T09:26:43.000Z","dependencies_parsed_at":null,"dependency_job_id":"4f9e277b-fa72-4227-b94e-48a587bdcd14","html_url":"https://github.com/Techtonique/querier","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Techtonique/querier","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Techtonique%2Fquerier","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Techtonique%2Fquerier/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Techtonique%2Fquerier/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Techtonique%2Fquerier/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Techtonique","download_url":"https://codeload.github.com/Techtonique/querier/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Techtonique%2Fquerier/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32329466,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T23:26:28.701Z","status":"online","status_checked_at":"2026-04-27T02:00:06.769Z","response_time":128,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["data-frames","databases","sql","sql-query"],"created_at":"2025-12-25T19:06:35.031Z","updated_at":"2026-04-27T09:01:32.830Z","avatar_url":"https://github.com/Techtonique.png","language":"Jupyter Notebook","readme":"![querier logo](the-querier.png)\n\n\u003chr\u003e  \n\nData Frames are widely used and useful structures for data wrangling. The `querier`  exposes a query language for Python `pandas` Data Frames, inspired from SQL's relational databases querying logic. \n\n![PyPI](https://img.shields.io/pypi/v/querier) [![PyPI - License](https://img.shields.io/pypi/l/querier)](https://github.com/thierrymoudiki/querier/blob/master/LICENSE) [![Downloads](https://pepy.tech/badge/querier)](https://pepy.tech/project/querier) [![Documentation](https://img.shields.io/badge/documentation-is_here-green)](https://techtonique.github.io/querier/)\n \n\n## Contents \n [Installing](#Installing) |\n [Package description](#package-description) |\n [Contributing](#Contributing) |\n [Tests](#Tests) |\n [API Documentation](#api-documentation) |\n [Dependencies](#dependencies) |\n [License](#License) \n\n## Installing \n\n- From Pypi: \n\n```bash\npip install querier \n```\n\n- From Github, for the development version: \n\n```bash\npip install git+https://github.com/thierrymoudiki/querier.git\n```\n\n## Package description\n\nThere are currently __9 types of operations__ available in the `querier`, with no plan to extend that list much further (to maintain a relatively simple mental model). These verbs will look familiar to `dplyr` users, but the implementation (I used `numpy`, `pandas` and `SQLite3`) and functions' signatures are different: \n\n- `concat`: __concatenates 2 Data Frames__, either horizontally or vertically\n- `delete`: __deletes rows__ from a Data Frame based on given criteria\n- `drop`: __drops columns__ from a Data Frame\n- `filtr`: __filters rows__ of the Data Frame based on given criteria\n- `join`: __joins 2 Data Frames__ based on given criteria (available for _completeness_ of the interface, this operation is already straightforward in pandas)\n- `select`: __selects columns__ from the Data Frame\n- `summarize`: obtains __summaries of data__ based on grouping columns\n- `update`: __updates a column__, using an operation given by the user\n- `request`: for operations more complex than the previous 8 ones, makes it possible to use a __SQL query on the Data Frame__\n\nThe following notebooks present __examples of use__ of the `querier`: \n\n- [`concat` example](/querier/demo/thierrymoudiki_251019_concat.ipynb)\n- [`delete` example](/querier/demo/thierrymoudiki_241019_delete.ipynb)\n- [`drop` example](/querier/demo/thierrymoudiki_241019_drop.ipynb)\n- [`filtr` example](/querier/demo/thierrymoudiki_231019_filtr.ipynb)\n- [`join` example](/querier/demo/thierrymoudiki_231019_join.ipynb)\n- [`select` example](/querier/demo/thierrymoudiki_231019_select.ipynb)\n- [`summarize` example](/querier/demo/thierrymoudiki_231019_summarize.ipynb)\n- [`update` example](/querier/demo/thierrymoudiki_251019_update.ipynb)\n- [`request` example](/querier/demo/thierrymoudiki_231019_request.ipynb)\n\n\n\n## Contributing\n\nYour contributions are welcome, and valuable. Please, make sure to __read__ the [Code of Conduct](CONTRIBUTING.md) first. \n\nIf you're not comfortable with Git/Version Control yet, please use [this form](https://forms.gle/uStfcXJjtGki2R3s6).\n\nIn Pull Requests, let's strive to use [`black`](https://black.readthedocs.io/en/stable/) for formatting: \n\n```bash\npip install black\nblack --line-length=80 file_submitted_for_pr.py\n```\n\n## Tests\n\nTBD\n\n## API documentation\n\n[https://techtonique.github.io/querier/](https://techtonique.github.io/querier/)\n\n## Dependencies \n\n- Numpy\n- Pandas\n- SQLite3\n\n\n## License\n\n[BSD 3-Clause](LICENSE) © Thierry Moudiki, 2019. \n\n","funding_links":["https://github.com/sponsors/Techtonique"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftechtonique%2Fquerier","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftechtonique%2Fquerier","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftechtonique%2Fquerier/lists"}