File size: 3,914 Bytes
9a5d6a9 508403c 6919349 605f57d 508403c 9a5d6a9 605f57d 508403c c91d609 605f57d 508403c 605f57d 9a5d6a9 508403c 9a5d6a9 605f57d 508403c b931666 605f57d 508403c 605f57d 9a5d6a9 b931666 9a5d6a9 605f57d 508403c 9312ce7 605f57d 508403c 605f57d 9a5d6a9 b931666 508403c b931666 508403c b931666 c91d609 b931666 9312ce7 b931666 c91d609 9a5d6a9 b931666 6919349 c91d609 |
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 |
import streamlit as st
import requests
import pandas as pd
# API ν€ μ€μ
api_key = "Z2FNKPFTMDSTHHR60KS4"
# ν΅κ³ μ½λ μ‘°ν ν¨μ
def get_statistic_codes():
url = f"https://ecos.bok.or.kr/api/StatisticTableList/{api_key}/json/kr/1/1000"
response = requests.get(url)
if response.status_code == 200:
data = response.json()
df = pd.DataFrame(data['StatisticTableList']['row'])
df['μ½λμ μ΄λ¦'] = df['STAT_CODE'] + ": " + df['STAT_NAME']
return df[['STAT_CODE', 'μ½λμ μ΄λ¦']]
else:
st.error(f"Failed to retrieve data: {response.status_code}")
return None
# ν΅κ³ λ°μ΄ν° μ‘°ν ν¨μ
def get_statistic_data(stat_code, period, start_date, end_date):
url = f"https://ecos.bok.or.kr/api/StatisticSearch/{api_key}/json/kr/1/1000/{stat_code}/{period}/{start_date}/{end_date}"
response = requests.get(url)
if response.status_code == 200:
data = response.json()
if 'StatisticSearch' in data:
df = pd.DataFrame(data['StatisticSearch']['row'])
return df
else:
st.error("λ°μ΄ν°κ° μμ΅λλ€. μ
λ ₯ν 쑰건μ νμΈνμΈμ.")
return None
else:
st.error(f"Failed to retrieve data: {response.status_code}")
return None
# 100λ ν΅κ³μ§ν μ 체 μ‘°ν ν¨μ
def get_top_100_statistics():
url = f"https://ecos.bok.or.kr/api/KeyStatisticList/{api_key}/json/kr/1/1000"
response = requests.get(url)
if response.status_code == 200:
data = response.json()
if 'KeyStatisticList' in data:
df = pd.DataFrame(data['KeyStatisticList']['row'])
return df
else:
st.error("100λ ν΅κ³μ§ν λ°μ΄ν°λ₯Ό μ°Ύμ μ μμ΅λλ€.")
return None
else:
st.error(f"Failed to retrieve data: {response.status_code}")
return None
# Streamlit μ± κ΅¬μ±
st.title("νκ΅μν ECOS API λ°μ΄ν° μ‘°ν")
# μΌμͺ½ μ¬μ΄λλ°μμ μ ν λ©λ΄ ꡬμ±
menu = st.sidebar.selectbox(
"λ©λ΄λ₯Ό μ ννμΈμ",
("ν΅κ³ μ½λ μ‘°ν λ° λ°μ΄ν° λΆμ", "100λ ν΅κ³μ§ν μ€μκ° νμΈ")
)
if menu == "ν΅κ³ μ½λ μ‘°ν λ° λ°μ΄ν° λΆμ":
st.header("ν΅κ³ μ½λ μ‘°ν λ° λ°μ΄ν° λΆμ")
# ν΅κ³ μ½λ μ‘°ν λ° μ ν
stat_codes_df = get_statistic_codes()
if stat_codes_df is not None:
selected_code_name = st.selectbox("μ‘°νν ν΅κ³ μ½λλ₯Ό μ ννμΈμ:", stat_codes_df['μ½λμ μ΄λ¦'])
selected_code = selected_code_name.split(": ")[0] # ν΅κ³ μ½λλ§ μΆμΆ
# ν΅κ³ λ°μ΄ν° μ‘°ν λ° μΆλ ₯
period = st.text_input("μ‘°ν μ£ΌκΈ° μ
λ ₯ (μ: A, Q, M):", "A")
start_date = st.text_input("κ²μ μμμΌμ μ
λ ₯ (μ: 2015, 2015Q1, 201501, 20150101):", "2015")
end_date = st.text_input("κ²μ μ’
λ£μΌμ μ
λ ₯ (μ: 2021, 2021Q1, 202101, 20210101):", "2021")
if st.button("ν΅κ³ λ°μ΄ν° μ‘°ν"):
stat_data_df = get_statistic_data(selected_code, period, start_date, end_date)
if stat_data_df is not None:
st.write(f"μ νν ν΅κ³ μ½λ: {selected_code}")
st.dataframe(stat_data_df)
# Excel νμΌλ‘ μ μ₯
st.write("λ°μ΄ν°λ₯Ό Excel νμΌλ‘ μ μ₯νλ €λ©΄ μλ λ²νΌμ ν΄λ¦νμΈμ.")
if st.button("Excelλ‘ μ μ₯"):
stat_data_df.to_excel(f"{selected_code}_data.xlsx", index=False)
st.success(f"λ°μ΄ν°κ° {selected_code}_data.xlsx νμΌλ‘ μ μ₯λμμ΅λλ€.")
elif menu == "100λ ν΅κ³μ§ν μ€μκ° νμΈ":
st.header("100λ ν΅κ³μ§ν μ€μκ° νμΈ")
top_100_df = get_top_100_statistics()
if top_100_df is not None:
st.dataframe(top_100_df)
|