|
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.markdown( |
|
"<div style='background-color: lightblue; text-align: center; padding: 10px;'><h1 style='font-size: 70px;'>Our History in Data</h1></div>", |
|
unsafe_allow_html=True, |
|
) |
|
|
|
|
|
@st.cache_data |
|
def load_data(): |
|
df_ind = pd.read_csv("data/df_individuals_score.csv", index_col=[0]) |
|
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() |
|
|
|
|
|
|
|
page = st.sidebar.radio( |
|
"Menu", |
|
["Home", "Methodology", "Team", "About"], |
|
key="navigation_radio", |
|
) |
|
|
|
|
|
st.sidebar.success( |
|
"This project is led by Charles de Dampierre, Folgert Karsdorp, Mike Kestemont, Valentin Thouzeau and Nicolas Baumard" |
|
) |
|
|
|
|
|
|
|
if page == "Home": |
|
|
|
|
|
global_index_path = "data/immaterial_index/figures_trends_R/results" |
|
global_index_path_per_capita = ( |
|
"data/immaterial_index/figures_trends_R/results_capita" |
|
) |
|
unseen_index_path = "data/immaterial_index/figures_trends_R/results_unseen" |
|
unseen_capita_index_path = ( |
|
"data/immaterial_index/figures_trends_R/results_unseen_capita" |
|
) |
|
|
|
complexity_index_path = "data/immaterial_index/figures_trends_R/results_complexity" |
|
occupations_index_path = ( |
|
"data/immaterial_index/figures_trends_R/results_occupations" |
|
) |
|
population_path = "data/population" |
|
gdp_per_capita_path = "data/gdp_per_capita" |
|
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", |
|
"complexity_index": f"{complexity_index_path}/{region_key}.png", |
|
"occupations_index": f"{occupations_index_path}/{region_key}.png", |
|
"gdp_per_capita_index": f"{gdp_per_capita_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: |
|
st.markdown( |
|
f"<h1 style='text-align: left; font-size: 50px;'>{selected_region}</h1>", |
|
unsafe_allow_html=True, |
|
) |
|
|
|
try: |
|
st.image( |
|
f"image/{selected_region}.jpeg", |
|
caption="Japan", |
|
use_column_width=False, |
|
width=1000, |
|
) |
|
except: |
|
pass |
|
|
|
col1, col2, col3 = st.columns([8, 1, 8]) |
|
|
|
|
|
with col1: |
|
for key, path in index_paths[selected_region].items(): |
|
if os.path.exists(path): |
|
|
|
if key == "global_index": |
|
st.subheader("Cultural Index") |
|
st.image( |
|
Image.open(path), |
|
caption=key.capitalize(), |
|
use_column_width=True, |
|
) |
|
elif key == "global_index_per_capita": |
|
st.subheader("Cultural Index per capita") |
|
st.image( |
|
Image.open(path), |
|
caption=key.capitalize(), |
|
use_column_width=True, |
|
) |
|
elif key == "unseen_index": |
|
st.subheader( |
|
"Cultural Index corrected by the unseen-species model" |
|
) |
|
st.image( |
|
Image.open(path), |
|
caption=key.capitalize(), |
|
use_column_width=True, |
|
) |
|
elif key == "unseen_index_capita": |
|
st.subheader( |
|
"Cultural Index per capita corrected by the unseen-species model" |
|
) |
|
st.image( |
|
Image.open(path), |
|
caption=key.capitalize(), |
|
use_column_width=True, |
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
elif key == "occupations_index": |
|
st.subheader("Occupation Index") |
|
st.image( |
|
Image.open(path), |
|
caption=key.capitalize(), |
|
use_column_width=True, |
|
) |
|
|
|
elif key == "gdp_per_capita_index": |
|
st.subheader("GDP per capita") |
|
st.image( |
|
Image.open(path), |
|
caption=key.capitalize(), |
|
use_column_width=True, |
|
) |
|
|
|
else: |
|
st.write(f"File for {key.capitalize()} does not exist.") |
|
|
|
with col3: |
|
try: |
|
st.image( |
|
Image.open(f"data/map_figures/map_{selected_region}.png"), |
|
use_column_width=True, |
|
width=1000, |
|
) |
|
except: |
|
pass |
|
|
|
st.subheader("Analysis") |
|
try: |
|
region_description = get_region_description( |
|
region_data, selected_region |
|
) |
|
st.write(f"{region_description}") |
|
except: |
|
st.write("Analysis not ready yet") |
|
|
|
st.subheader("Cultural Producers in Wikidata") |
|
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"] = round(df["productive_year"], 0).astype(str) |
|
|
|
|
|
df = df.reset_index(drop=True) |
|
st.dataframe(df) |
|
st.write(f"Number of Cultural producers active before 1800: {len(df)}") |
|
|
|
try: |
|
st.subheader("Population") |
|
st.image( |
|
Image.open(path), |
|
caption=key.capitalize(), |
|
use_column_width=True, |
|
) |
|
except: |
|
pass |
|
|
|
|
|
elif page == "Methodology": |
|
|
|
|
|
with open("docs/methodology.md", "r") as file: |
|
methodology_content = file.read() |
|
|
|
|
|
st.write(methodology_content) |
|
|