| import streamlit as st |
| import pandas as pd |
| import plotly.express as px |
|
|
| |
| df = pd.read_excel('https://full-stack-assets.s3.eu-west-3.amazonaws.com/Deployment/get_around_delay_analysis.xlsx') |
|
|
| |
| df.rename(columns={'time_delta_with_previous_rental_in_minutes': 'delta'}, inplace=True) |
| df.rename(columns={'delay_at_checkout_in_minutes': 'delay'}, inplace=True) |
|
|
| df['late_checkin'] = df['delay'] > 0 |
|
|
| |
| st.title("Getaround Rentals Analysis") |
|
|
| |
| st.markdown(""" |
| In order to mitigate those issues we’ve decided to implement a minimum delay between two rentals. A car won’t be displayed in the search results if the requested checkin or checkout times are too close from an already booked rental. |
| |
| It solves the late checkout issue but also potentially hurts Getaround/owners revenues: we need to find the right trade off. |
| |
| Our Product Manager still needs to decide: |
| |
| - threshold: how long should the minimum delay be? |
| - scope: should we enable the feature for all cars?, only Connect cars? |
| |
| In order to help them make the right decision, they are asking you for some data insights. Here are the first analyses they could think of, to kickstart the discussion. Don’t hesitate to perform additional analysis that you find relevant. |
| """) |
|
|
|
|
| |
| fig = px.histogram(df, x='delta', title='Distribution of Delays Between Rentals') |
| st.plotly_chart(fig) |
|
|
| |
| threshold = st.slider("Select the minimum delay threshold (in hours)", 0, 12, 2) |
| scope = st.selectbox("Select the scope", ["All cars", "Connect cars"]) |
|
|
| |
| if scope == "Connect cars": |
| df = df[df['checkin_type'] == 'connect'] |
|
|
| |
| affected_rentals = df[df['delay'] <= threshold*60].shape[0] |
| total_rentals = df.shape[0] |
| share_affected_rentals = affected_rentals / total_rentals * 100 |
|
|
| |
| st.write(f"Percentage of rentals potentially affected by the feature: {share_affected_rentals:.2f}%") |
|
|
| |
| late_checkins = df[df['late_checkin'] == True].shape[0] |
| total_checkins = df.shape[0] |
| share_late_checkins = late_checkins / total_checkins * 100 |
|
|
| st.write(f"Share of late check-ins: {share_late_checkins:.2f}%") |
|
|
|
|
|
|
| |
| solved_cases = df[(df['delta'] < threshold*60) & (df['late_checkin'] == True)].shape[0] |
| st.write(f"Number of problematic cases solved by the feature: {solved_cases}") |