Spaces:
Runtime error
Runtime error
| import streamlit as st | |
| import pandas as pd | |
| import plotly | |
| import plotly.express as px | |
| import plotly.graph_objects as go | |
| class one_feature: | |
| def __init__(self, df, x_col_name): | |
| self.df = df | |
| self.x_col_name = x_col_name | |
| def bar_plot(self): | |
| #labels | |
| key = self.df[self.x_col_name].value_counts().keys().tolist() | |
| #values | |
| val = self.df[self.x_col_name].value_counts().values.tolist() | |
| trace = go.Bar(x = key, y=val,\ | |
| marker=dict(color=val,colorscale='Viridis',showscale=True),text = val) | |
| data=[trace] | |
| fig = go.Figure(data=data) | |
| st.plotly_chart(fig) | |
| def pi_plot(self): | |
| #labels | |
| key = self.df[self.x_col_name].value_counts().keys().tolist() | |
| #values | |
| val = self.df[self.x_col_name].value_counts().values.tolist() | |
| trace = go.Pie(labels=key, | |
| values=val, | |
| marker=dict(colors=['red']), | |
| # Seting values to | |
| hoverinfo="value" | |
| ) | |
| data = [trace] | |
| fig = go.Figure(data = data) | |
| st.plotly_chart(fig) | |
| # def histogram_plot(self): | |
| # fig = px.histogram( | |
| # data_frame = self.df, | |
| # x = self.x_col_name | |
| # ) | |
| # st.plotly_chart(fig) | |
| def histogram_plot(self): | |
| # defining data | |
| trace = go.Histogram(x=self.df[self.x_col_name],nbinsx=40,histnorm='percent') | |
| data = [trace] | |
| fig = go.Figure(data = data) | |
| st.plotly_chart(fig) | |
| class two_features: | |
| def __init__(self, df, x_col_name, y_col_name): | |
| self.df = df | |
| self.x_col_name = x_col_name | |
| self.y_col_name = y_col_name | |
| def box_plot(self): | |
| fig = px.box(self.df, x = self.x_col_name, y = self.y_col_name) | |
| st.plotly_chart(fig) | |
| def violin_plot(self): | |
| fig = px.violin(self.df, x = self.x_col_name, y = self.y_col_name) | |
| st.plotly_chart(fig) | |
| def scatter_plot(self): | |
| fig = px.scatter(self.df, x = self.x_col_name, y = self.y_col_name, color = self.y_col_name, \ | |
| color_continuous_scale=px.colors.sequential.Viridis) | |
| st.plotly_chart(fig) | |
| def bar_plot(self): | |
| self.df = self.df.groupby([self.x_col_name,self.y_col_name]).size().reset_index(name='quantity') | |
| fig = px.bar(self.df, | |
| x = self.x_col_name, | |
| y = 'quantity', | |
| color = self.y_col_name, | |
| barmode = 'stack') | |
| st.plotly_chart(fig) | |
| def time_series(self): | |
| fig = px.line(self.df, x=self.x_col_name, y = self.y_col_name) | |
| st.plotly_chart(fig) | |
| class three_features: | |
| def __init__(self, df, x_col_name, y_col_name, category_col_name): | |
| self.df = df | |
| self.x_col_name = x_col_name | |
| self.y_col_name = y_col_name | |
| self.category_col_name = category_col_name | |
| def scatter_plot(self): | |
| fig = px.scatter(self.df, x=self.x_col_name, y=self.y_col_name, \ | |
| color=self.category_col_name) | |
| st.plotly_chart(fig) | |
| def line_plot(self): | |
| fig = px.line( | |
| data_frame=self.df, | |
| x = self.x_col_name, | |
| y = self.y_col_name, | |
| color = self.category_col_name | |
| ) | |
| st.plotly_chart(fig) | |
| def st_data_visualization(): | |
| # original saved database -> test.csv | |
| df = pd.read_csv("temp_data/test.csv") | |
| # for code testing -> 5000_sales_records.csv | |
| # df = pd.read_csv("temp_data/5000_sales_records.csv") | |
| column_list = df.columns.values.tolist() | |
| target_feature_no = st.sidebar.selectbox( | |
| 'Choose No. of Target Features', ["One", "Two", "Three", "All"]) | |
| if target_feature_no == 'One': | |
| st.sidebar.write("Choose One Column") | |
| x_col_name = st.sidebar.selectbox('Select X column', column_list) | |
| plot_list = ["bar", "pi", "histogram"] | |
| plot_type = st.sidebar.selectbox('Select Plot Type', plot_list) | |
| plot = one_feature(df, x_col_name) | |
| if plot_type == "bar": | |
| plot.bar_plot() | |
| if plot_type == "pi": | |
| plot.pi_plot() | |
| if plot_type == "histogram": | |
| plot.histogram_plot() | |
| if target_feature_no == 'Two': | |
| st.sidebar.write("Choose Two Columns for Viewing Relationships") | |
| x_col_name = st.sidebar.selectbox('Select X column', column_list) | |
| y_col_name = st.sidebar.selectbox('Select Y column', column_list) | |
| plot_list = ["box", "violin", "scatter", "bar","time_series"] | |
| plot_type = st.sidebar.selectbox('Select Plot Type', plot_list) | |
| plot = two_features(df, x_col_name, y_col_name) | |
| if plot_type == "box": | |
| plot.box_plot() | |
| if plot_type == "violin": | |
| plot.violin_plot() | |
| if plot_type == "scatter": | |
| plot.scatter_plot() | |
| if plot_type == "bar": | |
| plot.bar_plot() | |
| if plot_type == "time_series": | |
| plot.time_series() | |
| if target_feature_no == 'Three': | |
| st.sidebar.write("Choose Two Columns for Viewing Relationships") | |
| x_col_name = st.sidebar.selectbox('Select X column', column_list) | |
| y_col_name = st.sidebar.selectbox('Select Y column', column_list) | |
| st.sidebar.write("Choose Category Column") | |
| category_col_name = st.sidebar.selectbox('Select Category', column_list) | |
| plot_list = ["scatter", "line"] | |
| plot_type = st.sidebar.selectbox('Select Plot Type', plot_list) | |
| plot = three_features(df, x_col_name, y_col_name, category_col_name) | |
| if plot_type == "scatter": | |
| plot.scatter_plot() | |
| if plot_type == "line": | |
| plot.line_plot() |