datasciencedojo's picture
submit button hover color updated
9d7944c
import gradio as gr
import os
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
def dataset_change(dataset):
df = pd.read_csv(dataset.name)
features = df.columns
features_object_list = [feature for feature in features]
describe = df.describe(include='all')
print(describe)
return describe.reset_index(), gr.Dropdown.update(choices = features_object_list), gr.Dropdown.update(choices = features_object_list)
def feature_select(dataset, feature, hue = None):
df = pd.read_csv(dataset.name)
non_numeric_cols = df.select_dtypes('object').columns.tolist()
if feature in non_numeric_cols:
kde = False
plot2 = plt.figure()
if hue:
sns.countplot(x = feature, data = df, palette='rainbow', hue = hue)
else:
sns.countplot(x = feature, data = df, palette='rainbow')
else:
kde = True
plot2 = plt.figure()
if hue:
sns.boxplot(x = feature, data = df, hue = hue)
else:
sns.boxplot(x = feature, data = df )
plot1 = plt.figure()
if hue:
sns.histplot(data = df, x = feature, kde = kde, hue = hue, multiple="stack")
else:
sns.histplot(data = df, x = feature, kde = kde)
return plot1, plot2
css = """
footer {display:none !important}
.overflow-x-scroll {
overflow-x: scroll !important;
height: 15rem !important;
overflow-y: scroll !important;
}
.max-h-\[30rem\] {max-height: 18rem !important;}
.hover\:bg-orange-50:hover {
--tw-bg-opacity: 1 !important;
background-color: rgb(229,225,255) !important;
}
.output-markdown h2{
z-index: 14;
align-self: flex-start;
min-width: 0px;
order: 5;
min-height: 0px;
height: max-content;
flex-grow: 0;
flex-shrink: 0;
width: calc(100% - 0px);
margin: 5px 0px;
white-space: pre-wrap;
overflow: visible;
word-break: break-word;
font-size: 18px !important;
font-weight: 500 !important;
color: rgb(9, 23, 71) !important;
line-height: 1 !important;
border-radius: 0px !important;
opacity: 1 !important;
}
.gr-button-lg {
z-index: 14;
width: 113px !important;
height: 30px !important;
left: 0px;
top: 0px;
padding: 0px;
cursor: pointer !important;
background: none rgb(17, 20, 45) !important;
border: none !important;
text-align: center !important;
font-size: 14px !important;
font-weight: 500 !important;
color: rgb(255, 255, 255) !important;
line-height: 1 !important;
border-radius: 6px !important;
transition: box-shadow 200ms ease 0s, background 200ms ease 0s !important;
box-shadow: none !important;
}
.gr-button-lg:hover{
z-index: 14;
width: 113px !important;
height: 30px !important;
left: 0px;
top: 0px;
padding: 0px;
cursor: pointer !important;
background: none rgb(66, 133, 244) !important;
border: none !important;
text-align: center !important;
font-size: 14px !important;
font-weight: 500 !important;
color: rgb(255, 255, 255) !important;
line-height: 1 !important;
border-radius: 6px !important;
transition: box-shadow 200ms ease 0s, background 200ms ease 0s !important;
box-shadow: rgb(0 0 0 / 23%) 0px 1px 7px 0px !important;
}
"""
with gr.Blocks(title="Describe Dataset | Data Science Dojo", css = css) as demo:
gr.Markdown("""## Input Dataset""")
with gr.Row():
dataset = gr.File()
gr.Markdown("""## Dataset Description""")
with gr.Row():
dataframe = gr.Dataframe()
gr.Markdown("""## Select the feature to visualize""")
with gr.Row():
with gr.Column():
features = gr.Dropdown(label="Select feature to visualize")
with gr.Column():
hue = gr.Dropdown(label="Select hue")
with gr.Row():
btn = gr.Button("Visualize")
gr.Markdown("""## Visualization""")
with gr.Row():
plot1 = gr.Plot()
with gr.Row():
plot2 = gr.Plot()
gr.Examples(
examples=[["boston.csv"]],
fn = dataset_change,
inputs = dataset,
outputs = [dataframe, features, hue],
cache_examples=True
)
dataset.change(fn=dataset_change,
inputs = dataset,
outputs = [dataframe, features, hue]
)
btn.click(fn=feature_select,
inputs=[dataset, features, hue],
outputs=[plot1, plot2]
)
demo.launch(debug=True)