-
Notifications
You must be signed in to change notification settings - Fork 1
/
test1.py
83 lines (69 loc) · 2.51 KB
/
test1.py
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
import streamlit as st
import pandas as pd
import plotly.graph_objects as go
from scipy import stats
import os
st.title("Análisis de Volúmenes Ex-factory por País")
# Define los archivos Excel de INNOVIX
excel_files = [
'files/INNOVIX_Elbonie.xlsx',
'files/INNOVIX_Floresland.xlsx'
]
# Crear figura de Plotly
fig = go.Figure()
# Leer cada archivo Excel y agregar al gráfico
for file in excel_files:
if os.path.exists(file):
# Extraer el nombre del país del nombre del archivo
country = file.split('_')[1].split('.')[0]
# Leer la hoja Ex-factory volumes
df_ex = pd.read_excel(file, sheet_name='Ex-Factory volumes')
df_demand = pd.read_excel(file, sheet_name='Demand volumes')
# Filtrar df_demand para solo incluir INNOVIX
df_demand = df_demand[df_demand['Product'] == 'INNOVIX']
# Convertir fechas a datetime
df_ex['Date'] = pd.to_datetime(df_ex['Date'])
df_demand['Date'] = pd.to_datetime(df_demand['Date'])
# Agregar línea de Ex-factory al gráfico
fig.add_trace(go.Scatter(
x=df_ex['Date'],
y=df_ex['Value'],
name=f'{country} - Ex-factory',
mode='lines'
))
# Agregar línea de Demand al gráfico
fig.add_trace(go.Scatter(
x=df_demand['Date'],
y=df_demand['Value'],
name=f'{country} - Demand',
mode='lines',
line=dict(dash='dash') # Línea punteada para diferenciar
))
# Actualizar el diseño del gráfico
fig.update_layout(
title='Comparación de Volúmenes Ex-factory y Demand por País',
xaxis_title='Fecha',
yaxis_title='Volumen',
hovermode='x unified'
)
# Mostrar el gráfico en Streamlit
st.plotly_chart(fig)
# Prueba de Kolmogorov-Smirnov para comparar distribuciones
dfs = []
for file in excel_files:
if os.path.exists(file):
df = pd.read_excel(file, sheet_name='Ex-Factory volumes')
dfs.append(df)
if len(dfs) == 2:
ks_statistic, p_value = stats.ks_2samp(
dfs[0]['Value'],
dfs[1]['Value']
)
st.subheader("Prueba de Kolmogorov-Smirnov")
st.write(f"Estadístico KS: {ks_statistic:.4f}")
st.write(f"Valor p: {p_value:.4f}")
st.write("Interpretación:")
if p_value < 0.05:
st.write("Las distribuciones son significativamente diferentes (p < 0.05)")
else:
st.write("No hay evidencia suficiente para decir que las distribuciones son diferentes (p >= 0.05)")