|
import streamlit as st |
|
from PIL import Image |
|
import os |
|
import pandas as pd |
|
import tomli |
|
|
|
pd.options.mode.chained_assignment = None |
|
|
|
st.set_page_config(layout="wide") |
|
|
|
|
|
@st.cache_data |
|
def load_data(): |
|
df_ind = pd.read_csv("data/df_individuals_score.csv", index_col=[0]) |
|
df_ind = df_ind.drop("region_code", axis=1) |
|
df_ind["productive_year"] = df_ind["productive_year"].astype(int) |
|
df_ind["individual_wikidata_id"] = "https://www.wikidata.org/wiki/" + df_ind[ |
|
"individual_wikidata_id" |
|
].astype(str) |
|
|
|
df_ind = df_ind[df_ind["productive_year"] <= 1800] |
|
return df_ind |
|
|
|
|
|
df_ind = load_data() |
|
|
|
|
|
def load_region_descriptions(): |
|
with open("regions.toml", "rb") as toml_file: |
|
data = tomli.load(toml_file) |
|
return data |
|
|
|
|
|
|
|
def get_region_description(region_data, selected_region): |
|
return region_data[selected_region]["description"] |
|
|
|
|
|
region_data = load_region_descriptions() |
|
|
|
|
|
st.sidebar.title("Our History in Data") |
|
st.sidebar.write( |
|
"This project is led by Charles de Dampierre, Folgert Karsdorp, Mike Kestemont, Valentin Thouzeau and Nicolas Baumard" |
|
) |
|
|
|
|
|
global_index_path = "data/immaterial_index/figures_trends_R/results" |
|
global_index_path_per_capita = ( |
|
"data/immaterial_index/figures_trends_R/results_per_capita" |
|
) |
|
unseen_index_path = ( |
|
"data/immaterial_index/figures_trends_R/figures_unseen/results_unseen" |
|
) |
|
unseen_capita_index_path = ( |
|
"data/immaterial_index/figures_trends_R/figures_unseen/results_unseen/per_capita" |
|
) |
|
|
|
|
|
population_path = "data/population" |
|
maps_path = "data/map_figures" |
|
|
|
|
|
from region_list import region_list |
|
|
|
region_filtered = list(region_list.keys()) |
|
|
|
index_paths = {} |
|
|
|
for region_key in region_list: |
|
|
|
index_paths[region_key] = { |
|
"map": f"{maps_path}/map_{region_key}.png", |
|
"global_index": f"{global_index_path}/{region_key}.png", |
|
"global_index_per_capita": f"{global_index_path_per_capita}/{region_key}.png", |
|
"unseen_index": f"{unseen_index_path}/{region_key}.png", |
|
"unseen_index_capita": f"{unseen_capita_index_path}/{region_key}.png", |
|
"population_index": f"{population_path}/{region_key}.png", |
|
} |
|
|
|
|
|
regions = list(index_paths.keys()) |
|
|
|
|
|
selected_region = st.sidebar.selectbox("Region:", regions, index=regions.index("Japan")) |
|
|
|
|
|
if selected_region in index_paths: |
|
col1, col2 = st.columns(2) |
|
|
|
df = df_ind[df_ind["region_name"] == selected_region] |
|
df = df.drop(["region_name", "decade"], axis=1) |
|
df = df[ |
|
[ |
|
"individual_name", |
|
"productive_year", |
|
"score", |
|
"individual_wikidata_id" "", |
|
] |
|
] |
|
df = df.sort_values("score", ascending=False) |
|
df = df.rename(columns={"score": "Number of Catalogs"}) |
|
|
|
min_date = region_list[selected_region]["time_range"][0] |
|
max_date = region_list[selected_region]["time_range"][1] |
|
df = df[df["productive_year"] >= min_date] |
|
df = df[df["productive_year"] <= max_date] |
|
df["productive_year"] = df["productive_year"].astype(int) |
|
df = df.reset_index(drop=True) |
|
|
|
|
|
with col1: |
|
st.header("Cultural Producers") |
|
st.dataframe(df) |
|
st.write(f"Number of Cultural producers active before 1800: {len(df)}") |
|
|
|
for key, path in index_paths[selected_region].items(): |
|
if os.path.exists(path): |
|
|
|
if key == "global_index": |
|
st.subheader("Global Index") |
|
st.image( |
|
Image.open(path), |
|
caption=key.capitalize(), |
|
use_column_width=True, |
|
) |
|
elif key == "global_index_per_capita": |
|
st.subheader("Index per capita") |
|
st.image( |
|
Image.open(path), |
|
caption=key.capitalize(), |
|
use_column_width=True, |
|
) |
|
elif key == "unseen_index": |
|
st.subheader("Unsee-Species Index") |
|
st.image( |
|
Image.open(path), |
|
caption=key.capitalize(), |
|
use_column_width=True, |
|
) |
|
elif key == "unseen_index_capita": |
|
st.subheader("Unsee-Species per capita Index") |
|
st.image( |
|
Image.open(path), |
|
caption=key.capitalize(), |
|
use_column_width=True, |
|
) |
|
elif key == "population_index": |
|
st.subheader("Population Index") |
|
st.image( |
|
Image.open(path), |
|
caption=key.capitalize(), |
|
use_column_width=True, |
|
) |
|
elif key == "map": |
|
st.subheader("Maps") |
|
st.sidebar.image( |
|
Image.open(path), |
|
caption=key.capitalize(), |
|
use_column_width=True, |
|
) |
|
else: |
|
st.write(f"File for {key.capitalize()} does not exist.") |
|
|
|
with col2: |
|
try: |
|
region_description = get_region_description( |
|
region_data, selected_region |
|
) |
|
st.header("Analysis") |
|
st.write(f"{region_description}") |
|
except: |
|
st.write("Analysis not ready yet") |
|
|