A collection of useful functions for open goverment data and Cube handling.
pip install git+https://github.com/BLV-OSAV-USAV/cubeUtilities.gitimport pandas as pd
from cubeUtilities.converter import convert_cube
from cubeUtilities.translator import translate_dataframe_columns
# Example data
df = pd.DataFrame({
"Serotyp": ["A", "A", "B", "B"],
"Kanton_ID": ["ZH", "ZH", "BE", "BE"],
"Season": ["2021", "2022", "2021", "2022"],
"Genus": ["Cattle", "Cattle", "Pigs", "Pigs"],
"Value": [10, 15, 12.3, 20],
"Volume": [100, 150, 200, 300],
"Animals": [1000, 1000, 2000, 2000]
})
# Conver Cube
cube = convert_cube(
df,
dimensions=["Serotyp", "Kanton_ID", "Season", "Genus"],
measure_cols=["Value","Volume", "Animals"],
per_subgroup_measures={"Animals": ["Genus"]},
all_labels={"Serotyp": "ALL", "Kanton_ID": "CHE", "Season": "ALL", "Genus": "All_Genus"},
round_decimals=2
)
print("Results:")
print(cube.to_string())
print("\n\nKey examples to verify:")
print("Animals for Cattle (any specific combination):", cube[(cube['Genus'] == 'Cattle') & (cube['Serotyp'] != 'ALL')]['Animals'].iloc[0])
print("Animals for 'Serotyp ALL, Genus Cattle' (should be 1000):", cube[(cube['Genus'] == 'Cattle') & (cube['Serotyp'] == 'ALL') & (cube['Kanton_ID'] != 'CHE') & (cube['Season'] != 'ALL')]['Animals'].iloc[0])
print("Animals for 'All_Genus' (should be 3000 = 1000 + 2000):", cube[cube['Genus'] == 'All_Genus']['Animals'].iloc[0])
# Translate Cube
translations = translate_dataframe_columns(
df=cube,
service="googletrans",
source_language="en",
target_languages=["de", "en", "fr", "it"]
)