Spaces:
Runtime error
Runtime error
File size: 5,314 Bytes
0701931 7a734ae 0701931 7a734ae 0701931 7a734ae |
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 |
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
def repartition_par_categorie(st,data):
val_code = data['prdtypecode'].unique()
target_count = (data["prdtypecode"].value_counts(normalize=True)*100).reset_index()
target_count.columns=["prdtypecode","pourcentage"]
plt.figure(figsize=(10,3))
ax = sns.barplot( x="prdtypecode", y="pourcentage", data=target_count)
ax.axhline(y=100/len(val_code),color="green",linewidth=2, alpha=0.5)
plt.xticks(rotation=45)
plt.xlabel('Code produit')
plt.ylabel('Pourcentage')
plt.grid()
plt.title("Distribution des valeurs de la target")
# Afficher le graphique avec Streamlit
col1, col2,col3 = st.columns([6,1,3])
with col1:
st.pyplot(plt)
with col3:
st.markdown('<div class="rounded-border"></div>', unsafe_allow_html=True)
st.write("\n\n\n\n\n\n")
st.write("La catégorie la plus présente représente 12% du corpus.")
st.write("Si la base était uniformément répartie:")
st.write(f"=> chaque code serait représenté à {100/len(val_code):.2f}% de la base")
def repartition_longueur_categorie(st,data):
val_code = data["prdtypecode"].unique()
st.text(f"Nombre de valeurs de la target: {len(val_code)}")
st.text(f"Liste des valeurs : {val_code}")
st.text("""
Les valeurs ne sont pas continues, agissent comme des labels
Les valeurs ne sont pas signifiantes
""")
st.write("")
st.write("")
data["designation_length"] = data["designation"].str.len()
data["description_length"] = data["description"].str.len()
plt.figure(figsize=(10,4))
ax = sns.histplot(x='designation_length', data=data,bins=50);
ax.axhline(data["designation_length"].mean(),color="r",linewidth=2, alpha=0.5)
plt.xticks(rotation=45)
plt.xlabel("Longueur de la designation en caractères");
plt.ylabel("nb d'occurences");
plt.grid()
plt.title("Répartition des longueurs des designations");
col1, col2,col3 = st.columns([2,6,3])
with col1:
st.write(data["designation_length"].describe())
with col2:
st.pyplot(plt)
with col3:
st.text('')
st.text('')
st.text('')
st.text('')
st.text('')
st.write(f'=> Longueur de la designation comprise entre {data["designation_length"].min()} et {data["designation_length"].max()} caractères')
st.write("on a une majeurepartie de la distribution entre 45 et 100 caractères, puis un pic à 250 caractères")
st.text('')
st.text('')
st.text('Les tailles des désignations sont relativement différentes selon les catégories')
plt.figure(figsize=(10,4))
sns.boxplot(x="prdtypecode",y="designation_length",data=data);
plt.title("Répartition des longueurs des designation par code");
plt.xlabel("Code produit");
plt.ylabel("Longueur de la designation en caractères");
plt.xticks(rotation=45)
st.pyplot(plt)
col1, col2 = st.columns([3,6])
with col2:
plt.figure(figsize=(10,4))
ax = sns.histplot(x='description_length', data=data,bins=100);
ax.axhline(data["description_length"].mean(),color="r",linewidth=2, alpha=0.5)
plt.xticks(rotation=45)
plt.xlabel("nb d'occurences");
plt.xlim(0);
plt.grid()
plt.title("Répartition des longueurs des descriptions");
st.pyplot(plt)
with col1:
st.write(data["description_length"].describe())
st.write("Nous observons des longueurs tres variables, qui s'étalent sur tout le spectre, avex peu de descriptions tres longues, nous pouvons regarder et voir si ce sont des aberrations ou des aberrances")
limit = st.number_input(label="Descriptions d'au moins:",min_value=200, max_value=12000, value=5000)
pic_8000 = data[data["description_length"] >= limit]
pic_8000 = pic_8000[["prdtypecode","description_length","description"]]
st.dataframe(pic_8000)
st.write("Nous constatons des textes correspondant à des descriptifs marketing, parfois sous forme HTML, contenant de nombreux détails.")
st.write("")
st.write("Recherche de chaines de tailles très petites")
limit_max = st.number_input(label="Descriptions d'au moins:",min_value=1, max_value=12000, value=12)
st.write("")
desc_invalides = data[data["description_length"] < limit_max]
desc_invalides = desc_invalides[["description_length","description"]]
st.dataframe(desc_invalides)
st.write(f"nous remarquons avoir {desc_invalides.shape[0]} observations triviales")
st.write("")
st.write("")
st.write("Analyse des cas où la description est vide")
st.write("")
desc_vides = data[pd.isna(data["description"])]
plt.figure(figsize=(10,4))
sns.histplot(x='designation_length', data=desc_vides,bins=100, stat='probability');
plt.xlabel("Longueur de la description en caractères");
plt.xlabel("occurences");
plt.xlim(0);
plt.grid()
plt.title("Répartition des longueurs des designations");
st.pyplot(plt)
st.write("")
st.write("La designation a globalement la même répartition en taille, lorsque la description est absente, qe lorsque la description est remplie.") |