Spaces:
Sleeping
Sleeping
| 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 |