|
|
import pandas as pd |
|
|
import numpy as np |
|
|
import streamlit as st |
|
|
|
|
|
|
|
|
|
|
|
def get_data(data, filter_column_name): |
|
|
|
|
|
data = pd.read_csv(data) |
|
|
df = data.head(69) |
|
|
|
|
|
df.fillna("No Answer", inplace=True) |
|
|
|
|
|
if filter_column_name is not None: |
|
|
if filter_column_name in df.columns: |
|
|
filter_by = st.sidebar.selectbox(f"Choose the values from \"{filter_column_name}\" values",df[filter_column_name].unique().tolist()) |
|
|
|
|
|
filtered_df = df[df[filter_column_name]==filter_by] |
|
|
|
|
|
return filtered_df, filter_by |
|
|
|
|
|
else: |
|
|
st.error(f"No column called \"{filter_column_name}\" in given dataset") |
|
|
return None, None |
|
|
|
|
|
else: |
|
|
return df, None |
|
|
|
|
|
|
|
|
def get_view(df, col_list, percent): |
|
|
|
|
|
|
|
|
|
|
|
new_df = pd.DataFrame() |
|
|
|
|
|
for col in col_list: |
|
|
if col in df.columns: |
|
|
if percent==0: |
|
|
|
|
|
series = df[col].value_counts() |
|
|
elif percent==1: |
|
|
series = df[col].value_counts(normalize=True)*100 |
|
|
series = series.round(2) |
|
|
|
|
|
|
|
|
|
|
|
new_df[col] = series |
|
|
|
|
|
else: |
|
|
st.error(f"Column: \"{col}\" not found in the dataset to generate view.") |
|
|
|
|
|
view = new_df.T |
|
|
view.reset_index(inplace=True) |
|
|
|
|
|
if percent==1: |
|
|
st.subheader("Percentage view") |
|
|
|
|
|
st.write(view) |