Spaces:
Sleeping
Sleeping
windyeh
commited on
Commit
·
986c5b4
1
Parent(s):
c20fe9f
data analysis
Browse files- app.py +81 -5
- dataset/cost.csv +13 -0
app.py
CHANGED
|
@@ -1,7 +1,83 @@
|
|
| 1 |
import streamlit as st
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
|
| 3 |
-
st.markdown('# Hello World')
|
| 4 |
-
st.markdown('### I am XXX')
|
| 5 |
-
st.text("Go to play")
|
| 6 |
-
x = st.slider('Select a value')
|
| 7 |
-
st.write(x, 'squared is', x * x)
|
|
|
|
| 1 |
import streamlit as st
|
| 2 |
+
import matplotlib.pyplot as plt
|
| 3 |
+
import pandas as pd
|
| 4 |
+
import numpy as np
|
| 5 |
+
from pylab import matplotlib
|
| 6 |
+
from matplotlib import font_manager
|
| 7 |
+
|
| 8 |
+
|
| 9 |
+
st.title(":flag-tw: 家庭收支調查")
|
| 10 |
+
st.header(':grey[縣市每人平均月消費]', divider='rainbow')
|
| 11 |
+
st.markdown('[*資料來源:行政院主計總處家庭收支調查*](https://www.stat.gov.tw/cp.aspx?n=3914)')
|
| 12 |
+
|
| 13 |
+
|
| 14 |
+
cost = pd.read_csv('./dataset/cost.csv', encoding='utf-8')
|
| 15 |
+
|
| 16 |
+
if 'clicked' not in st.session_state:
|
| 17 |
+
st.session_state.clicked = False
|
| 18 |
+
|
| 19 |
+
def click_button():
|
| 20 |
+
st.session_state.clicked = True
|
| 21 |
+
|
| 22 |
+
st.sidebar.subheader('調整參數:')
|
| 23 |
+
city = st.sidebar.multiselect('選擇想要顯示的**縣市**...', cost.columns, default=["年別", "新北市", "臺北市", "桃園市", "臺中市", "臺南市", "高雄市"])
|
| 24 |
+
year_range = st.sidebar.slider('選擇想要顯示的**年份**...', cost['年別'].unique()[0], cost['年別'].unique()[-1], (109, 111), step=1)
|
| 25 |
+
year = [i for i in range(year_range[0], year_range[1]+1, 1)]
|
| 26 |
+
|
| 27 |
+
|
| 28 |
+
|
| 29 |
+
st.button('點擊顯示圖表', on_click=click_button)
|
| 30 |
+
|
| 31 |
+
if st.session_state.clicked:
|
| 32 |
+
st.subheader(f'表1:民國 {year_range[0]} 至 {year_range[1]} 年', divider='grey')
|
| 33 |
+
cost_select = cost[cost["年別"].isin(year)][city]
|
| 34 |
+
st.write(cost_select)
|
| 35 |
+
st.divider()
|
| 36 |
+
|
| 37 |
+
# setup fonts for display mandarin characters
|
| 38 |
+
font_file = "./fonts/jf-openhuninn-2.0.ttf" # The path to the custom font file.
|
| 39 |
+
font_manager.fontManager.addfont(font_file)
|
| 40 |
+
matplotlib.rcParams['font.family'] = ['jf-openhuninn-2.0', 'sans-serif']
|
| 41 |
+
|
| 42 |
+
|
| 43 |
+
col1, col2 = st.columns(2)
|
| 44 |
+
# 長條圖
|
| 45 |
+
with col1:
|
| 46 |
+
st.pyplot(cost_select.plot(x='年別', kind='bar',title='長條圖').legend(bbox_to_anchor=(1.0, 1.0), fontsize='small').figure)
|
| 47 |
+
|
| 48 |
+
# 堆疊長條圖
|
| 49 |
+
with col2:
|
| 50 |
+
st.pyplot(cost_select.plot(x='年別', kind='bar',title='堆疊長條圖', stacked=True).legend(bbox_to_anchor=(1.0, 1.0), fontsize='small').figure)
|
| 51 |
+
st.divider()
|
| 52 |
+
|
| 53 |
+
col1, col2 = st.columns(2)
|
| 54 |
+
# 面積圖
|
| 55 |
+
with col1:
|
| 56 |
+
st.pyplot(cost_select.plot(x='年別', kind='area',title='面積圖', stacked=False).legend(bbox_to_anchor=(1.0, 1.0), fontsize='small').figure)
|
| 57 |
+
|
| 58 |
+
# 堆疊長條圖
|
| 59 |
+
with col2:
|
| 60 |
+
st.pyplot(cost_select.plot(x='年別', kind='area',title='堆疊面積圖', stacked=True).legend(bbox_to_anchor=(1.0, 1.0), fontsize='small').figure)
|
| 61 |
+
st.divider()
|
| 62 |
+
|
| 63 |
+
col1, col2 = st.columns(2)
|
| 64 |
+
# 折線圖
|
| 65 |
+
with col1:
|
| 66 |
+
st.pyplot(cost_select.plot(x='年別', kind='line',title='折線圖').legend(bbox_to_anchor=(1.0, 1.0), fontsize='small').figure)
|
| 67 |
+
|
| 68 |
+
# 折線圖,變換線條形式
|
| 69 |
+
with col2:
|
| 70 |
+
st.pyplot(cost_select.plot(x='年別', kind='line',title='折線圖-o', style='-o').legend(bbox_to_anchor=(1.0, 1.0), fontsize='small').figure)
|
| 71 |
+
st.divider()
|
| 72 |
+
|
| 73 |
+
st.session_state.clicked = False
|
| 74 |
+
|
| 75 |
+
|
| 76 |
+
|
| 77 |
+
|
| 78 |
+
|
| 79 |
+
|
| 80 |
+
|
| 81 |
+
|
| 82 |
+
|
| 83 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
dataset/cost.csv
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
年別,總平均,新北市,臺北市,桃園市,臺中市,臺南市,高雄市,宜蘭縣,新竹縣,苗栗縣,彰化縣,南投縣,雲林縣,嘉義縣,屏東縣,臺東縣,花蓮縣,澎湖縣,基隆市,新竹市,嘉義市
|
| 2 |
+
100,18465,18722,25321,19466,17544,16479,18100,15834,21012,15314,13646,15426,13696,14901,15473,13339,16498,14178,18824,23723,16405
|
| 3 |
+
101,18774,18843,25279,19426,18295,16440,18367,17689,20906,15557,14946,16281,13823,16910,14786,14286,17173,14655,18862,23689,18808
|
| 4 |
+
102,19416,19131,26672,19490,19805,17160,19081,18266,20925,15987,14370,15857,15176,16740,14623,15700,15880,15191,20681,25675,19970
|
| 5 |
+
103,19978,19512,27004,19783,20801,18023,19735,19408,21512,15971,14966,15440,15159,17077,16079,15957,17278,17226,20608,25699,20379
|
| 6 |
+
104,20421,20315,27216,19845,20821,18110,21191,21668,21193,16920,15505,15856,15183,16840,16521,14267,17312,15249,21396,24313,19081
|
| 7 |
+
105,21086,20730,28476,20739,21798,18782,20665,21099,21462,17755,16544,17032,15535,17590,18151,16668,18459,17660,22152,26749,20361
|
| 8 |
+
106,22032,22136,29245,21684,23125,19142,21597,21941,24864,17681,15844,17409,17061,18667,18891,17171,19699,17138,22826,27293,20730
|
| 9 |
+
107,22168,22419,28550,23049,23267,19536,21674,21174,24784,17965,15929,16637,17449,18272,18952,17810,19507,17411,21801,26925,20861
|
| 10 |
+
108,22881,22755,30981,22147,24281,20114,22942,21707,24391,18057,17342,17184,18114,18046,18372,17457,20041,18883,22324,26703,21417
|
| 11 |
+
109,23262,23061,30713,22537,24187,21019,23159,21383,26661,18739,17794,18874,18270,19531,19964,18825,19300,19740,22628,26455,21656
|
| 12 |
+
110,23513,23021,32305,23422,24775,20745,23200,22412,27344,18723,17704,17579,18892,18778,20192,19800,20445,19779,23151,27149,23365
|
| 13 |
+
111,24574,24663,33730,24187,25666,21704,25270,22644,25336,19873,18084,18918,19092,18750,20980,19444,20241,20303,23076,29495,23173
|