Skip to content

Instantly share code, notes, and snippets.

@taniki
Last active Nov 3, 2021
Embed
What would you like to do?
Obtenir un fichier csv de la base FINESS de meilleur qualitée
import pandas as pd
source = 'https://static.data.gouv.fr/resources/finess-extraction-du-fichier-des-etablissements/20200305-105408/etalab-cs1100507-stock-20200304-0416.csv'
# %%
headers = [
'section',
'nofinesset',
'nofinessej',
'rs',
'rslongue',
'complrs',
'compldistrib',
'numvoie',
'typvoie',
'voie',
'compvoie',
'lieuditbp',
'commune',
'departement',
'libdepartement',
'ligneacheminement',
'telephone',
'telecopie',
'categetab',
'libcategetab',
'categagretab',
'libcategagretab',
'siret',
'codeape',
'codemft',
'libmft',
'codesph',
'libsph',
'dateouv',
'dateautor',
'maj',
'numuai'
]
geoloc_names = [
'nofinesset',
'coordxet',
'coordyet',
'sourcecoordet',
'datemaj'
]
# %%
# charge le csv avec les bons noms de colonne
df = pd.read_csv(source, sep=';', encoding="Windows-1252", skiprows=1, header=None, names=headers)
df.drop(columns=['section'], inplace=True)
df.head()
# %%
# Découpe le tableau en deux car les géolocalisations sont à la fin du tableau 🙃
geoloc = df.iloc[int(len(df)/2):]
geoloc.drop(columns=geoloc.columns[5:], inplace=True)
geoloc.rename(columns=lambda x: geoloc_names[list(df.columns).index(x)], inplace=True)
geoloc.head()
# %%
df = df.iloc[:int(len(df)/2)]
# %%
# Recolle les morceaux
df['nofinesset'] = df['nofinesset'].astype(str)
df.shape
geoloc['nofinesset'] = geoloc['nofinesset'].astype(str)
geoloc.shape
final = df.merge(geoloc, on='nofinesset', how='left')
final.head()
final.shape
# %%
# sauvegarde en utf-8
final.to_csv('finess-clean.csv', encoding='utf-8', sep=';')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment