Spaces:
Sleeping
Sleeping
File size: 7,013 Bytes
8af460e 2beacbe 2f80352 7fe2e7a 2beacbe fd5272a 2beacbe fd5272a 99e3269 8af460e 2beacbe 8af460e |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 |
import streamlit as st
import pandas as pd
import requests
# Token d'accès Dropbox (⚠️ Ne pas partager publiquement)
ACCESS_TOKEN = "sl.u.AFthKXj6h47zwLFIL7K_Pmj2a1WrN1H4XPY1vU7j_Umw9O52HqXTZ1ksOkYLdOeFgG3-OhFXRmmVCAuqNCrB2jTaLwhZfqMn-2l7T7DFmzZiVjKqdWt6Rhm5NFKewKocXLnEBVlRDaDmD3scjsyPY6rSxKaAI3pHPB7G9w3aKlwQzfCEbyf3LMqBgawcopqzFOlbzdQqgUAfTgTGfQ47TSavObixEvVc2vzK1k7ZxO7O0I-ivIhnrrDv6r53sGFQ2UDqS_Nyv-f032lvkXwa-FH5-3GwGQajbTDnxOzpt9KWvQ5pJCuXvb865DX8rONOmZ_jyqgkY5O8TsjkVwXWRDUwWgQ5hMjJbS42FWMnDfI9htvZQ6fm8vEM1GTBSp6m_JyYtZUsSlGMZynheJUt6EMxvspsd2woFz5NZN3w5EOM81wwNJdwg1hcB4p8vzJbecxetyz2NFiYMl-N6cV_WBIY35h6pdZGrIfcUYBBNaK5muT4bz2CjY4vXYo0TgkF14UyaWd3J44IDHKeIvT8nroeOks3VvTohjuAMtgNm6QfxN7AB1B0E75ipnurholM8I7zfLNejFgMzI2FcSGigDr7ovPKCj2x9ocwJSzJTNv7gbOI0Ot-1UQKCozKilo4HCR28cWjMqlcQ8cMFNwsc2pz7lbKhf9eEj6mn2r6vGnHVfXqjtbyXWn7Pj9V2n6CQD25DmabsR8JNboiafDH2mJHDSidvF_eF3bsPdkMQBARkPVHLDCNHasUErBTxeQgvUTdufcxfldlcMPFDUT7t3i0rPEohlwtUL8cyDk8SyTGzOVNUCwr9XI7YkkNkYV3_HUesJPf6P6R8EkqoiUC4wtkcFK9EJTQ8ZX5P9iGDNPpGt1k3FidfSdagRikJHCwqw4h2ffL68dcOZAmpXE3e-kNY5DUcr1_XuUxlS7ypQ1Q_oFNjj5r2C_qMU5ISNv-bWTKenNe7m2OLNGCeOaUANSpUFW1z61VI98nGUArRwdtni-cMWiyke1ZAk-0JS_0zkxjfXXM5dwFCvRix18HH39ARXJu3L3nYYdpH17EX7aA8IjVq3kMrQ5CBqk7G-ZbCVuEzsRFxgpYHtdsw1ex8m6al--g726r5h-9XnJgx0cdDKIBeRt8FQvAvp3ULWzuMHiL8cebClWCAc0nPv9skRyM39WvwSJuMF3S6c8QCBNKm3HEqiAL3HEdqRWsZIbCsx9rc8KVShHDANbkkf34fg4NzHNHfwYGvKN2fokWK7EnuEjn5LJ07x5iE8shnbFCSxBfKpk_tAfGlX-UuWg8cPbPJ2aP6MbTiKtWVkFI_vTkDGDEX_Ax9ToJbCpR8ieW7FLupSwdsHVHmvMio9EjW6jpvx-EENq6e8X1TImBDv8Q6H7-LkBZYbJ56iddzA0ItJqrNbhT5ygWZvrUL1oLgjwkgcwDd45bF2SLp_nDICj5eQ"
# Chemin Dropbox correspondant à l'URL publique partagée
FILE_PATH = "/data.xlsx" # Assurez-vous que ce chemin est correct côté Dropbox
# Fonction pour télécharger le fichier Dropbox
def download_file_from_dropbox():
headers = {
"Authorization": f"Bearer {ACCESS_TOKEN}",
"Dropbox-API-Arg": f'{{"path": "{FILE_PATH}"}}'
}
url = "https://content.dropboxapi.com/2/files/download"
response = requests.post(url, headers=headers, stream=True)
if response.status_code == 200:
with open("data.xlsx", "wb") as file:
for chunk in response.iter_content(chunk_size=8192):
file.write(chunk)
return "data.xlsx"
else:
st.error(f"Erreur de téléchargement Dropbox : {response.status_code}")
return None
liste_vaccin = ['YELLOW FEVER', 'Penta', 'VPO', 'VPI', 'nOPV2', 'TD','Mosquirix', 'PCV13', 'MEASLES', 'BCG', 'Janssen', 'Rota', 'MENINGO', 'HPV', 'Mencevax', 'Hepatite B']
data_ = None
# Initialization
if 'data' not in st.session_state:
st.session_state['data'] = None
if 'data_file' not in st.session_state:
st.session_state['data_file'] = None
if 'auto_clean_state' not in st.session_state:
st.session_state['auto_clean_state'] = None
if 'dataframe_mappi_region' not in st.session_state:
st.session_state['dataframe_mappi_region'] = None
# chargement des donnees
@st.cache_data
def load_data(data_file):
data = pd.read_excel(data_file)
return data
# fontion de retraits des colonnes vide
def empty_columns_cleaner(data):
temp = dict(data.isna().sum())
_ = []
for i in list(data.columns):
if temp[f"{i}"] == data.shape[0] :
_.append(i)
data.drop(columns=f"{i}", inplace=True)
return _
# fonction de retrait des colonnes avec une valeur unique
def remove_one_columns_values(data):
_ = []
for i in list(data.columns):
if len(list(data[f"{i}"].unique())) == 1:
data.drop(columns=f"{i}", inplace=True)
_.append(i)
return _
## gestion de l'importation et de la manipulation des donnees
# importation et previsualisation des donnees
if st.session_state['data_file'] is None:
data_file = download_file_from_dropbox()
st.session_state['data_file'] = data_file
else:
data_file = st.session_state['data_file']
if data_file :
data = load_data(data_file)
# remplacement
st.session_state["data"] = data
# afficher le jeu de donnees initiale
st.header("Previsualisation des donnees pre-nettoyage")
# creation des filtres et des fonctions d'explorations
form_1 = st.form("filtre")
with form_1:
list_colonne = st.multiselect("Choisir les colonnes a appliquer", options=list(data.columns), )
list_ligne = st.select_slider("Choisir les lignes a afficher", options=[i for i in range(0,data.shape[0])], value=(0,int(data.shape[0]-1)))
col3, col4 = st.columns([4,1])
with col3:
btn_3 = st.form_submit_button("Appliquer", use_container_width=True)
if btn_3:
if list_colonne :
data_ = data.loc[:,list(list_colonne)]
if list_ligne:
data_ = data_.iloc[[i for i in range(list_ligne[0], list_ligne[1]+1)]]
else:
if list_ligne:
data_ = data
data_ = data_.iloc[[i for i in range(list_ligne[0], list_ligne[1]+1)]]
with col4:
btn_4 = st.form_submit_button("Reinitialiser",use_container_width=True)
if btn_4:
list_colonne.clear()
list_ligne = ()
# choix des colonnees a afficher
expander_1 = st.expander("Previsualisation des donnees pre-nettoyage", expanded=True)
with expander_1:
if data_ is None:
st.dataframe(data)
else:
st.dataframe(data_)
st.write("___")
if st.session_state['auto_clean_state'] == None :
form_2 = st.form(key="form_1")
with form_2:
form_2.subheader("Souhaiter vous nettoyer automatiquement les donnees ?")
col1,col2 = st.columns([1,1])
with col1:
btn_1 = st.form_submit_button("Accepter", use_container_width=True)
if btn_1:
st.session_state['auto_clean_state'] = True
st.rerun()
with col2:
btn_2 = st.form_submit_button("Refuser", use_container_width=True)
if btn_2:
st.session_state['auto_clean_state'] = False
st.rerun()
st.write("___")
if st.session_state['auto_clean_state'] == True :
# netoyage des donnees
st.header("Nettoyage des donnees")
expander_2 = st.expander("Liste des operations")
with expander_2:
st.subheader("Retrait des colonnes vides")
st.write("Liste des colonnes vides supprimer")
_ = empty_columns_cleaner(data)
st.write(_)
st.subheader("Retrait des colonnes mono-value")
st.write("Liste des colonnes mono-value")
_ = remove_one_columns_values(data)
st.write(_)
st.session_state["data"] = data
st.write("___")
# afficher le je de donnees nettoyer
else :
st.warning("Veuillez selectionner le fichier a traiter")
|