Spaces:
Runtime error
Runtime error
import streamlit as st | |
import pandas as pd | |
import matplotlib.pyplot as plt | |
import seaborn as sns | |
df_diamonds = pd.read_csv('diamonds.csv') | |
df_diamonds = df_diamonds.drop(["Unnamed: 0"], axis=1) | |
st.title('Diamond selecting APP') | |
# Users set the price range | |
min_price = st.number_input('Input minimum price', min_value=int(df_diamonds['price'].min()), max_value=int(df_diamonds['price'].max()), value=int(df_diamonds['price'].min())) | |
max_price = st.number_input('Input maximum price', min_value=min_price, max_value=int(df_diamonds['price'].max()), value=int(df_diamonds['price'].max())) | |
# Select the diamonds | |
cuts = st.multiselect('Select cut', df_diamonds['cut'].unique()) | |
colors = st.multiselect('Select color', df_diamonds['color'].unique()) | |
clarities = st.multiselect('Select clarity', df_diamonds['clarity'].unique()) | |
if st.button('Reset'): | |
cuts = [] | |
colors = [] | |
clarities = [] | |
min_price = int(df_diamonds['price'].min()) | |
max_price = int(df_diamonds['price'].max()) | |
# Filter the diamonds | |
filtered_diamonds = df_diamonds[(df_diamonds['price'] >= min_price) & (df_diamonds['price'] <= max_price)] | |
if cuts: | |
filtered_diamonds = filtered_diamonds[filtered_diamonds['cut'].isin(cuts)] | |
if colors: | |
filtered_diamonds = filtered_diamonds[filtered_diamonds['color'].isin(colors)] | |
if clarities: | |
filtered_diamonds = filtered_diamonds[filtered_diamonds['clarity'].isin(clarities)] | |
# Check if there is data to plot | |
if not filtered_diamonds.empty: | |
# Create a scatterplot based on the selected criteria | |
fig, ax = plt.subplots() | |
sns.scatterplot(x='carat', y='price', data=filtered_diamonds, ax=ax) | |
ax.set_title('Prices by Carat') | |
st.pyplot(fig) | |
else: | |
st.write("No diamonds fit the selected criteria.") | |
# Display a scrollable table with the total information based on the selected criteria | |
st.write("Total Information:") | |
st.dataframe(filtered_diamonds) |