Spaces:
Sleeping
Sleeping
| import pandas as pd | |
| import plotly.express as px | |
| import streamlit as st | |
| # Configuring the Streamlit App: | |
| st.set_page_config( | |
| page_title='MAK Analytics Portal', | |
| page_icon='π' | |
| ) | |
| # Adding Titles and Subtitles: | |
| st.title(':rainbow[Data Analytics Portal]') | |
| st.subheader(':gray[Explore Data with ease.]',divider='rainbow') | |
| # File Upload Feature: | |
| file = st.file_uploader('Drop csv,tsv or excel file', type=['csv', 'xlsx','tsv']) | |
| if file: | |
| if file.name.endswith('csv'): | |
| data = pd.read_csv(file) | |
| elif file.name.endswith('tsv'): | |
| data=pd.read_tsv(file) | |
| else: | |
| data = pd.read_excel(file) | |
| st.dataframe(data) | |
| st.info('File is successfully Uploaded', icon='βοΈ') | |
| # Exploring Basic Information: | |
| st.subheader(':rainbow[Basic information of the dataset]',divider='rainbow') | |
| tab1, tab2, tab3, tab4 = st.tabs(['Summary', 'Top and Bottom Rows', 'Data Types', 'Columns']) | |
| with tab1: | |
| st.write(f'There are {data.shape[0]} rows in dataset and {data.shape[1]} columns in the dataset') | |
| st.subheader(':gray[Statistical summary of the dataset]') | |
| st.dataframe(data.describe()) | |
| with tab2: | |
| st.subheader(':gray[Top Rows]') | |
| toprows = st.slider('Number of rows you want', 1, data.shape[0], key='topslider') | |
| st.dataframe(data.head(toprows)) | |
| st.subheader(':gray[Bottom Rows]') | |
| bottomrows = st.slider('Number of rows you want', 1, data.shape[0], key='bottomslider') | |
| st.dataframe(data.tail(bottomrows)) | |
| with tab3: | |
| st.subheader(':grey[Data types of column]') | |
| st.dataframe(data.dtypes) | |
| with tab4: | |
| st.subheader('Column Names in Dataset') | |
| st.write(list(data.columns)) | |
| # Column Value Counts: | |
| st.subheader(':rainbow[Column Values To Count]',divider='rainbow') | |
| with st.expander('Value Count'): | |
| col1, col2 = st.columns(2) | |
| with col1: | |
| column = st.selectbox('Choose Column name', options=list(data.columns)) | |
| with col2: | |
| toprows = st.number_input('Top rows', min_value=1, step=1) | |
| count = st.button('Count') | |
| if count: | |
| result = data[column].value_counts().reset_index().head(toprows) | |
| st.dataframe(result) | |
| st.subheader('Visualization', divider='gray') | |
| fig = px.bar(data_frame=result, x=column, y='count', text='count', template='plotly_white') | |
| st.plotly_chart(fig) | |
| fig = px.line(data_frame=result, x=column, y='count', text='count', template='plotly_white') | |
| st.plotly_chart(fig) | |
| fig = px.pie(data_frame=result, names=column, values='count') | |
| st.plotly_chart(fig) | |
| # Grouping Data for Deeper Insights: | |
| st.subheader(':rainbow[Groupby : Simplify your data analysis]', divider='rainbow') | |
| st.write('The groupby lets you summarize data by specific categories and groups') | |
| with st.expander('Group By your columns'): | |
| col1, col2, col3 = st.columns(3) | |
| with col1: | |
| groupby_cols = st.multiselect('Choose your column to groupby', options=list(data.columns)) | |
| with col2: | |
| operation_col = st.selectbox('Choose column for operation', options=list(data.columns)) | |
| with col3: | |
| operation = st.selectbox('Choose operation', options=['sum', 'max', 'min', 'mean', 'median', 'count']) | |
| if groupby_cols: | |
| result = data.groupby(groupby_cols).agg( | |
| ans=(operation_col, operation) | |
| ).reset_index() | |
| st.dataframe(result) | |
| st.subheader(':gray[Data Visualization]', divider='gray') | |
| graphs = st.selectbox('Choose your graphs', options=['line', 'bar', 'scatter', 'pie', 'sunburst']) | |
| if graphs == 'line': | |
| x_axis = st.selectbox('Choose X axis', options=list(result.columns)) | |
| y_axis = st.selectbox('Choose Y axis', options=list(result.columns)) | |
| color = st.selectbox('Color Information', options=[None] + list(result.columns)) | |
| fig = px.line(data_frame=result, x=x_axis, y=y_axis, color=color, markers='o') | |
| st.plotly_chart(fig) | |
| elif graphs == 'bar': | |
| x_axis = st.selectbox('Choose X axis', options=list(result.columns)) | |
| y_axis = st.selectbox('Choose Y axis', options=list(result.columns)) | |
| color = st.selectbox('Color Information', options=[None] + list(result.columns)) | |
| facet_col = st.selectbox('Column Information', options=[None] + list(result.columns)) | |
| fig = px.bar(data_frame=result, x=x_axis, y=y_axis, color=color, facet_col=facet_col, barmode='group') | |
| st.plotly_chart(fig) | |
| elif graphs == 'scatter': | |
| x_axis = st.selectbox('Choose X axis', options=list(result.columns)) | |
| y_axis = st.selectbox('Choose Y axis', options=list(result.columns)) | |
| color = st.selectbox('Color Information', options=[None] + list(result.columns)) | |
| size = st.selectbox('Size Column', options=[None] + list(result.columns)) | |
| fig = px.scatter(data_frame=result, x=x_axis, y=y_axis, color=color, size=size) | |
| st.plotly_chart(fig) | |
| elif graphs == 'pie': | |
| values = st.selectbox('Choose Numerical Values', options=list(result.columns)) | |
| names = st.selectbox('Choose labels', options=list(result.columns)) | |
| fig = px.pie(data_frame=result, values=values, names=names) | |
| st.plotly_chart(fig) | |
| elif graphs == 'sunburst': | |
| path = st.multiselect('Choose your Path', options=list(result.columns)) | |
| fig = px.sunburst(data_frame=result, path=path, values='ans') | |
| st.plotly_chart(fig) | |