init Extraction pivot de la bd status

This commit is contained in:
Colas 2025-01-31 11:05:31 +01:00
parent b7ba10d860
commit 21149360e2

78
pivot_bdc_status.py Normal file
View File

@ -0,0 +1,78 @@
import pandas as pd
import numpy as np
from pycen import con_gn
NAME_OUT = '/home/colas/Documents/tmp/v_bdc_status2.xlsx'
FileIn = '/media/colas/SRV/FICHIERS/TRANSFERTS-EQUIPE/CG/BDC_STATUTS_15.xls'
db = False
if db :
sql = "SELECT * FROM taxonomie.v_bdc_status"
df = pd.read_sql_query(sql,con_gn)
if FileIn is not None :
df = pd.read_excel(FileIn)
df.columns = df.columns.str.lower()
geo = ['Isère','Rhône-Alpes','France','France métropolitaine',np.nan]
df = df[df.lb_adm_tr.isin(geo)]
df.drop(columns=['full_citation'],inplace=True)
df.replace({
r'[]':"'",
r'[àáâãäå]':'a',
r'[èéêë]':'e',
r'[ìíîï]':'i',
r'[òóôõö]':'o',
r'[ùúûü]':'u',
r'[]':"-"
},regex=True,inplace=True)
DF = df.copy()
# ['cd_nom', 'cd_ref', 'rq_statut', 'code_statut', 'label_statut',
# 'cd_type_statut', 'thematique', 'lb_type_statut', 'regroupement_type',
# 'cd_st_text', 'cd_sig', 'cd_doc', 'niveau_admin', 'cd_iso3166_1',
# 'cd_iso3166_2', 'doc_url', 'type_value']
pivot = pd.pivot_table(
DF,
values='code_statut',
index=['cd_nom', 'cd_ref'#,'niveau_admin','lb_adm_tr'
],
columns=['cd_type_statut'],
aggfunc=list,fill_value=None)
for c in pivot.columns:
pivot[c] = [x[0] if x is not np.NaN and len(x)==1 else x for x in pivot[c]]
pivot['DH'] = [','.join(x) if (x is not np.NaN) and (len(x)==2) else x for x in pivot['DH']]
pivot.DH.replace({'CDH':''},regex=True,inplace=True)
pivlib = pd.pivot_table(
DF,
values='label_statut',
index=['cd_nom', 'cd_ref'#,'niveau_admin','lb_adm_tr'
],
columns=['cd_type_statut'],
aggfunc=list,fill_value=None)
for c in pivlib.columns:
pivlib[c] = [x[0] if x is not np.NaN and len(x)==1 else x for x in pivlib[c]]
pivlib['DH'] = [','.join(x) if (x is not np.NaN) and (len(x)==2) else x for x in pivlib['DH']]
pivlib.DH.replace({'CDH':''},regex=True,inplace=True)
print('INIT writer')
with pd.ExcelWriter(NAME_OUT) as writer:
DF.to_excel(
writer,sheet_name='v_bdc_status'
)
# writer.save()
print('v_bdc_status OK !')
pivot.to_excel(
writer,sheet_name='pivot_table'
)
# writer.save()
print('pivot_table OK !')
pivlib.to_excel(
writer,sheet_name='pivot_libel'
)
writer.save()
print('pivot_libel OK !')