show all cars registered in new york by weight of car over time
To upload files, please first save the app
import streamlit as st
import pandas as pd
import plotly.express as px
st.title("New York Vehicle Weights Over Time")
# Load and prepare data
@st.cache_data
def load_data():
# Using NY DMV vehicle dataset
url = "https://corsproxy.io/?https://data.ny.gov/api/views/eagh-ukzt/rows.csv"
# NOTE: Using corsproxy.io because we're in a WASM environment. If running locally,
# you can remove the corsproxy.io prefix.
try:
df = pd.read_csv(url)
# Clean and process the data
df['year'] = pd.to_datetime(df['Vehicle Year'], format='%Y')
df['weight'] = df['Maximum Gross Weight']
return df
except Exception as e:
st.error(f"Error loading data: {str(e)}")
return pd.DataFrame()
# Load the data
df = load_data()
if not df.empty:
# Add filters
st.sidebar.header("Filters")
# Year range filter
year_range = st.sidebar.slider(
"Select Year Range",
min_value=df['year'].dt.year.min(),
max_value=df['year'].dt.year.max(),
value=(df['year'].dt.year.min(), df['year'].dt.year.max())
)
# Filter data based on selection
mask = (df['year'].dt.year >= year_range[0]) & (df['year'].dt.year <= year_range[1])
filtered_df = df[mask]
# Create visualization
st.subheader("Average Vehicle Weight by Year")
fig = px.line(
filtered_df.groupby(df['year'].dt.year)['weight'].mean().reset_index(),
x='year',
y='weight',
title='Average Vehicle Weight Over Time'
)
st.plotly_chart(fig)
# Show summary statistics
st.subheader("Summary Statistics")
stats = filtered_df.groupby(filtered_df['year'].dt.year)['weight'].agg(['mean', 'min', 'max', 'count']).round(2)
stats.columns = ['Average Weight', 'Minimum Weight', 'Maximum Weight', 'Number of Vehicles']
st.dataframe(stats)
# Show raw data
if st.checkbox("Show Raw Data"):
st.subheader("Raw Data")
st.dataframe(filtered_df[['year', 'weight']].sort_values('year'))
else:
st.warning("Unable to load data. Please try again later.")
Hi! I can help you with any questions about Streamlit and Python. What would you like to know?