Skip to main content

A set of tools to use the 'Professions et Catégories Socioprofessionnelles' system of INSEE (a French statistical agency).

Project description

INSEE PCS : Des outils pour utiliser les Professions et Catégories Socioprofessionnelles de l'INSEE
===================================================================================================

**INSEE-PCS** est un module Python permettant d'exploiter facilement les Professions et Catégories Socioprofessionnelles de l'INSEE (version 2003).

Plus 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).

**Ce code est testé uniquement avec Python 3. Les versions de la PCS antérieures à 2003 ne sont pas supportées.**

# Installation

Ce module est disponnible sur PyPi. Il nécessite le module `peewee` pour fonctionner.

$ pip3 install peewee insee-pcs

# Usage

```python3
import insee_pcs

# Trouver la PCS "1" du niveau 1.
insee_pcs.get_PCS(1, "1")
"<PCS '1' (level 1)>"

# Trouver la description de la PCS "382b" du niveau 4.
insee_pcs.get_PCS(4, "382b").description
"Architectes salariés"
```

Il 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.

```python3
# Affiche récursivement la PCS "38" (niveau 2) et ses enfants.
pcs = insee_pcs.get_PCS(2, "32")
for p in pcs.iter_children():
print("{spaces}{code} : {description}...".format(spaces=' '*(p.level-2)*2, code=p.code, description=p.description[:20]))
"""
32 : Cadres de la fonctio...
33 : Cadres de la fonctio...
331a : Personnels de direct...
332a : Ingénieurs de l’État...
332b : Ingénieurs des colle...
333a : Magistrats...
333b : Inspecteurs et autre...
333c : Cadres de la Poste...
333d : Cadres administratif...
333e : Autres personnels ad...
333f : Personnels administr...
334a : Officiers des Armées...
335a : Personnes exerçant u...
34 : Professeurs, profess...
341a : Professeurs agrégés ...
341b : Chefs d’établissemen...
342a : Enseignants de l’ens...
342e : Chercheurs de la rec...
343a : Psychologues spécial...
344a : Médecins hospitalier...
344b : Médecins salariés no...
344c : Internes en médecine...
344d : Pharmaciens salariés...
35 : Professions de l’inf...
351a : Bibliothécaires, arc...
352a : Journalistes (y. c. ...
352b : Auteurs littéraires,...
353a : Directeurs de journa...
353b : Directeurs, responsa...
353c : Cadres artistiques e...
354a : Artistes plasticiens...
354b : Artistes+B493 de la ...
354c : Artistes dramatiques...
354d : Artistes de la danse...
354g : Professeurs d’art (h...
"""

# Même chose, en limitant l'itération au niveau 3.
pcs = get_PCS(1, "3")
for p in pcs.iter_children(max_level=3):
print("{spaces}{code} : {description}...".format(spaces=' '*(p.level-1)*2, code=p.code, description=p.description[:20]))
"""
3 : Cadres et profession...
31 : Professions libérale...
31 : Professions libérale...
32 : Cadres de la fonctio...
33 : Cadres de la fonctio...
34 : Professeurs, profess...
35 : Professions de l’inf...
36 : Cadres d’entreprise...
37 : Cadres administratif...
38 : Ingénieurs et cadres...
"""
```

La 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).

```python3
# Trouver toutes les PCS de niveau 1. Retourne un objet `SelectQuery`.
print(list(get_all_PCS_of_level(1)))
[<PCS '1' (level 1)>, <PCS '2' (level 1)>, <PCS '3' (level 1)>, <PCS '4' (level 1)>, <PCS '5' (level 1)>, <PCS '6' (level 1)>, <PCS '7' (level 1)>, <PCS '8' (level 1)>]
```

L'objet `PCS` est un modèle Peewee classique, vous pouvez donc utiliser toutes les méthodes de Peewee dessus.

```python3
# Trouver toutes les PCS de niveau 4 dont la description contient "Éleveur".
print(list(PCS.select().where(PCS.level==4, PCS.description.contains("Éleveur"))))
[<PCS '111d' (level 4)>, <PCS '111e' (level 4)>, <PCS '121d' (level 4)>, <PCS '121e' (level 4)>, <PCS '131d' (level 4)>, <PCS '131e' (level 4)>]
```

Pour obtenir une aide détaillée hors-ligne, vous pouvez aussi faire `help(<object>)` (par exemple, `help(main_insee)`).

# Dépendances

Ce module nécessite `peewee` (disponnible avec `pip`).

# TODO

- Traduction ?
- Anciennes versions des PCS / CSP ?

# Licence

Ce module est distribué sous la licence AGPLv3, dont les termes sont disponnibles dans le fichier [LICENCE](LICENCE).


Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

insee_pcs-0.1.0-py3-none-any.whl (36.1 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page