Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
jupyter-naas
GitHub Repository: jupyter-naas/awesome-notebooks
Path: blob/master/FAO/FAO_Consumer_price_indice.ipynb
2973 views
Kernel: Python 3

Naas

FAO - Consumer price indice

Give Feedback | Bug report

Tags: #fao #opendata #food #analytics #plotly

Last update: 2023-04-12 (Created: 2021-06-10)

Description: This notebook provides an analysis of the changes in consumer prices over time as measured by the Food and Agriculture Organization's Consumer Price Index.

Input

Import librairies

import requests, zipfile, io import matplotlib.pyplot as plt import naas_drivers import pandas as pd import plotly.express as px import csv import codecs import plotly.graph_objects as go

Set the variables

filename = "ConsumerPriceIndices_E_All_Data_(Normalized).csv" zip_file_url = "http://fenixservices.fao.org/faostat/static/bulkdownloads/ConsumerPriceIndices_E_All_Data_(Normalized).zip"

Get the data

r = requests.get(zip_file_url, stream=True) z = zipfile.ZipFile(io.BytesIO(r.content)) z.extractall() df = pd.read_csv(filename, encoding="latin-1") df.to_csv(filename, index=False) df = pd.read_csv(filename) df.head()

Model

Sort the data

df = df[df["Item Code"] == 23013] df = df[df.Year == 2020] dfmax10 = ( df.groupby(["Area", "Year"]) .mean() .reset_index() .sort_values("Value", ascending=False) .reset_index() ) dfmin10 = ( df.groupby(["Area", "Year"]) .mean() .reset_index() .sort_values("Value", ascending=True) .reset_index() )

Output

Display the plot of the Top 10 of the biggest evolution in 2020

dfmax10y = dfmax10["Area"].head(10).iloc[::-1] dfmax10x = dfmax10["Value"].head(10).iloc[::-1] fig = go.Figure(go.Bar(x=dfmax10x, y=dfmax10y, orientation="h")) fig.update_xaxes(type="log") fig.update_layout(title_text="Top 10 of the biggest evolution in 2020") fig.show()

Display the plot of the Top 10 of the worst evolution in 2020

dfmin10y = dfmin10["Area"].head(10).iloc[::-1] dfmin10x = dfmin10["Value"].head(10).iloc[::-1] fig = go.Figure(go.Bar(x=dfmin10x, y=dfmin10y, orientation="h")) fig.update_layout(title_text="Top 10 of the worst evolution in 2020") fig.show()