Create a Streamlit application that has a text field to enter a URL (default value: https://raw.githubusercontent.com/mwaskom/seaborn-data/master/penguins.csv). The app should read the CSV file (and cache it) from the URL and display a DataFrame. Add controls to do the following: - Control how many rows are displayed - A checkbox to determine to randomly shuffle the DataFrame
Drop files here
or click to upload
import streamlit as st
import pandas as pd
import numpy as np
@st.cache_data
def load_data(url):
return pd.read_csv(url)
st.title("DataFrame Viewer")
# URL input with default value
url = st.text_input(
"Enter CSV URL",
value="https://raw.githubusercontent.com/mwaskom/seaborn-data/master/penguins.csv"
)
try:
# Load the data
df = load_data(url)
# Controls
col1, col2 = st.columns(2)
with col1:
n_rows = st.number_input(
"Number of rows to display",
min_value=1,
max_value=len(df),
value=min(10, len(df))
)
with col2:
shuffle = st.checkbox("Randomly shuffle data")
# Process the dataframe based on user inputs
if shuffle:
df_display = df.sample(frac=1.0, random_state=42).reset_index(drop=True)
else:
df_display = df.copy()
# Display the dataframe
st.dataframe(df_display.head(n_rows), use_container_width=True)
# Show dataset info
st.write(f"Total rows in dataset: {len(df)}")
except Exception as e:
st.error(f"Error loading data: {str(e)}")
Hi! I can help you with any questions about Streamlit and Python. What would you like to know?