| import pandas as pd
|
| import gradio as gr
|
|
|
|
|
|
|
| ev_data = {
|
| "Model": ["Bounce Infinity E1", "TVS iQube", "Bajaj Chetak", "Ather 450X", "Ola S1 Pro", "Hero Vida V1"],
|
| "Price (INR)": [79000, 123000, 122000, 138000, 147000, 145000],
|
| "Real Range (km)": [85, 100, 90, 105, 143, 110],
|
| "Top Speed (kmph)": [65, 78, 73, 90, 120, 80],
|
| "Charging Time (Hrs)": [4.0, 4.5, 4.0, 5.5, 6.5, 6.0]
|
| }
|
| df = pd.DataFrame(ev_data)
|
|
|
|
|
| def recommend_ev(max_budget, min_range):
|
|
|
| filtered_df = df[(df["Price (INR)"] <= max_budget) & (df["Real Range (km)"] >= min_range)]
|
|
|
|
|
| filtered_df = filtered_df.sort_values(by="Price (INR)")
|
|
|
|
|
| return filtered_df
|
|
|
|
|
|
|
| with gr.Blocks(theme=gr.themes.Soft()) as app:
|
|
|
| gr.Markdown("# 🛵 Smart EV Tracker & Recommender")
|
| gr.Markdown("Filter the current electric two-wheeler market based on your exact constraints.")
|
|
|
| with gr.Row():
|
|
|
| with gr.Column(scale=1):
|
| gr.Markdown("### Search Filters")
|
|
|
| budget_slider = gr.Slider(minimum=50000, maximum=160000, step=5000, value=90000, label="Maximum Budget (₹)")
|
| range_slider = gr.Slider(minimum=50, maximum=150, step=5, value=75, label="Minimum Range Required (km)")
|
| search_btn = gr.Button("Find My EV", variant="primary")
|
|
|
|
|
| with gr.Column(scale=2):
|
| gr.Markdown("### Recommended Models")
|
|
|
| output_table = gr.Dataframe(headers=["Model", "Price (INR)", "Real Range (km)", "Top Speed (kmph)", "Charging Time (Hrs)"])
|
|
|
|
|
| search_btn.click(fn=recommend_ev, inputs=[budget_slider, range_slider], outputs=output_table)
|
|
|
|
|
| app.launch() |