In [ ]:
import numpy as np
import pandas as pd
In [ ]:
df = pd.read_csv('FAOSTAT_data_en_3-27-2023.csv')
In [ ]:
# pivot so that the columns are the animal type (Item) and the rows are the values (Value)
livestock_counts_pivoted = df.pivot_table(columns='Item', values='Value', aggfunc=np.sum)

# now transpose so that we have the animal type and total population as columns
livestock_counts = livestock_counts_pivoted.transpose()
In [ ]:
livestock_counts
Out[ ]:
Value
Item
Asses 55000366
Bees 111007736
Buffalo 230961965
Camels 39757450
Cattle 1589818026
Chickens 30424208
Ducks 1769953
Geese 680195
Goats 1244310660
Horses 61887544
Mules and hinnies 8351073
Other camelids 8631322
Other rodents 19177
Rabbits and hares 260205
Sheep 1470600904
Swine / pigs 1430216958
Turkeys 245751
In [ ]:
# filter all animals with less than 50 million
low_pop_livestock = livestock_counts['Value'] < 50*1e6
high_pop_livestock = livestock_counts['Value'] >= 50*1e6


# add an other column for the low population animals
out = pd.concat([
    livestock_counts[high_pop_livestock],
    pd.DataFrame(
        {'Value': livestock_counts[low_pop_livestock]['Value'].sum()},
        index=['Other']
    )
])
In [ ]:
out
Out[ ]:
Value
Asses 55000366
Bees 111007736
Buffalo 230961965
Cattle 1589818026
Goats 1244310660
Horses 61887544
Sheep 1470600904
Swine / pigs 1430216958
Other 90139334
In [ ]:
# plot the data with a bar chart
out.plot(kind='bar', figsize=(16,8), title='Livestock Counts')
Out[ ]:
<AxesSubplot:title={'center':'Livestock Counts'}>
In [ ]:
import matplotlib.pyplot as plt

# plot stacked bar plot
out.plot(kind='bar', stacked=True, figsize=(16,8), title='Livestock Counts')
Out[ ]:
<AxesSubplot:title={'center':'Livestock Counts'}>