emanoelopes commited on
Commit
07ff35b
·
1 Parent(s): d050a15

Update README and code to reflect unique student metrics in UCI dataset

Browse files

- Enhanced `README_PICKLES.md` to clarify the unique student count and processing details for the UCI DataFrame.
- Modified `1_uci.py` to display the number of unique students alongside total records.
- Updated utility functions in `utilidades.py` to calculate unique student counts based on demographic characteristics, improving accuracy in metrics calculations.

README_PICKLES.md CHANGED
@@ -8,10 +8,13 @@ Os arquivos pickle contêm DataFrames pandas processados para eliminar a necessi
8
  ### `uci_dataframe.pkl`
9
  - **Conteúdo**: DataFrame UCI processado e concatenado
10
  - **Tamanho**: ~0.12 MB
11
- - **Registros**: 1,044 estudantes
12
  - **Colunas**: 34 (incluindo transformações aplicadas)
13
  - **Processamento**:
14
- - Concatenação de student-mat.csv + student-por.csv
 
 
 
15
  - Transformação de valores categóricos
16
  - Mapeamento de códigos para labels legíveis
17
 
 
8
  ### `uci_dataframe.pkl`
9
  - **Conteúdo**: DataFrame UCI processado e concatenado
10
  - **Tamanho**: ~0.12 MB
11
+ - **Registros**: 1,044 registros (661 estudantes únicos)
12
  - **Colunas**: 34 (incluindo transformações aplicadas)
13
  - **Processamento**:
14
+ - Concatenação de student-mat.csv (395 registros) + student-por.csv (649 registros)
15
+ - 366 estudantes aparecem em ambas as matérias (matemática e português)
16
+ - 25 estudantes apenas em matemática, 270 apenas em português
17
+ - Total: 661 estudantes únicos
18
  - Transformação de valores categóricos
19
  - Mapeamento de códigos para labels legíveis
20
 
webapp/pages/1_uci.py CHANGED
@@ -70,7 +70,12 @@ with st.sidebar:
70
  )
71
  st.markdown("---")
72
  st.markdown("## Informações")
73
- st.write(f"**Número de Instâncias:** {df.shape[0]}")
 
 
 
 
 
74
  st.write(f"**Número de Atributos:** {df.shape[1]}")
75
  st.write(f"**Número de Atributos Numéricos:** {numeric_df.shape[1]}")
76
  st.write(f"**Número de Atributos Categóricos:** {df.select_dtypes('object').shape[1]}")
 
70
  )
71
  st.markdown("---")
72
  st.markdown("## Informações")
73
+ # Calcular estudantes únicos baseado em características demográficas
74
+ colunas_id = ['school', 'sex', 'age', 'address', 'famsize', 'Pstatus', 'Medu', 'Fedu', 'Mjob', 'Fjob', 'reason', 'guardian']
75
+ estudantes_unicos = df[colunas_id].drop_duplicates().shape[0]
76
+
77
+ st.write(f"**Número de Registros:** {df.shape[0]} (inclui estudantes em múltiplas matérias)")
78
+ st.write(f"**Número de Estudantes Únicos:** {estudantes_unicos}")
79
  st.write(f"**Número de Atributos:** {df.shape[1]}")
80
  st.write(f"**Número de Atributos Numéricos:** {numeric_df.shape[1]}")
81
  st.write(f"**Número de Atributos Categóricos:** {df.select_dtypes('object').shape[1]}")
webapp/src/utilidades.py CHANGED
@@ -67,8 +67,10 @@ def obter_metricas_principais_uci():
67
  'estudantes_alcool_alto': 0
68
  }
69
 
70
- # Calcular métricas reais
71
- total_estudantes = len(df_uci)
 
 
72
  media_nota_final = df_uci['G3'].mean() if 'G3' in df_uci.columns else 0
73
  taxa_aprovacao = (df_uci['G3'] >= 10).mean() * 100 if 'G3' in df_uci.columns else 0
74
  media_faltas = df_uci['absences'].mean() if 'absences' in df_uci.columns else 0
@@ -230,8 +232,12 @@ def calcular_metricas_uci(df_uci):
230
  if df_uci.empty:
231
  return {}
232
 
 
 
 
 
233
  metricas = {
234
- 'total_alunos': len(df_uci),
235
  'media_nota_final': df_uci['G3'].mean() if 'G3' in df_uci.columns else 0,
236
  'taxa_aprovacao': (df_uci['G3'] >= 10).mean() * 100 if 'G3' in df_uci.columns else 0,
237
  'media_faltas': df_uci['absences'].mean() if 'absences' in df_uci.columns else 0,
 
67
  'estudantes_alcool_alto': 0
68
  }
69
 
70
+ # Calcular métricas reais - contar estudantes únicos baseado em características demográficas
71
+ # Usar combinação de colunas que identificam unicamente cada estudante
72
+ colunas_id = ['school', 'sex', 'age', 'address', 'famsize', 'Pstatus', 'Medu', 'Fedu', 'Mjob', 'Fjob', 'reason', 'guardian']
73
+ total_estudantes = df_uci[colunas_id].drop_duplicates().shape[0]
74
  media_nota_final = df_uci['G3'].mean() if 'G3' in df_uci.columns else 0
75
  taxa_aprovacao = (df_uci['G3'] >= 10).mean() * 100 if 'G3' in df_uci.columns else 0
76
  media_faltas = df_uci['absences'].mean() if 'absences' in df_uci.columns else 0
 
232
  if df_uci.empty:
233
  return {}
234
 
235
+ # Contar estudantes únicos baseado em características demográficas
236
+ colunas_id = ['school', 'sex', 'age', 'address', 'famsize', 'Pstatus', 'Medu', 'Fedu', 'Mjob', 'Fjob', 'reason', 'guardian']
237
+ total_estudantes_unicos = df_uci[colunas_id].drop_duplicates().shape[0]
238
+
239
  metricas = {
240
+ 'total_alunos': total_estudantes_unicos,
241
  'media_nota_final': df_uci['G3'].mean() if 'G3' in df_uci.columns else 0,
242
  'taxa_aprovacao': (df_uci['G3'] >= 10).mean() * 100 if 'G3' in df_uci.columns else 0,
243
  'media_faltas': df_uci['absences'].mean() if 'absences' in df_uci.columns else 0,