Import the LArray library:
In [ ]:
    
from larray import *
    
Import the population array from the demography_eurostat dataset:
In [ ]:
    
demography_eurostat = load_example_data('demography_eurostat')
population = demography_eurostat.population
# display the 'population' array
population
    
The Array class offers several methods to manipulate the axes and labels of an array:
In [ ]:
    
# replace only one label of the 'gender' axis by passing a dict
population_new_labels = population.set_labels('gender', {'Male': 'Men'})
population_new_labels
    
In [ ]:
    
# set all labels of the 'country' axis to uppercase by passing the function str.upper()
population_new_labels = population.set_labels('country', str.upper)
population_new_labels
    
See set_labels for more details and examples.
In [ ]:
    
# 'rename' returns a copy of the array
population_new_names = population.rename('time', 'year')
population_new_names
    
Rename several axes at once:
In [ ]:
    
population_new_names = population.rename({'gender': 'sex', 'time': 'year'})
population_new_names
    
See rename for more details and examples.
In [ ]:
    
new_gender = Axis('sex=Men,Women')
population_new_axis = population.set_axes('gender', new_gender)
population_new_axis
    
Replace several axes at once:
In [ ]:
    
new_country = Axis('country_codes=BE,FR,DE') 
population_new_axes = population.set_axes({'country': new_country, 'gender': new_gender})
population_new_axes
    
Axes can be reordered using transpose method.
By default, transpose reverse axes, otherwise it permutes the axes according to the list given as argument.
Axes not mentioned come after those which are mentioned(and keep their relative order).
Finally, transpose returns a copy of the array.
In [ ]:
    
# starting order : country, gender, time
population
    
In [ ]:
    
# no argument --> reverse all axes
population_transposed = population.transpose()
# .T is a shortcut for .transpose()
population_transposed = population.T
population_transposed
    
In [ ]:
    
# reorder according to list
population_transposed = population.transpose('gender', 'country', 'time')
population_transposed
    
In [ ]:
    
# move 'time' axis at first place
# not mentioned axes come after those which are mentioned (and keep their relative order)
population_transposed = population.transpose('time')
population_transposed
    
In [ ]:
    
# move 'gender' axis at last place
# not mentioned axes come before those which are mentioned (and keep their relative order)
population_transposed = population.transpose(..., 'gender')
population_transposed
    
See transpose for more details and examples.
In [ ]:
    
population_labels_dropped = population.drop([2014, 2016])
population_labels_dropped
    
See drop for more details and examples.
In [ ]:
    
population_combined_axes = population.combine_axes(('country', 'gender'))
population_combined_axes
    
Split an axis:
In [ ]:
    
population_split_axes = population_combined_axes.split_axes('country_gender')
population_split_axes
    
See combine_axes and split_axes for more details and examples.
In [ ]:
    
# reverse years + remove 2013 + add 2018 + copy data for 2017 to 2018
population_new_time = population.reindex('time', '2018..2014', fill_value=population[2017])
population_new_time
    
or several axes:
In [ ]:
    
population_new = population.reindex({'country': 'country=Luxembourg,Belgium,France,Germany', 
                       'time': 'time=2018..2014'}, fill_value=0)
population_new
    
See reindex for more details and examples.
Another way to insert new labels is to use the insert method:
In [ ]:
    
# insert a new country before 'France' with all values set to 0
population_new_country = population.insert(0, before='France', label='Luxembourg')
# or equivalently
population_new_country = population.insert(0, after='Belgium', label='Luxembourg')
population_new_country
    
See insert for more details and examples.
In [ ]:
    
# get a copy of the 'population_benelux' array
population_benelux = demography_eurostat.population_benelux.copy()
population_benelux
    
Sort an axis (alphabetically if labels are strings)
In [ ]:
    
population_sorted = population_benelux.sort_axes('gender')
population_sorted
    
Give labels which would sort the axis
In [ ]:
    
population_benelux.labelsofsorted('country')
    
Sort according to values
In [ ]:
    
population_sorted = population_benelux.sort_values(('Male', 2017))
population_sorted
    
In [ ]:
    
# get a copy of the 'births' array
births = demography_eurostat.births.copy()
# align the two arrays with the 'inner' join method
population_aligned, births_aligned = population_benelux.align(births, join='inner')
    
In [ ]:
    
print('population_benelux before align:')
print(population_benelux)
print()
print('population_benelux after align:')
print(population_aligned)
    
In [ ]:
    
print('births before align:')
print(births)
print()
print('births after align:')
print(births_aligned)
    
Aligned arrays can then be used in arithmetic operations:
In [ ]:
    
population_aligned - births_aligned
    
See align for more details and examples.