Spaces:
Sleeping
Sleeping
File size: 4,695 Bytes
bc9904d | 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 | import pandas as pd
def city2city_info(route_c2c, distance, df_segments):
query_data = df_segments[df_segments['c2c_route'] == route_c2c]
count_segments = query_data.shape[0] # Número de segmentos
# Calcular el precio por milla
price_mille = query_data['adjust_price_usd'] / query_data['distance']
price_mille_median = price_mille.median()
price_mille_median = round(price_mille_median, 2)
# Calcular precio promedio
mean_price = price_mille_median * distance
mean_price = round(mean_price, 2)
# Calcular rango intercuartílico (IQR)
q1 = price_mille.quantile(0.25) # Percentil 25
q3 = price_mille.quantile(0.75) # Percentil 75
iqr = q3 - q1
# Ajustar rango de precios mínimo y máximo usando IQR
price_mille_ajusted_min = q1 # Precio mínimo ajustado
range_min = distance * price_mille_ajusted_min
range_min = round(range_min, 2)
price_mille_ajusted_max = q3 # Precio máximo ajustado
range_max = distance * price_mille_ajusted_max
range_max = round(range_max, 2)
# Ordenar los últimos segmentos por fecha y seleccionar las columnas relevantes
last_segments = query_data.copy()
last_segments = last_segments.sort_values(by='inserted_at', ascending=False)
last_segments['distance'] = last_segments['distance']
last_segments['price_mille'] = last_segments['adjust_price_usd'] / last_segments['distance']
last_ten_segments = last_segments.head(10)
# Calcular métricas finales para los últimos segmentos
price_mille_ten = last_ten_segments['adjust_price_usd'].median() / distance
price_mille_ten = round(price_mille_ten,2)
last_trip = str(last_segments['inserted_at'].iloc[0])[0:10]
last_price = last_ten_segments['adjust_price_usd'].iloc[0]
mean_price_ten = last_ten_segments['adjust_price_usd'].median()
#diccionario de metricas
stats = {"mean_price": float(mean_price),
"range_min": float(range_min),
"range_max": float(range_max),
"count_segments": int(count_segments),
"price_mille_median": float(price_mille_median),
"last_trip": str(last_trip),
"last_price": float(last_price),
"mean_price_ten": float(mean_price_ten),
"price_mille_ten": float(price_mille_ten)}
# Retornar métricas calculadas
return stats
def state2state_info(route_s2s, distance, df_segments):
query_data = df_segments[df_segments['s2s_route'] == route_s2s]
count_segments = query_data.shape[0] # Número de segmentos
# Calcular el precio por milla
price_mille = query_data['adjust_price_usd'] / query_data['distance']
price_mille_median = price_mille.median()
price_mille_median = round(price_mille_median, 2)
# Calcular precio promedio
mean_price = price_mille_median * distance
mean_price = round(mean_price, 2)
# Calcular rango intercuartílico (IQR)
q1 = price_mille.quantile(0.25) # Percentil 25
q3 = price_mille.quantile(0.75) # Percentil 75
iqr = q3 - q1
# Ajustar rango de precios mínimo y máximo usando IQR
price_mille_ajusted_min = q1 # Precio mínimo ajustado
range_min = distance * price_mille_ajusted_min
range_min = round(range_min, 2)
price_mille_ajusted_max = q3 # Precio máximo ajustado
range_max = distance * price_mille_ajusted_max
range_max = round(range_max, 2)
# Ordenar los últimos segmentos por fecha y seleccionar las columnas relevantes
last_segments = query_data.copy()
last_segments = last_segments.sort_values(by='inserted_at', ascending=False)
last_segments['distance'] = last_segments['distance']
last_segments['price_mille'] = last_segments['adjust_price_usd'] / last_segments['distance']
last_ten_segments = last_segments.head(10)
# Calcular métricas finales para los últimos segmentos
price_mille_ten = last_ten_segments['adjust_price_usd'].median() / distance
price_mille_ten = round(price_mille_ten,2)
last_trip = str(last_segments['inserted_at'].iloc[0])[0:10]
last_price = last_ten_segments['adjust_price_usd'].iloc[0]
mean_price_ten = last_ten_segments['adjust_price_usd'].median()
stats = {"mean_price": float(mean_price),
"range_min": float(range_min),
"range_max": float(range_max),
"count_segments": int(count_segments),
"price_mille_median": float(price_mille_median),
"last_trip": str(last_trip),
"last_price": float(last_price),
"mean_price_ten": float(mean_price_ten),
"price_mille_ten": float(price_mille_ten)}
return stats |