Skip to main content
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).


Release files for insee-pcs 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for insee-pcs 0.1.0
File Interpreter ABI Platform
insee_pcs-0.1.0-py3-none-any.whl Python 3 none any Details

Release files / insee_pcs-0.1.0-py3-none-any.whl

Download URL insee_pcs-0.1.0-py3-none-any.whl
Size 36.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d44cff46eb8040b237f76bdc1dfe2fcae497a71a6da59d3b86163e3aadfec04a
BLAKE2b-256 checksum
How to use checksums
e8244d69989990299d728df5ca61c3130ffc93df36d7fed92b7fcbf088f4a6ac
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.1.0 This release

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page