{"id":22873142,"url":"https://github.com/rezemika/python-insee-pcs","last_synced_at":"2025-03-31T12:22:14.841Z","repository":{"id":62571101,"uuid":"110463994","full_name":"rezemika/python-insee-pcs","owner":"rezemika","description":"A set of tools to use the \"Professions et Catégories Socioprofessionnelles\" system of INSEE.","archived":false,"fork":false,"pushed_at":"2017-11-16T14:12:02.000Z","size":102,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-10T22:57:34.800Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rezemika.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-11-12T19:54:24.000Z","updated_at":"2021-05-26T22:21:00.000Z","dependencies_parsed_at":"2022-11-03T18:26:09.574Z","dependency_job_id":null,"html_url":"https://github.com/rezemika/python-insee-pcs","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rezemika%2Fpython-insee-pcs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rezemika%2Fpython-insee-pcs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rezemika%2Fpython-insee-pcs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rezemika%2Fpython-insee-pcs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rezemika","download_url":"https://codeload.github.com/rezemika/python-insee-pcs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246465509,"owners_count":20781970,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":[],"created_at":"2024-12-13T14:17:36.410Z","updated_at":"2025-03-31T12:22:14.820Z","avatar_url":"https://github.com/rezemika.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"INSEE PCS : Des outils pour utiliser les Professions et Catégories Socioprofessionnelles de l'INSEE\n===================================================================================================\n\n**INSEE-PCS** est un module Python permettant d'exploiter facilement les Professions et Catégories Socioprofessionnelles de l'INSEE (version 2003).\n\nPlus d'informations sur les PCS peuvent être trouvées sur le site de l'INSEE : [Nomenclatures des professions et catégories socioprofessionnelles](https://insee.fr/fr/information/2406153).\n\n**Ce code est testé uniquement avec Python 3. L'auteur de ce script n'est en aucune façon relié à l'INSEE, la base de données mise à disposition par ce script a été créée à partir des fichiers CSV fournis sous licence libre sur le site de l'INSEE.**\n\nVoici les différentes nomenclatures actuellement supportées :\n\n- `2003` ;\n- `2017-ESE`.\n\n# Installation\n\nCe module est disponnible sur PyPi. Il nécessite le module `peewee` pour fonctionner.\n\n    $ pip3 install peewee insee-pcs\n\n# Usage\n\n```python\nimport insee_pcs\n\n# Récupérer les PCS de la nomenclature de 2003\nypcs = insee_pcs.get_year(\"2003\")\n\n# Trouver la PCS \"1\" du niveau 1.\nypcs.get_PCS(1, \"1\")\n\"\u003cPCS '1' (level 1)\u003e\"\n\n# Trouver la description de la PCS \"382b\" du niveau 4.\nypcs.get_PCS(4, \"382b\").description\n\"Architectes salariés\"\n```\n\nIl est aussi possible d'itérer récursivement sur tous les enfants d'une PCS avec la méthode `iter_children()`. Cette méthode accepte un paramètre optionnel, `max_level`, permettant de définir un niveau maximum pour l'itération.\n\n```python\n# Affiche récursivement la PCS \"38\" (niveau 2) et ses enfants.\npcs = ypcs.get_PCS(2, \"32\")\nfor p in pcs.iter_children():\n    print(\"{spaces}{code} : {description}...\".format(\n        spaces=' '*(p.level-2)*2,\n        code=p.code,\n        description=p.description[:20]\n    ))\n\"\"\"\n32 : Cadres de la fonctio...\n  33 : Cadres de la fonctio...\n    331a : Personnels de direct...\n    332a : Ingénieurs de l’État...\n    332b : Ingénieurs des colle...\n    333a : Magistrats...\n    333b : Inspecteurs et autre...\n    333c : Cadres de la Poste...\n    333d : Cadres administratif...\n    333e : Autres personnels ad...\n    333f : Personnels administr...\n    334a : Officiers des Armées...\n    335a : Personnes exerçant u...\n  34 : Professeurs, profess...\n    341a : Professeurs agrégés ...\n    341b : Chefs d’établissemen...\n    342a : Enseignants de l’ens...\n    342e : Chercheurs de la rec...\n    343a : Psychologues spécial...\n    344a : Médecins hospitalier...\n    344b : Médecins salariés no...\n    344c : Internes en médecine...\n    344d : Pharmaciens salariés...\n  35 : Professions de l’inf...\n    351a : Bibliothécaires, arc...\n    352a : Journalistes (y. c. ...\n    352b : Auteurs littéraires,...\n    353a : Directeurs de journa...\n    353b : Directeurs, responsa...\n    353c : Cadres artistiques e...\n    354a : Artistes plasticiens...\n    354b : Artistes+B493 de la ...\n    354c : Artistes dramatiques...\n    354d : Artistes de la danse...\n    354g : Professeurs d’art (h...\n\"\"\"\n\n# Même chose, en limitant l'itération au niveau 3.\npcs = ypcs.get_PCS(1, \"3\")\nfor p in pcs.iter_children(max_level=3):\n    print(\"{spaces}{code} : {description}...\".format(\n        spaces=' '*(p.level-1)*2,\n        code=p.code,\n        description=p.description[:20]\n    ))\n\"\"\"\n3 : Cadres et profession...\n  31 : Professions libérale...\n    31 : Professions libérale...\n  32 : Cadres de la fonctio...\n    33 : Cadres de la fonctio...\n    34 : Professeurs, profess...\n    35 : Professions de l’inf...\n  36 : Cadres d’entreprise...\n    37 : Cadres administratif...\n    38 : Ingénieurs et cadres...\n\"\"\"\n```\n\nLa fonction `get_all_PCS_of_level()` prend un niveau (`int`) en paramètre et retourne toutes les PCS du niveau demandé dans un objet `SelectQuery` (convertible en liste).\n\n```python\n# Trouver toutes les PCS de niveau 1. Retourne un objet `SelectQuery`.\nprint(list(ypcs.get_all_PCS_of_level(1)))\n[\u003cPCS '1' (level 1)\u003e, \u003cPCS '2' (level 1)\u003e, \u003cPCS '3' (level 1)\u003e, \u003cPCS '4' (level 1)\u003e, \u003cPCS '5' (level 1)\u003e, \u003cPCS '6' (level 1)\u003e, \u003cPCS '7' (level 1)\u003e, \u003cPCS '8' (level 1)\u003e]\n```\n\nLes méthodes `get_PCS()` et `get_all_PCS_of_level()` acceptent toutes deux un paramètre `year` (`str`) pour spécifier une nomenclature sans passer par la méthode `get_year()`.\n\n```python\ninsee_pcs.PCS.get_PCS(1, '1', year=\"2003\")\n\"\u003cPCS '1' (level 1)\u003e\"\n```\n\nLa liste des nomenclatures disponnibles est accessible via l'attribut `AVAILABLE_YEARS`, qui contient un tuple de strings.\n\n```python\ninsee_pcs.AVAILABLE_YEARS\n(\"2003\", \"2017-ESE\")\n```\n\nL'objet `PCS` est un modèle Peewee classique, vous pouvez donc utiliser toutes les méthodes de Peewee dessus.\n\n```python\n# Trouver toutes les PCS 2003 de niveau 4 dont la description contient \"Éleveur\".\nprint(list(\n    PCS.select().where(PCS.year=\"2003\", PCS.level==4, PCS.description.contains(\"Éleveur\"))\n))\n[\u003cPCS '111d' (level 4)\u003e, \u003cPCS '111e' (level 4)\u003e, \u003cPCS '121d' (level 4)\u003e, \u003cPCS '121e' (level 4)\u003e, \u003cPCS '131d' (level 4)\u003e, \u003cPCS '131e' (level 4)\u003e]\n```\n\nPour obtenir une aide détaillée hors-ligne, vous pouvez aussi faire `help(\u003cobject\u003e)` (par exemple, `help(main_insee)`).\n\n# Dépendances\n\nCe module nécessite `peewee` (disponnible avec `pip`).\n\n# TODO\n\n- Traduction ?\n- Anciennes versions des PCS / CSP ? **[WIP]**\n\n# Licence\n\nCe module est distribué sous la licence AGPLv3, dont les termes sont disponnibles dans le fichier [LICENCE](LICENCE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frezemika%2Fpython-insee-pcs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frezemika%2Fpython-insee-pcs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frezemika%2Fpython-insee-pcs/lists"}