Spaces:
Sleeping
Sleeping
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") | |
# Test change | |
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 | |
# Function to get description based on selected region | |
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" | |
) | |
# Set the global index path | |
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: | |
# Create the index paths for the current region | |
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", | |
} | |
# Get the region names (keys) from the index_paths dictionary | |
regions = list(index_paths.keys()) | |
# Allow the user to select a region | |
selected_region = st.sidebar.selectbox("Region:", regions, index=regions.index("Japan")) | |
# Display the selected region's images vertically | |
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) | |
# Display the data in the left column | |
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") | |