{"id":46326799,"url":"https://github.com/webartifex/tidy-data","last_synced_at":"2026-03-04T16:30:45.712Z","repository":{"id":37200864,"uuid":"146089997","full_name":"webartifex/tidy-data","owner":"webartifex","description":"[READ-ONLY MIRROR] A Python implementation for Hadley Wickham's Tidy Data paper","archived":false,"fork":false,"pushed_at":"2025-03-05T22:50:25.000Z","size":3686,"stargazers_count":1,"open_issues_count":1,"forks_count":20,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-23T15:06:45.176Z","etag":null,"topics":["data-cleaning","data-science","messy-data","python","tidy-data"],"latest_commit_sha":null,"homepage":"https://code.webartifex.biz/alexander/tidy-data","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/webartifex.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-08-25T11:32:37.000Z","updated_at":"2024-07-08T15:14:42.000Z","dependencies_parsed_at":"2023-01-31T19:15:35.752Z","dependency_job_id":null,"html_url":"https://github.com/webartifex/tidy-data","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/webartifex/tidy-data","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webartifex%2Ftidy-data","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webartifex%2Ftidy-data/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webartifex%2Ftidy-data/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webartifex%2Ftidy-data/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/webartifex","download_url":"https://codeload.github.com/webartifex/tidy-data/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webartifex%2Ftidy-data/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30086451,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-04T15:40:14.053Z","status":"ssl_error","status_checked_at":"2026-03-04T15:40:13.655Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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-cleaning","data-science","messy-data","python","tidy-data"],"created_at":"2026-03-04T16:30:45.385Z","updated_at":"2026-03-04T16:30:45.633Z","avatar_url":"https://github.com/webartifex.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Tidy Data\n\nThe purpose of this repository is to illustrate how the data cleaning process described\n    in the paper \"[Tidy Data](tidy-data.pdf)\" by Hadley Wickham, a member of the\n    [RStudio](https://rstudio.com/) team, can be done in\n    [Python](https://www.python.org/).\n\nThe paper was published in 2014 in the [Journal of Statistical Software](https://www.jstatsoft.org/article/view/v059i10).\nThe author offers it for free [here](http://vita.had.co.nz/papers/tidy-data.html).\nFurthermore, the original [R](https://www.r-project.org/) code is available [here](https://github.com/hadley/tidy-data).\n\nAfter installing the dependencies for this project (cf., the [installation notes](https://github.com/webartifex/tidy-data#installation)\n    below), it is recommended to first read the paper to get the big picture and\n    then work through the six Jupyter notebooks listed below.\n\n\n## Summary\n\n\n### Definition\n\n**Tidy** data is defined as data that comes in a table form adhering to the\n    following requirements:\n1. each variable is a column,\n2. each observation a row, and\n3. each type of observational unit forms a table.\n\nThis is equivalent to [Codd's 3rd normal form](https://en.wikipedia.org/wiki/Third_normal_form),\n    a concept from the theory on relational databases.\nA dataset that does *not* satisfy these properties is called **messy**.\n\n\n### Tidying Data\n\nThe five most common problems with messy data are:\n\n- column headers are values, not variable names\n  (cf., [notebook 1](https://nbviewer.jupyter.org/github/webartifex/tidy-data/blob/master/1_column_headers_are_values.ipynb))\n- multiple variables are stored in one column\n  (cf., [notebook 2](https://nbviewer.jupyter.org/github/webartifex/tidy-data/blob/master/2_multiple_variables_stored_in_one_column.ipynb))\n- variables are stored in both rows and columns\n  (cf., [notebook 3](https://nbviewer.jupyter.org/github/webartifex/tidy-data/blob/master/3_variables_are_stored_in_both_rows_and_columns.ipynb))\n- multiple types of observational units are stored in the same table\n  (cf., [notebook 4](https://nbviewer.jupyter.org/github/webartifex/tidy-data/blob/master/4_multiple_types_in_one_table.ipynb))\n- a single observational unit is stored in multiple tables\n  (cf., [notebook 5](https://nbviewer.jupyter.org/github/webartifex/tidy-data/blob/master/5_one_type_in_multiple_tables.ipynb))\n\n\n### Case Study\n\nA case study (cf., [notebook 6](https://nbviewer.jupyter.org/github/webartifex/tidy-data/blob/master/6_case_study.ipynb))\n    shows the advantages of tidy data as a standardized input to statistical functions.\n\n\n## Installation\n\nGet a local copy of this repository with [git](https://git-scm.com/).\n\n`git clone https://github.com/webartifex/tidy-data.git`\n\nIf you are not familiar with [git](https://git-scm.com/), simply download the latest\n    version of the files in a zip archive [here](https://github.com/webartifex/tidy-data/archive/master.zip).\n\nThis project uses [poetry](https://python-poetry.org/docs/) to manage its dependencies.\nInstall all third-party packages into a [virtual environment](https://docs.python.org/3/library/venv.html).\n\n`poetry install`\n\nAlternatively, use the [Anaconda Distribution](https://www.anaconda.com/products/individual)\n    that *should* also suffice to run the provided notebooks.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwebartifex%2Ftidy-data","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwebartifex%2Ftidy-data","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwebartifex%2Ftidy-data/lists"}