import datetime as dt import matplotlib.pyplot as plt import scipy.stats as stats from medic_gouv import load_medic_gouv from medicam import load_medicam # parametres du calcul period = range(2002,2014) info_utiles_from_gouv = ['CIP7','Id_Groupe','Type', 'Date_declar_commerc', 'Taux_rembours','Prix'] # chargement des donnees medicam, axis0, axis1, axis2 = load_medicam(period) maj_bdm = 'maj_20140630\\' gouv = load_medic_gouv(maj_bdm, var_to_keep=info_utiles_from_gouv, CIP_not_null=True) # On mets les dates au format datetime for var in info_utiles_from_gouv: if 'date' in var or 'Date' in var: gouv[var] = gouv[var].map(lambda t : dt.datetime.strptime(t,"%d/%m/%Y").date()) ## ajoute des données dans médicam base_idx = axis2.index('base') # Pour chaque médicament on détermine l'année de la première vente : premiere_vente = pd.Series(index=axis0.index) derniere_vente = pd.Series(index=axis0.index) for year in range(len(period)): vente = medicam[:,year,base_idx] > 0 cond_prem = vente & premiere_vente.isnull() premiere_vente[cond_prem] = year + min(period)
''' fonction plus générique que son nom le laisse penser qui retourne pour chaque groupe un valeur pour tous les mois ''' data = pd.Series(index=range(60)) for k in range(60): data.loc[k] = __prix_moyen(group, k) return data # TODO: faire en numpy plutôt que de créer une Serie à chaque fois prix_moyen = all_tab.groupby('cip7').apply(_prix_moyen) prix_moyen = prix_moyen.fillna(0) prix_moyen.reset_index(inplace=True) # récupéreation des infos de .gouv dessus from medic_gouv import load_medic_gouv maj_bdm = 'maj_20140630\\' infos = load_medic_gouv(maj_bdm, ['Date_AMM', 'CIP7', 'Label_presta', 'Taux_rembours', 'Prix', 'Type']) table = prix_moyen.merge(infos, left_on='cip7', right_on='CIP7') # TODO: comprendre pourquoi le match est très partiel (cf ci-dessous) test = prix_moyen.merge(infos, left_on='cip7', right_on='CIP7', how='left') test = test[test['CIP7'].isnull()] test[[58,59,'cip7']] # Médicament retiré du marché # Médicament qui n'appartient pas à la liste des spécialité # référence de l'AFSSAPS : parapharmcie, homéopathie ? table['Taux_rembours'].value_counts() vendus_sur_la_periode = table[(table[0] > 0) & (table[59] > 0)] qte = all_tab.groupby('cip7').apply(_prix_moyen) vendus_sur_la_periode.mean() for year in range(4):
#Ancienne maj maj_bdm_old = 'maj_20140630\\' #Nouvelle maj maj_bdm_new = 'maj_20140801\\' #Variables d'interet info_utiles_from_gouv = [ 'Etat', 'Date_AMM', 'CIP7', 'Date_declar_commerc', 'Taux_rembours', 'Prix', 'Id_Groupe', 'Type', 'Code_Substance', 'Nom_Substance', 'Dosage', 'Valeur_SMR', 'Valeur_ASMR' ] #Extraction des bases a traiter gouv_old = load_medic_gouv(maj_bdm_old, info_utiles_from_gouv, CIP_not_null=True) gouv_new = load_medic_gouv(maj_bdm_new, info_utiles_from_gouv, CIP_not_null=True) #Nouveau medicaments de la base medic_new = gouv_new.loc[-gouv_new['CIP7'].isin(gouv_old['CIP7'])] print 'Nouveaux medicaments dans la base :' print medic_new.loc[:, ('CIP7', 'Nom')] #Medicaments sortis de la base medic_drop = gouv_old.loc[-gouv_old['CIP7'].isin(gouv_new['CIP7'])] print 'Medicaments sortis de la base :' print medic_drop.loc[:, ('CIP7', 'Nom')]
import scipy.stats as stats from medic_gouv import load_medic_gouv from medicam import load_medicam # parametres du calcul period = range(2002, 2014) info_utiles_from_gouv = [ 'CIP7', 'Id_Groupe', 'Type', 'Date_declar_commerc', 'Taux_rembours', 'Prix' ] # chargement des donnees medicam, axis0, axis1, axis2 = load_medicam(period) maj_bdm = 'maj_20140630\\' gouv = load_medic_gouv(maj_bdm, var_to_keep=info_utiles_from_gouv, CIP_not_null=True) # On mets les dates au format datetime for var in info_utiles_from_gouv: if 'date' in var or 'Date' in var: gouv[var] = gouv[var].map( lambda t: dt.datetime.strptime(t, "%d/%m/%Y").date()) ## ajoute des données dans médicam base_idx = axis2.index('base') # Pour chaque médicament on détermine l'année de la première vente : premiere_vente = pd.Series(index=axis0.index) derniere_vente = pd.Series(index=axis0.index) for year in range(len(period)): vente = medicam[:, year, base_idx] > 0
import pdb from medic_gouv import load_medic_gouv from medicam import load_medicam years = range(2002, 2013) info_utiles_from_gouv = [ 'Etat', 'Date_AMM', 'CIP7', 'Date_declar_commerc', 'Taux_rembours', 'Prix', 'Id_Groupe', 'Type', 'Code_Substance', 'Nom_Substance', 'Dosage', 'Valeur_SMR', 'Valeur_ASMR' ] # chargement des donnees medicam, axis0, axis1, axis2 = load_medicam(years) maj_bdm = 'maj_20140630\\' gouv = load_medic_gouv(maj_bdm, info_utiles_from_gouv, CIP_not_null=True) ## On veut les substance dans lesquelles il y eu perte de brevet # il faut deux conditions, ne pas avoir de generique au debut, en avoir a la fin first = years[0] last = years[-1] ''' Détermine les groupes avec lesquels on travaille ensuite''' substance_princeps = gouv.loc[gouv['Type'] == 0, ['Code_Substance', 'Nom_Substance']] substance_princeps.drop_duplicates(inplace=True) gouv['is_generique'] = gouv['Type'] > 0 princeps = gouv.loc[~gouv['is_generique'], :] generiques = gouv.loc[gouv['is_generique'], :]
from medic_gouv import load_medic_gouv from medicam import load_medicam years = range(2002,2013) info_utiles_from_gouv = ['Etat', 'Date_AMM', 'CIP7', 'Date_declar_commerc', 'Taux_rembours', 'Prix', 'Id_Groupe', 'Type', 'Code_Substance', 'Nom_Substance', 'Dosage', 'Valeur_SMR', 'Valeur_ASMR'] # chargement des donnees medicam, axis0, axis1, axis2 = load_medicam(years) maj_bdm = 'maj_20140630\\' gouv = load_medic_gouv(maj_bdm, info_utiles_from_gouv, CIP_not_null=True) ## On veut les substance dans lesquelles il y eu perte de brevet # il faut deux conditions, ne pas avoir de generique au debut, en avoir a la fin first = years[0] last = years[-1] ''' Détermine les groupes avec lesquels on travaille ensuite''' substance_princeps = gouv.loc[gouv['Type']==0,['Code_Substance','Nom_Substance']] substance_princeps.drop_duplicates(inplace=True) gouv['is_generique'] = gouv['Type'] > 0 princeps = gouv.loc[~gouv['is_generique'],:] generiques = gouv.loc[gouv['is_generique'],:]
#Ancienne maj maj_bdm_old = 'maj_20140630\\' #Nouvelle maj maj_bdm_new = 'maj_20140801\\' #Variables d'interet info_utiles_from_gouv = ['Etat','Date_AMM', 'CIP7','Date_declar_commerc','Taux_rembours','Prix', 'Id_Groupe','Type', 'Code_Substance','Nom_Substance','Dosage', 'Valeur_SMR','Valeur_ASMR'] #Extraction des bases a traiter gouv_old = load_medic_gouv(maj_bdm_old, info_utiles_from_gouv, CIP_not_null=True) gouv_new = load_medic_gouv(maj_bdm_new, info_utiles_from_gouv, CIP_not_null=True) #Nouveau medicaments de la base medic_new = gouv_new.loc[-gouv_new['CIP7'].isin(gouv_old['CIP7'])] print 'Nouveaux medicaments dans la base :' print medic_new.loc[:,('CIP7','Nom')] #Medicaments sortis de la base medic_drop = gouv_old.loc[-gouv_old['CIP7'].isin(gouv_new['CIP7'])] print 'Medicaments sortis de la base :' print medic_drop.loc[:,('CIP7','Nom')]