Spaces:
Runtime error
Runtime error
| import streamlit as st | |
| import pandas as pd | |
| import plotly.express as px | |
| import math | |
| complete_acc = pd.read_csv('completedacct.csv') | |
| complete_district = pd.read_csv('completeddistrict.csv') | |
| complete_loan = pd.read_csv('completedloan.csv') | |
| #clean data | |
| complete_acc = complete_acc.drop(['year', 'month', 'day', 'date'], axis = 1) | |
| #set up the data | |
| acc_loan = complete_loan.merge(complete_acc, how='inner', left_on='account_id', right_on='account_id') | |
| acc_loan_district = acc_loan.merge(complete_district, how='inner', left_on='district_id', right_on='district_id') | |
| year = acc_loan_district['year'].isin([2013, 2014]) | |
| acc_loan_district = acc_loan_district[year] | |
| total_loan = acc_loan_district['amount'].sum() | |
| growth_rate = acc_loan_district.groupby('year')['amount'].sum().reset_index() | |
| growth_rate['lead(1)'] = growth_rate['amount'].shift(1) | |
| growth_rate['growth_rate'] = ((growth_rate['amount'] - growth_rate['lead(1)'])/growth_rate['lead(1)'])*100 | |
| growth_rate_fix = math.ceil(growth_rate['growth_rate'].iloc[1]) | |
| loan_per_city = acc_loan_district.groupby('city')['amount'].sum().reset_index().sort_values('amount', ascending = False) | |
| loan_per_city = loan_per_city.head(10) | |
| loan_per_region = acc_loan_district.groupby('region')['amount'].sum().reset_index().sort_values('amount', ascending = False) | |
| region = acc_loan_district['region'].unique().tolist() | |
| region.append('All') | |
| def get_filtered_data(df, region): | |
| if region == 'All': | |
| mask_region = df['region'].isin(['Northeast', 'South', 'Midwest', 'West']) | |
| else: | |
| mask_region = df['region'] == region | |
| return df[mask_region] | |
| def line_plot(df): | |
| df = df.groupby('month')['amount'].sum().reset_index() | |
| fig = px.line(df, x = df['month'], y = df['amount'], title = 'Trend Loan per Month') | |
| return fig | |
| def bar_plot(df, x, y, title): | |
| fig = px.bar(df, x=x, y=y, title=title) | |
| return fig | |
| st.title('Total Loans Period 2013-2014') | |
| col1, col2 = st.columns(2) | |
| col1.metric(label='Total', value='$'+str(total_loan)) | |
| col2.metric(label='Growth Rate in 12 Month', value='%'+str(growth_rate_fix)) | |
| st.plotly_chart(bar_plot(loan_per_city, loan_per_city['city'], loan_per_city['amount'], 'By City')) | |
| st.plotly_chart(bar_plot(loan_per_region, loan_per_region['region'], loan_per_region['amount'], 'By Region')) | |
| st.markdown('Trend Filter') | |
| selected_region = st.selectbox('Select Region', region, key = 'region') | |
| df_filtered = get_filtered_data(acc_loan_district, selected_region) | |
| st.plotly_chart(line_plot(df_filtered)) |