コード例 #1
0
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)
コード例 #2
0
    ''' 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):
コード例 #3
0
#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')]
コード例 #4
0
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
コード例 #5
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'], :]
コード例 #6
0
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'],:]
コード例 #7
0
#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')]