-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.py
145 lines (97 loc) Β· 3.61 KB
/
app.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
import streamlit as st
import os
#EDA packages
import pandas as pd
import numpy as np
#Visualization packages
#import matplotlib.pyplot as plt
#import matplotlib
#matplotlib.use('Agg')
#import seaborn as sns
#Sidebar
st.sidebar.header("About me ""π¬")
st.sidebar.markdown("""
Hi, my name is Marina.
I'm a Data Science Student
and this is my first Streamlit App.
You can find my LinkedIn and GitHub profile links below.
""")
st.sidebar.subheader("Social ""πββ")
st.sidebar.markdown("""
[LinkedIn](https://www.linkedin.com/in/marinahsborges/)
[GitHub](https://github.com/inaborges)
""")
st.sidebar.subheader("Goals for this project " "π")
st.sidebar.markdown("""
- β Put the buttons in the same row
- β Create download datasets option
- :heavy_check_mark: Create choose dataset to display option
- :heavy_check_mark: Add charts
This project is part of the 10 weeks Data Science BootCamp, from [Codenation](https://codenation.dev/).
""")
#End of sidebar section
#Main app
st.image('milwaukee_city.jpg', width=680)
st.write(' ## Number of City-Owned Improved Properties by Year')
st.write("This apps is a data explorer for Milwaukee City Owned Houses sales and total management costs between 2014 and 2017.")
#st.write(" ## **Data Sample by Year** ")
def main():
def file_selector(folder_path='./datasets'):
filenames = os.listdir(folder_path)
selected_filename = st.selectbox("Select a file", filenames)
return os.path.join(folder_path, selected_filename)
filename = file_selector()
st.info("You selected {}".format(filename))
#Read data function
df = pd.read_csv(filename)
#Show dataset
if st.checkbox("Show Dataset"):
number = st.number_input("Number of Rows to View",1)
st.dataframe(df.head(number))
#Show columns
st.write("**Selected dataset column names**")
if st.button("Column Names"):
st.write(df.columns)
#Show shape
st.write("**Selected dataset shape**")
if st.checkbox("Shape of Dataset"):
data_dim = st.radio("Show dimension by", ("Rows","Columns"))
if data_dim == 'Rows':
st.text("Number of Rows")
st.write(df.shape[0])
elif data_dim == 'Columns':
st.text("Number of Columns")
st.write(df.shape[1])
else:
st.write(df.shape)
#Select columns
st.write("**Selected dataset columns**")
if st.checkbox("Select columns to show"):
all_columns = df.columns.tolist()
selected_columns = st.multiselect("Select", all_columns)
new_df = df[selected_columns]
st.dataframe(new_df)
#Show datatypes
st.write("**Selected dataset datatypes**")
if st.button("Data Types"):
st.write(df.dtypes)
#Plot and visualization
st.subheader("Data Visualization")
all_columns_names = df.columns.tolist()
type_of_plot = st.selectbox("Select the type of Plot", ["area", "bar"])
selected_column_names = st.multiselect("Select Columns to Plot", all_columns_names)
if st.button("Generate Plot"):
st.success("Generating Customizable Plot of {} for {} ".format(type_of_plot, selected_column_names))
#Plots by Streamlit:
if type_of_plot == 'area':
cust_data = df[selected_column_names]
st.area_chart(cust_data)
elif type_of_plot == 'bar':
cust_data = df[selected_column_names]
st.bar_chart(cust_data)
#elif type_of_plot:
#cust_plot = df[selected_column_names].plot(kind=type_of_plot)
#st.write(cust_plot)
#st.pyplot()
if __name__ == '__main__':
main()