Libraries required¶

In [1]:
#!pip install requests
from sqlalchemy import create_engine
import pandas as pd
import numpy as np
import requests as rq
import json
import itertools
import psycopg2

Token and cities id¶

In [2]:
TOKEN = 'xxx'
CITIES = ['07000009', '07000017', '07000011', '07000022', '07000013', '07000015', '07000029', '07000021']
URL_INDICADORES = []
CITIES_NAMES = ['CDMX', 'MORELOS', 'GUANAJUATO', 'QUERETARO', 'HIDALGO', 'EDOMEX', 'TLAXCALA', 'PUEBLA']
INDICATORS = ['Viviendas particulares habitadas que disponen de energía eléctrica', 'Porcentaje de analfabetas total', 'Porcentaje de la población de 15 años y más con rezago educativo', 'Porcentaje de población de 25 años y más alfabeta']

Creation of URLs to get the data for each city id¶

In [3]:
for i in CITIES:
    url_indicadores = f'https://www.inegi.org.mx/app/api/indicadores/desarrolladores/jsonxml/INDICATOR/3108001001,6200240391,6207019010,1003000017/es/{i}/true/BISE/2.0/{TOKEN}?type=json'
    URL_INDICADORES.append(url_indicadores)
    
URL_INDICADORES
Out[3]:
['https://www.inegi.org.mx/app/api/indicadores/desarrolladores/jsonxml/INDICATOR/3108001001,6200240391,6207019010,1003000017/es/07000009/true/BISE/2.0/9ce93ce1-70c2-0ff4-1e0a-ea5775475c08?type=json',
 'https://www.inegi.org.mx/app/api/indicadores/desarrolladores/jsonxml/INDICATOR/3108001001,6200240391,6207019010,1003000017/es/07000017/true/BISE/2.0/9ce93ce1-70c2-0ff4-1e0a-ea5775475c08?type=json',
 'https://www.inegi.org.mx/app/api/indicadores/desarrolladores/jsonxml/INDICATOR/3108001001,6200240391,6207019010,1003000017/es/07000011/true/BISE/2.0/9ce93ce1-70c2-0ff4-1e0a-ea5775475c08?type=json',
 'https://www.inegi.org.mx/app/api/indicadores/desarrolladores/jsonxml/INDICATOR/3108001001,6200240391,6207019010,1003000017/es/07000022/true/BISE/2.0/9ce93ce1-70c2-0ff4-1e0a-ea5775475c08?type=json',
 'https://www.inegi.org.mx/app/api/indicadores/desarrolladores/jsonxml/INDICATOR/3108001001,6200240391,6207019010,1003000017/es/07000013/true/BISE/2.0/9ce93ce1-70c2-0ff4-1e0a-ea5775475c08?type=json',
 'https://www.inegi.org.mx/app/api/indicadores/desarrolladores/jsonxml/INDICATOR/3108001001,6200240391,6207019010,1003000017/es/07000015/true/BISE/2.0/9ce93ce1-70c2-0ff4-1e0a-ea5775475c08?type=json',
 'https://www.inegi.org.mx/app/api/indicadores/desarrolladores/jsonxml/INDICATOR/3108001001,6200240391,6207019010,1003000017/es/07000029/true/BISE/2.0/9ce93ce1-70c2-0ff4-1e0a-ea5775475c08?type=json',
 'https://www.inegi.org.mx/app/api/indicadores/desarrolladores/jsonxml/INDICATOR/3108001001,6200240391,6207019010,1003000017/es/07000021/true/BISE/2.0/9ce93ce1-70c2-0ff4-1e0a-ea5775475c08?type=json']

Get data for each city id¶

In [4]:
data = []
for i in URL_INDICADORES:
    data.append(rq.get(i).json()['Series'])

data = list(itertools.chain.from_iterable(data))
data
Out[4]:
[{'INDICADOR': '1003000017',
  'FREQ': '7',
  'TOPIC': '56',
  'UNIT': '250',
  'UNIT_MULT': '',
  'NOTE': '10,12,395',
  'SOURCE': '2,3,343,487,3001',
  'LASTUPDATE': '25/05/2022',
  'STATUS': '3',
  'OBSERVATIONS': [{'TIME_PERIOD': '2020',
    'OBS_VALUE': '2746872.00000000000000000000',
    'OBS_EXCEPTION': None,
    'OBS_STATUS': '3',
    'OBS_SOURCE': '',
    'OBS_NOTE': '',
    'COBER_GEO': '07000009'}]},
 {'INDICADOR': '3108001001',
  'FREQ': '7',
  'TOPIC': '15',
  'UNIT': '3',
  'UNIT_MULT': '',
  'NOTE': '174',
  'SOURCE': '1714,20118',
  'LASTUPDATE': '03/04/2018',
  'STATUS': '3',
  'OBSERVATIONS': [{'TIME_PERIOD': '2015',
    'OBS_VALUE': '1.47506549456320000000',
    'OBS_EXCEPTION': None,
    'OBS_STATUS': '3',
    'OBS_SOURCE': '',
    'OBS_NOTE': '',
    'COBER_GEO': '07000009'}]},
 {'INDICADOR': '6200240391',
  'FREQ': '3',
  'TOPIC': '15',
  'UNIT': '3',
  'UNIT_MULT': '',
  'NOTE': '',
  'SOURCE': '1695,2179,2773,2785',
  'LASTUPDATE': '20/06/2018',
  'STATUS': '3',
  'OBSERVATIONS': [{'TIME_PERIOD': '2017',
    'OBS_VALUE': '20.63360453622430000000',
    'OBS_EXCEPTION': None,
    'OBS_STATUS': '3',
    'OBS_SOURCE': '',
    'OBS_NOTE': '',
    'COBER_GEO': '07000009'}]},
 {'INDICADOR': '6207019010',
  'FREQ': '7',
  'TOPIC': '15',
  'UNIT': '3',
  'UNIT_MULT': '',
  'NOTE': '',
  'SOURCE': '1714,3001',
  'LASTUPDATE': '24/01/2021',
  'STATUS': '3',
  'OBSERVATIONS': [{'TIME_PERIOD': '2020',
    'OBS_VALUE': '97.91713808749820000000',
    'OBS_EXCEPTION': None,
    'OBS_STATUS': '3',
    'OBS_SOURCE': '',
    'OBS_NOTE': '',
    'COBER_GEO': '07000009'}]},
 {'INDICADOR': '1003000017',
  'FREQ': '7',
  'TOPIC': '56',
  'UNIT': '250',
  'UNIT_MULT': '',
  'NOTE': '10,12,395',
  'SOURCE': '2,3,343,487,3001',
  'LASTUPDATE': '25/05/2022',
  'STATUS': '3',
  'OBSERVATIONS': [{'TIME_PERIOD': '2020',
    'OBS_VALUE': '556409.00000000000000000000',
    'OBS_EXCEPTION': None,
    'OBS_STATUS': '3',
    'OBS_SOURCE': '',
    'OBS_NOTE': '',
    'COBER_GEO': '07000017'}]},
 {'INDICADOR': '3108001001',
  'FREQ': '7',
  'TOPIC': '15',
  'UNIT': '3',
  'UNIT_MULT': '',
  'NOTE': '174',
  'SOURCE': '1714,20118',
  'LASTUPDATE': '03/04/2018',
  'STATUS': '3',
  'OBSERVATIONS': [{'TIME_PERIOD': '2015',
    'OBS_VALUE': '4.95519569719918000000',
    'OBS_EXCEPTION': None,
    'OBS_STATUS': '3',
    'OBS_SOURCE': '',
    'OBS_NOTE': '',
    'COBER_GEO': '07000017'}]},
 {'INDICADOR': '6200240391',
  'FREQ': '3',
  'TOPIC': '15',
  'UNIT': '3',
  'UNIT_MULT': '',
  'NOTE': '',
  'SOURCE': '1695,2179,2773,2785',
  'LASTUPDATE': '20/06/2018',
  'STATUS': '3',
  'OBSERVATIONS': [{'TIME_PERIOD': '2017',
    'OBS_VALUE': '31.40664859428390000000',
    'OBS_EXCEPTION': None,
    'OBS_STATUS': '3',
    'OBS_SOURCE': '',
    'OBS_NOTE': '',
    'COBER_GEO': '07000017'}]},
 {'INDICADOR': '6207019010',
  'FREQ': '7',
  'TOPIC': '15',
  'UNIT': '3',
  'UNIT_MULT': '',
  'NOTE': '',
  'SOURCE': '1714,3001',
  'LASTUPDATE': '24/01/2021',
  'STATUS': '3',
  'OBSERVATIONS': [{'TIME_PERIOD': '2020',
    'OBS_VALUE': '94.42901209576030000000',
    'OBS_EXCEPTION': None,
    'OBS_STATUS': '3',
    'OBS_SOURCE': '',
    'OBS_NOTE': '',
    'COBER_GEO': '07000017'}]},
 {'INDICADOR': '1003000017',
  'FREQ': '7',
  'TOPIC': '56',
  'UNIT': '250',
  'UNIT_MULT': '',
  'NOTE': '10,12,395',
  'SOURCE': '2,3,343,487,3001',
  'LASTUPDATE': '25/05/2022',
  'STATUS': '3',
  'OBSERVATIONS': [{'TIME_PERIOD': '2020',
    'OBS_VALUE': '1573803.00000000000000000000',
    'OBS_EXCEPTION': None,
    'OBS_STATUS': '3',
    'OBS_SOURCE': '',
    'OBS_NOTE': '',
    'COBER_GEO': '07000011'}]},
 {'INDICADOR': '3108001001',
  'FREQ': '7',
  'TOPIC': '15',
  'UNIT': '3',
  'UNIT_MULT': '',
  'NOTE': '174',
  'SOURCE': '1714,20118',
  'LASTUPDATE': '03/04/2018',
  'STATUS': '3',
  'OBSERVATIONS': [{'TIME_PERIOD': '2015',
    'OBS_VALUE': '6.34906629963758000000',
    'OBS_EXCEPTION': None,
    'OBS_STATUS': '3',
    'OBS_SOURCE': '',
    'OBS_NOTE': '',
    'COBER_GEO': '07000011'}]},
 {'INDICADOR': '6200240391',
  'FREQ': '3',
  'TOPIC': '15',
  'UNIT': '3',
  'UNIT_MULT': '',
  'NOTE': '',
  'SOURCE': '1695,2179,2773,2785',
  'LASTUPDATE': '20/06/2018',
  'STATUS': '3',
  'OBSERVATIONS': [{'TIME_PERIOD': '2017',
    'OBS_VALUE': '37.89118111610520000000',
    'OBS_EXCEPTION': None,
    'OBS_STATUS': '3',
    'OBS_SOURCE': '',
    'OBS_NOTE': '',
    'COBER_GEO': '07000011'}]},
 {'INDICADOR': '6207019010',
  'FREQ': '7',
  'TOPIC': '15',
  'UNIT': '3',
  'UNIT_MULT': '',
  'NOTE': '',
  'SOURCE': '1714,3001',
  'LASTUPDATE': '24/01/2021',
  'STATUS': '3',
  'OBSERVATIONS': [{'TIME_PERIOD': '2020',
    'OBS_VALUE': '93.12805959642950000000',
    'OBS_EXCEPTION': None,
    'OBS_STATUS': '3',
    'OBS_SOURCE': '',
    'OBS_NOTE': '',
    'COBER_GEO': '07000011'}]},
 {'INDICADOR': '1003000017',
  'FREQ': '7',
  'TOPIC': '56',
  'UNIT': '250',
  'UNIT_MULT': '',
  'NOTE': '10,12,395',
  'SOURCE': '2,3,343,487,3001',
  'LASTUPDATE': '25/05/2022',
  'STATUS': '3',
  'OBSERVATIONS': [{'TIME_PERIOD': '2020',
    'OBS_VALUE': '661924.00000000000000000000',
    'OBS_EXCEPTION': None,
    'OBS_STATUS': '3',
    'OBS_SOURCE': '',
    'OBS_NOTE': '',
    'COBER_GEO': '07000022'}]},
 {'INDICADOR': '3108001001',
  'FREQ': '7',
  'TOPIC': '15',
  'UNIT': '3',
  'UNIT_MULT': '',
  'NOTE': '174',
  'SOURCE': '1714,20118',
  'LASTUPDATE': '03/04/2018',
  'STATUS': '3',
  'OBSERVATIONS': [{'TIME_PERIOD': '2015',
    'OBS_VALUE': '4.53571775762054000000',
    'OBS_EXCEPTION': None,
    'OBS_STATUS': '3',
    'OBS_SOURCE': '',
    'OBS_NOTE': '',
    'COBER_GEO': '07000022'}]},
 {'INDICADOR': '6200240391',
  'FREQ': '3',
  'TOPIC': '15',
  'UNIT': '3',
  'UNIT_MULT': '',
  'NOTE': '',
  'SOURCE': '1695,2179,2773,2785',
  'LASTUPDATE': '20/06/2018',
  'STATUS': '3',
  'OBSERVATIONS': [{'TIME_PERIOD': '2017',
    'OBS_VALUE': '29.82601235505410000000',
    'OBS_EXCEPTION': None,
    'OBS_STATUS': '3',
    'OBS_SOURCE': '',
    'OBS_NOTE': '',
    'COBER_GEO': '07000022'}]},
 {'INDICADOR': '6207019010',
  'FREQ': '7',
  'TOPIC': '15',
  'UNIT': '3',
  'UNIT_MULT': '',
  'NOTE': '',
  'SOURCE': '1714,3001',
  'LASTUPDATE': '24/01/2021',
  'STATUS': '3',
  'OBSERVATIONS': [{'TIME_PERIOD': '2020',
    'OBS_VALUE': '95.50736688548500000000',
    'OBS_EXCEPTION': None,
    'OBS_STATUS': '3',
    'OBS_SOURCE': '',
    'OBS_NOTE': '',
    'COBER_GEO': '07000022'}]},
 {'INDICADOR': '1003000017',
  'FREQ': '7',
  'TOPIC': '56',
  'UNIT': '250',
  'UNIT_MULT': '',
  'NOTE': '10,12,395',
  'SOURCE': '2,3,343,487,3001',
  'LASTUPDATE': '25/05/2022',
  'STATUS': '3',
  'OBSERVATIONS': [{'TIME_PERIOD': '2020',
    'OBS_VALUE': '847206.00000000000000000000',
    'OBS_EXCEPTION': None,
    'OBS_STATUS': '3',
    'OBS_SOURCE': '',
    'OBS_NOTE': '',
    'COBER_GEO': '07000013'}]},
 {'INDICADOR': '3108001001',
  'FREQ': '7',
  'TOPIC': '15',
  'UNIT': '3',
  'UNIT_MULT': '',
  'NOTE': '174',
  'SOURCE': '1714,20118',
  'LASTUPDATE': '03/04/2018',
  'STATUS': '3',
  'OBSERVATIONS': [{'TIME_PERIOD': '2015',
    'OBS_VALUE': '8.19686288324147000000',
    'OBS_EXCEPTION': None,
    'OBS_STATUS': '3',
    'OBS_SOURCE': '',
    'OBS_NOTE': '',
    'COBER_GEO': '07000013'}]},
 {'INDICADOR': '6200240391',
  'FREQ': '3',
  'TOPIC': '15',
  'UNIT': '3',
  'UNIT_MULT': '',
  'NOTE': '',
  'SOURCE': '1695,2179,2773,2785',
  'LASTUPDATE': '20/06/2018',
  'STATUS': '3',
  'OBSERVATIONS': [{'TIME_PERIOD': '2017',
    'OBS_VALUE': '35.85238979520350000000',
    'OBS_EXCEPTION': None,
    'OBS_STATUS': '3',
    'OBS_SOURCE': '',
    'OBS_NOTE': '',
    'COBER_GEO': '07000013'}]},
 {'INDICADOR': '6207019010',
  'FREQ': '7',
  'TOPIC': '15',
  'UNIT': '3',
  'UNIT_MULT': '',
  'NOTE': '',
  'SOURCE': '1714,3001',
  'LASTUPDATE': '24/01/2021',
  'STATUS': '3',
  'OBSERVATIONS': [{'TIME_PERIOD': '2020',
    'OBS_VALUE': '91.57603497899320000000',
    'OBS_EXCEPTION': None,
    'OBS_STATUS': '3',
    'OBS_SOURCE': '',
    'OBS_NOTE': '',
    'COBER_GEO': '07000013'}]},
 {'INDICADOR': '1003000017',
  'FREQ': '7',
  'TOPIC': '56',
  'UNIT': '250',
  'UNIT_MULT': '',
  'NOTE': '10,12,395',
  'SOURCE': '2,3,343,487,3001',
  'LASTUPDATE': '25/05/2022',
  'STATUS': '3',
  'OBSERVATIONS': [{'TIME_PERIOD': '2020',
    'OBS_VALUE': '4543258.00000000000000000000',
    'OBS_EXCEPTION': None,
    'OBS_STATUS': '3',
    'OBS_SOURCE': '',
    'OBS_NOTE': '',
    'COBER_GEO': '07000015'}]},
 {'INDICADOR': '3108001001',
  'FREQ': '7',
  'TOPIC': '15',
  'UNIT': '3',
  'UNIT_MULT': '',
  'NOTE': '174',
  'SOURCE': '1714,20118',
  'LASTUPDATE': '03/04/2018',
  'STATUS': '3',
  'OBSERVATIONS': [{'TIME_PERIOD': '2015',
    'OBS_VALUE': '3.33707124315867000000',
    'OBS_EXCEPTION': None,
    'OBS_STATUS': '3',
    'OBS_SOURCE': '',
    'OBS_NOTE': '',
    'COBER_GEO': '07000015'}]},
 {'INDICADOR': '6200240391',
  'FREQ': '3',
  'TOPIC': '15',
  'UNIT': '3',
  'UNIT_MULT': '',
  'NOTE': '',
  'SOURCE': '1695,2179,2773,2785',
  'LASTUPDATE': '20/06/2018',
  'STATUS': '3',
  'OBSERVATIONS': [{'TIME_PERIOD': '2017',
    'OBS_VALUE': '27.50234650573750000000',
    'OBS_EXCEPTION': None,
    'OBS_STATUS': '3',
    'OBS_SOURCE': '',
    'OBS_NOTE': '',
    'COBER_GEO': '07000015'}]},
 {'INDICADOR': '6207019010',
  'FREQ': '7',
  'TOPIC': '15',
  'UNIT': '3',
  'UNIT_MULT': '',
  'NOTE': '',
  'SOURCE': '1714,3001',
  'LASTUPDATE': '24/01/2021',
  'STATUS': '3',
  'OBSERVATIONS': [{'TIME_PERIOD': '2020',
    'OBS_VALUE': '96.20621245097940000000',
    'OBS_EXCEPTION': None,
    'OBS_STATUS': '3',
    'OBS_SOURCE': '',
    'OBS_NOTE': '',
    'COBER_GEO': '07000015'}]},
 {'INDICADOR': '1003000017',
  'FREQ': '7',
  'TOPIC': '56',
  'UNIT': '250',
  'UNIT_MULT': '',
  'NOTE': '10,12,395',
  'SOURCE': '2,3,343,487,3001',
  'LASTUPDATE': '25/05/2022',
  'STATUS': '3',
  'OBSERVATIONS': [{'TIME_PERIOD': '2020',
    'OBS_VALUE': '333902.00000000000000000000',
    'OBS_EXCEPTION': None,
    'OBS_STATUS': '3',
    'OBS_SOURCE': '',
    'OBS_NOTE': '',
    'COBER_GEO': '07000029'}]},
 {'INDICADOR': '3108001001',
  'FREQ': '7',
  'TOPIC': '15',
  'UNIT': '3',
  'UNIT_MULT': '',
  'NOTE': '174',
  'SOURCE': '1714,20118',
  'LASTUPDATE': '03/04/2018',
  'STATUS': '3',
  'OBSERVATIONS': [{'TIME_PERIOD': '2015',
    'OBS_VALUE': '3.94859558387132000000',
    'OBS_EXCEPTION': None,
    'OBS_STATUS': '3',
    'OBS_SOURCE': '',
    'OBS_NOTE': '',
    'COBER_GEO': '07000029'}]},
 {'INDICADOR': '6200240391',
  'FREQ': '3',
  'TOPIC': '15',
  'UNIT': '3',
  'UNIT_MULT': '',
  'NOTE': '',
  'SOURCE': '1695,2179,2773,2785',
  'LASTUPDATE': '20/06/2018',
  'STATUS': '3',
  'OBSERVATIONS': [{'TIME_PERIOD': '2017',
    'OBS_VALUE': '28.68994572677550000000',
    'OBS_EXCEPTION': None,
    'OBS_STATUS': '3',
    'OBS_SOURCE': '',
    'OBS_NOTE': '',
    'COBER_GEO': '07000029'}]},
 {'INDICADOR': '6207019010',
  'FREQ': '7',
  'TOPIC': '15',
  'UNIT': '3',
  'UNIT_MULT': '',
  'NOTE': '',
  'SOURCE': '1714,3001',
  'LASTUPDATE': '24/01/2021',
  'STATUS': '3',
  'OBSERVATIONS': [{'TIME_PERIOD': '2020',
    'OBS_VALUE': '95.65868101413820000000',
    'OBS_EXCEPTION': None,
    'OBS_STATUS': '3',
    'OBS_SOURCE': '',
    'OBS_NOTE': '',
    'COBER_GEO': '07000029'}]},
 {'INDICADOR': '1003000017',
  'FREQ': '7',
  'TOPIC': '56',
  'UNIT': '250',
  'UNIT_MULT': '',
  'NOTE': '10,12,395',
  'SOURCE': '2,3,343,487,3001',
  'LASTUPDATE': '25/05/2022',
  'STATUS': '3',
  'OBSERVATIONS': [{'TIME_PERIOD': '2020',
    'OBS_VALUE': '1695462.00000000000000000000',
    'OBS_EXCEPTION': None,
    'OBS_STATUS': '3',
    'OBS_SOURCE': '',
    'OBS_NOTE': '',
    'COBER_GEO': '07000021'}]},
 {'INDICADOR': '3108001001',
  'FREQ': '7',
  'TOPIC': '15',
  'UNIT': '3',
  'UNIT_MULT': '',
  'NOTE': '174',
  'SOURCE': '1714,20118',
  'LASTUPDATE': '03/04/2018',
  'STATUS': '3',
  'OBSERVATIONS': [{'TIME_PERIOD': '2015',
    'OBS_VALUE': '8.31676746391996000000',
    'OBS_EXCEPTION': None,
    'OBS_STATUS': '3',
    'OBS_SOURCE': '',
    'OBS_NOTE': '',
    'COBER_GEO': '07000021'}]},
 {'INDICADOR': '6200240391',
  'FREQ': '3',
  'TOPIC': '15',
  'UNIT': '3',
  'UNIT_MULT': '',
  'NOTE': '',
  'SOURCE': '1695,2179,2773,2785',
  'LASTUPDATE': '20/06/2018',
  'STATUS': '3',
  'OBSERVATIONS': [{'TIME_PERIOD': '2017',
    'OBS_VALUE': '40.17156233764060000000',
    'OBS_EXCEPTION': None,
    'OBS_STATUS': '3',
    'OBS_SOURCE': '',
    'OBS_NOTE': '',
    'COBER_GEO': '07000021'}]},
 {'INDICADOR': '6207019010',
  'FREQ': '7',
  'TOPIC': '15',
  'UNIT': '3',
  'UNIT_MULT': '',
  'NOTE': '',
  'SOURCE': '1714,3001',
  'LASTUPDATE': '24/01/2021',
  'STATUS': '3',
  'OBSERVATIONS': [{'TIME_PERIOD': '2020',
    'OBS_VALUE': '91.03490218584570000000',
    'OBS_EXCEPTION': None,
    'OBS_STATUS': '3',
    'OBS_SOURCE': '',
    'OBS_NOTE': '',
    'COBER_GEO': '07000021'}]}]

DataFrame creation from information in data¶

In [5]:
df = pd.DataFrame(data)
df
Out[5]:
INDICADOR FREQ TOPIC UNIT UNIT_MULT NOTE SOURCE LASTUPDATE STATUS OBSERVATIONS
0 1003000017 7 56 250 10,12,395 2,3,343,487,3001 25/05/2022 3 [{'TIME_PERIOD': '2020', 'OBS_VALUE': '2746872...
1 3108001001 7 15 3 174 1714,20118 03/04/2018 3 [{'TIME_PERIOD': '2015', 'OBS_VALUE': '1.47506...
2 6200240391 3 15 3 1695,2179,2773,2785 20/06/2018 3 [{'TIME_PERIOD': '2017', 'OBS_VALUE': '20.6336...
3 6207019010 7 15 3 1714,3001 24/01/2021 3 [{'TIME_PERIOD': '2020', 'OBS_VALUE': '97.9171...
4 1003000017 7 56 250 10,12,395 2,3,343,487,3001 25/05/2022 3 [{'TIME_PERIOD': '2020', 'OBS_VALUE': '556409....
5 3108001001 7 15 3 174 1714,20118 03/04/2018 3 [{'TIME_PERIOD': '2015', 'OBS_VALUE': '4.95519...
6 6200240391 3 15 3 1695,2179,2773,2785 20/06/2018 3 [{'TIME_PERIOD': '2017', 'OBS_VALUE': '31.4066...
7 6207019010 7 15 3 1714,3001 24/01/2021 3 [{'TIME_PERIOD': '2020', 'OBS_VALUE': '94.4290...
8 1003000017 7 56 250 10,12,395 2,3,343,487,3001 25/05/2022 3 [{'TIME_PERIOD': '2020', 'OBS_VALUE': '1573803...
9 3108001001 7 15 3 174 1714,20118 03/04/2018 3 [{'TIME_PERIOD': '2015', 'OBS_VALUE': '6.34906...
10 6200240391 3 15 3 1695,2179,2773,2785 20/06/2018 3 [{'TIME_PERIOD': '2017', 'OBS_VALUE': '37.8911...
11 6207019010 7 15 3 1714,3001 24/01/2021 3 [{'TIME_PERIOD': '2020', 'OBS_VALUE': '93.1280...
12 1003000017 7 56 250 10,12,395 2,3,343,487,3001 25/05/2022 3 [{'TIME_PERIOD': '2020', 'OBS_VALUE': '661924....
13 3108001001 7 15 3 174 1714,20118 03/04/2018 3 [{'TIME_PERIOD': '2015', 'OBS_VALUE': '4.53571...
14 6200240391 3 15 3 1695,2179,2773,2785 20/06/2018 3 [{'TIME_PERIOD': '2017', 'OBS_VALUE': '29.8260...
15 6207019010 7 15 3 1714,3001 24/01/2021 3 [{'TIME_PERIOD': '2020', 'OBS_VALUE': '95.5073...
16 1003000017 7 56 250 10,12,395 2,3,343,487,3001 25/05/2022 3 [{'TIME_PERIOD': '2020', 'OBS_VALUE': '847206....
17 3108001001 7 15 3 174 1714,20118 03/04/2018 3 [{'TIME_PERIOD': '2015', 'OBS_VALUE': '8.19686...
18 6200240391 3 15 3 1695,2179,2773,2785 20/06/2018 3 [{'TIME_PERIOD': '2017', 'OBS_VALUE': '35.8523...
19 6207019010 7 15 3 1714,3001 24/01/2021 3 [{'TIME_PERIOD': '2020', 'OBS_VALUE': '91.5760...
20 1003000017 7 56 250 10,12,395 2,3,343,487,3001 25/05/2022 3 [{'TIME_PERIOD': '2020', 'OBS_VALUE': '4543258...
21 3108001001 7 15 3 174 1714,20118 03/04/2018 3 [{'TIME_PERIOD': '2015', 'OBS_VALUE': '3.33707...
22 6200240391 3 15 3 1695,2179,2773,2785 20/06/2018 3 [{'TIME_PERIOD': '2017', 'OBS_VALUE': '27.5023...
23 6207019010 7 15 3 1714,3001 24/01/2021 3 [{'TIME_PERIOD': '2020', 'OBS_VALUE': '96.2062...
24 1003000017 7 56 250 10,12,395 2,3,343,487,3001 25/05/2022 3 [{'TIME_PERIOD': '2020', 'OBS_VALUE': '333902....
25 3108001001 7 15 3 174 1714,20118 03/04/2018 3 [{'TIME_PERIOD': '2015', 'OBS_VALUE': '3.94859...
26 6200240391 3 15 3 1695,2179,2773,2785 20/06/2018 3 [{'TIME_PERIOD': '2017', 'OBS_VALUE': '28.6899...
27 6207019010 7 15 3 1714,3001 24/01/2021 3 [{'TIME_PERIOD': '2020', 'OBS_VALUE': '95.6586...
28 1003000017 7 56 250 10,12,395 2,3,343,487,3001 25/05/2022 3 [{'TIME_PERIOD': '2020', 'OBS_VALUE': '1695462...
29 3108001001 7 15 3 174 1714,20118 03/04/2018 3 [{'TIME_PERIOD': '2015', 'OBS_VALUE': '8.31676...
30 6200240391 3 15 3 1695,2179,2773,2785 20/06/2018 3 [{'TIME_PERIOD': '2017', 'OBS_VALUE': '40.1715...
31 6207019010 7 15 3 1714,3001 24/01/2021 3 [{'TIME_PERIOD': '2020', 'OBS_VALUE': '91.0349...

Accesing 'OBS_VALUE' for each indicator¶

In [6]:
data[4]['OBSERVATIONS'][0]['OBS_VALUE']
Out[6]:
'556409.00000000000000000000'
In [7]:
values = []
for i in range(len(data)):
    values.append(data[i]['OBSERVATIONS'][0]['OBS_VALUE'])
values
Out[7]:
['2746872.00000000000000000000',
 '1.47506549456320000000',
 '20.63360453622430000000',
 '97.91713808749820000000',
 '556409.00000000000000000000',
 '4.95519569719918000000',
 '31.40664859428390000000',
 '94.42901209576030000000',
 '1573803.00000000000000000000',
 '6.34906629963758000000',
 '37.89118111610520000000',
 '93.12805959642950000000',
 '661924.00000000000000000000',
 '4.53571775762054000000',
 '29.82601235505410000000',
 '95.50736688548500000000',
 '847206.00000000000000000000',
 '8.19686288324147000000',
 '35.85238979520350000000',
 '91.57603497899320000000',
 '4543258.00000000000000000000',
 '3.33707124315867000000',
 '27.50234650573750000000',
 '96.20621245097940000000',
 '333902.00000000000000000000',
 '3.94859558387132000000',
 '28.68994572677550000000',
 '95.65868101413820000000',
 '1695462.00000000000000000000',
 '8.31676746391996000000',
 '40.17156233764060000000',
 '91.03490218584570000000']

Delete 'OBSERVATIONS' column in dataframe¶

In [8]:
df.drop('OBSERVATIONS', axis=1, inplace=True)
df
Out[8]:
INDICADOR FREQ TOPIC UNIT UNIT_MULT NOTE SOURCE LASTUPDATE STATUS
0 1003000017 7 56 250 10,12,395 2,3,343,487,3001 25/05/2022 3
1 3108001001 7 15 3 174 1714,20118 03/04/2018 3
2 6200240391 3 15 3 1695,2179,2773,2785 20/06/2018 3
3 6207019010 7 15 3 1714,3001 24/01/2021 3
4 1003000017 7 56 250 10,12,395 2,3,343,487,3001 25/05/2022 3
5 3108001001 7 15 3 174 1714,20118 03/04/2018 3
6 6200240391 3 15 3 1695,2179,2773,2785 20/06/2018 3
7 6207019010 7 15 3 1714,3001 24/01/2021 3
8 1003000017 7 56 250 10,12,395 2,3,343,487,3001 25/05/2022 3
9 3108001001 7 15 3 174 1714,20118 03/04/2018 3
10 6200240391 3 15 3 1695,2179,2773,2785 20/06/2018 3
11 6207019010 7 15 3 1714,3001 24/01/2021 3
12 1003000017 7 56 250 10,12,395 2,3,343,487,3001 25/05/2022 3
13 3108001001 7 15 3 174 1714,20118 03/04/2018 3
14 6200240391 3 15 3 1695,2179,2773,2785 20/06/2018 3
15 6207019010 7 15 3 1714,3001 24/01/2021 3
16 1003000017 7 56 250 10,12,395 2,3,343,487,3001 25/05/2022 3
17 3108001001 7 15 3 174 1714,20118 03/04/2018 3
18 6200240391 3 15 3 1695,2179,2773,2785 20/06/2018 3
19 6207019010 7 15 3 1714,3001 24/01/2021 3
20 1003000017 7 56 250 10,12,395 2,3,343,487,3001 25/05/2022 3
21 3108001001 7 15 3 174 1714,20118 03/04/2018 3
22 6200240391 3 15 3 1695,2179,2773,2785 20/06/2018 3
23 6207019010 7 15 3 1714,3001 24/01/2021 3
24 1003000017 7 56 250 10,12,395 2,3,343,487,3001 25/05/2022 3
25 3108001001 7 15 3 174 1714,20118 03/04/2018 3
26 6200240391 3 15 3 1695,2179,2773,2785 20/06/2018 3
27 6207019010 7 15 3 1714,3001 24/01/2021 3
28 1003000017 7 56 250 10,12,395 2,3,343,487,3001 25/05/2022 3
29 3108001001 7 15 3 174 1714,20118 03/04/2018 3
30 6200240391 3 15 3 1695,2179,2773,2785 20/06/2018 3
31 6207019010 7 15 3 1714,3001 24/01/2021 3

Creation of new column called 'VALUE' with 'OBS_VALUE'¶

In [9]:
df['VALUE'] = values
df
Out[9]:
INDICADOR FREQ TOPIC UNIT UNIT_MULT NOTE SOURCE LASTUPDATE STATUS VALUE
0 1003000017 7 56 250 10,12,395 2,3,343,487,3001 25/05/2022 3 2746872.00000000000000000000
1 3108001001 7 15 3 174 1714,20118 03/04/2018 3 1.47506549456320000000
2 6200240391 3 15 3 1695,2179,2773,2785 20/06/2018 3 20.63360453622430000000
3 6207019010 7 15 3 1714,3001 24/01/2021 3 97.91713808749820000000
4 1003000017 7 56 250 10,12,395 2,3,343,487,3001 25/05/2022 3 556409.00000000000000000000
5 3108001001 7 15 3 174 1714,20118 03/04/2018 3 4.95519569719918000000
6 6200240391 3 15 3 1695,2179,2773,2785 20/06/2018 3 31.40664859428390000000
7 6207019010 7 15 3 1714,3001 24/01/2021 3 94.42901209576030000000
8 1003000017 7 56 250 10,12,395 2,3,343,487,3001 25/05/2022 3 1573803.00000000000000000000
9 3108001001 7 15 3 174 1714,20118 03/04/2018 3 6.34906629963758000000
10 6200240391 3 15 3 1695,2179,2773,2785 20/06/2018 3 37.89118111610520000000
11 6207019010 7 15 3 1714,3001 24/01/2021 3 93.12805959642950000000
12 1003000017 7 56 250 10,12,395 2,3,343,487,3001 25/05/2022 3 661924.00000000000000000000
13 3108001001 7 15 3 174 1714,20118 03/04/2018 3 4.53571775762054000000
14 6200240391 3 15 3 1695,2179,2773,2785 20/06/2018 3 29.82601235505410000000
15 6207019010 7 15 3 1714,3001 24/01/2021 3 95.50736688548500000000
16 1003000017 7 56 250 10,12,395 2,3,343,487,3001 25/05/2022 3 847206.00000000000000000000
17 3108001001 7 15 3 174 1714,20118 03/04/2018 3 8.19686288324147000000
18 6200240391 3 15 3 1695,2179,2773,2785 20/06/2018 3 35.85238979520350000000
19 6207019010 7 15 3 1714,3001 24/01/2021 3 91.57603497899320000000
20 1003000017 7 56 250 10,12,395 2,3,343,487,3001 25/05/2022 3 4543258.00000000000000000000
21 3108001001 7 15 3 174 1714,20118 03/04/2018 3 3.33707124315867000000
22 6200240391 3 15 3 1695,2179,2773,2785 20/06/2018 3 27.50234650573750000000
23 6207019010 7 15 3 1714,3001 24/01/2021 3 96.20621245097940000000
24 1003000017 7 56 250 10,12,395 2,3,343,487,3001 25/05/2022 3 333902.00000000000000000000
25 3108001001 7 15 3 174 1714,20118 03/04/2018 3 3.94859558387132000000
26 6200240391 3 15 3 1695,2179,2773,2785 20/06/2018 3 28.68994572677550000000
27 6207019010 7 15 3 1714,3001 24/01/2021 3 95.65868101413820000000
28 1003000017 7 56 250 10,12,395 2,3,343,487,3001 25/05/2022 3 1695462.00000000000000000000
29 3108001001 7 15 3 174 1714,20118 03/04/2018 3 8.31676746391996000000
30 6200240391 3 15 3 1695,2179,2773,2785 20/06/2018 3 40.17156233764060000000
31 6207019010 7 15 3 1714,3001 24/01/2021 3 91.03490218584570000000

Creation of new list with city values¶

In [10]:
city_names = []
for i in CITIES_NAMES:
    city_names.append(list(itertools.repeat(i, 4)))
    
city_names = list(itertools.chain.from_iterable(city_names))
city_names
Out[10]:
['CDMX',
 'CDMX',
 'CDMX',
 'CDMX',
 'MORELOS',
 'MORELOS',
 'MORELOS',
 'MORELOS',
 'GUANAJUATO',
 'GUANAJUATO',
 'GUANAJUATO',
 'GUANAJUATO',
 'QUERETARO',
 'QUERETARO',
 'QUERETARO',
 'QUERETARO',
 'HIDALGO',
 'HIDALGO',
 'HIDALGO',
 'HIDALGO',
 'EDOMEX',
 'EDOMEX',
 'EDOMEX',
 'EDOMEX',
 'TLAXCALA',
 'TLAXCALA',
 'TLAXCALA',
 'TLAXCALA',
 'PUEBLA',
 'PUEBLA',
 'PUEBLA',
 'PUEBLA']

Add new column called 'CITY' with city values¶

In [15]:
df['CITY'] = city_names
df
Out[15]:
INDICADOR FREQ TOPIC UNIT UNIT_MULT NOTE SOURCE LASTUPDATE STATUS VALUE INICATORS CITY
0 1003000017 7 56 250 10,12,395 2,3,343,487,3001 25/05/2022 3 2746872.00 Viviendas particulares habitadas que disponen ... CDMX
1 3108001001 7 15 3 174 1714,20118 03/04/2018 3 1.48 Porcentaje de analfabetas total CDMX
2 6200240391 3 15 3 1695,2179,2773,2785 20/06/2018 3 20.63 Porcentaje de la población de 15 años y más co... CDMX
3 6207019010 7 15 3 1714,3001 24/01/2021 3 97.92 Porcentaje de población de 25 años y más alfabeta CDMX
4 1003000017 7 56 250 10,12,395 2,3,343,487,3001 25/05/2022 3 556409.00 Viviendas particulares habitadas que disponen ... MORELOS
5 3108001001 7 15 3 174 1714,20118 03/04/2018 3 4.96 Porcentaje de analfabetas total MORELOS
6 6200240391 3 15 3 1695,2179,2773,2785 20/06/2018 3 31.41 Porcentaje de la población de 15 años y más co... MORELOS
7 6207019010 7 15 3 1714,3001 24/01/2021 3 94.43 Porcentaje de población de 25 años y más alfabeta MORELOS
8 1003000017 7 56 250 10,12,395 2,3,343,487,3001 25/05/2022 3 1573803.00 Viviendas particulares habitadas que disponen ... GUANAJUATO
9 3108001001 7 15 3 174 1714,20118 03/04/2018 3 6.35 Porcentaje de analfabetas total GUANAJUATO
10 6200240391 3 15 3 1695,2179,2773,2785 20/06/2018 3 37.89 Porcentaje de la población de 15 años y más co... GUANAJUATO
11 6207019010 7 15 3 1714,3001 24/01/2021 3 93.13 Porcentaje de población de 25 años y más alfabeta GUANAJUATO
12 1003000017 7 56 250 10,12,395 2,3,343,487,3001 25/05/2022 3 661924.00 Viviendas particulares habitadas que disponen ... QUERETARO
13 3108001001 7 15 3 174 1714,20118 03/04/2018 3 4.54 Porcentaje de analfabetas total QUERETARO
14 6200240391 3 15 3 1695,2179,2773,2785 20/06/2018 3 29.83 Porcentaje de la población de 15 años y más co... QUERETARO
15 6207019010 7 15 3 1714,3001 24/01/2021 3 95.51 Porcentaje de población de 25 años y más alfabeta QUERETARO
16 1003000017 7 56 250 10,12,395 2,3,343,487,3001 25/05/2022 3 847206.00 Viviendas particulares habitadas que disponen ... HIDALGO
17 3108001001 7 15 3 174 1714,20118 03/04/2018 3 8.20 Porcentaje de analfabetas total HIDALGO
18 6200240391 3 15 3 1695,2179,2773,2785 20/06/2018 3 35.85 Porcentaje de la población de 15 años y más co... HIDALGO
19 6207019010 7 15 3 1714,3001 24/01/2021 3 91.58 Porcentaje de población de 25 años y más alfabeta HIDALGO
20 1003000017 7 56 250 10,12,395 2,3,343,487,3001 25/05/2022 3 4543258.00 Viviendas particulares habitadas que disponen ... EDOMEX
21 3108001001 7 15 3 174 1714,20118 03/04/2018 3 3.34 Porcentaje de analfabetas total EDOMEX
22 6200240391 3 15 3 1695,2179,2773,2785 20/06/2018 3 27.50 Porcentaje de la población de 15 años y más co... EDOMEX
23 6207019010 7 15 3 1714,3001 24/01/2021 3 96.21 Porcentaje de población de 25 años y más alfabeta EDOMEX
24 1003000017 7 56 250 10,12,395 2,3,343,487,3001 25/05/2022 3 333902.00 Viviendas particulares habitadas que disponen ... TLAXCALA
25 3108001001 7 15 3 174 1714,20118 03/04/2018 3 3.95 Porcentaje de analfabetas total TLAXCALA
26 6200240391 3 15 3 1695,2179,2773,2785 20/06/2018 3 28.69 Porcentaje de la población de 15 años y más co... TLAXCALA
27 6207019010 7 15 3 1714,3001 24/01/2021 3 95.66 Porcentaje de población de 25 años y más alfabeta TLAXCALA
28 1003000017 7 56 250 10,12,395 2,3,343,487,3001 25/05/2022 3 1695462.00 Viviendas particulares habitadas que disponen ... PUEBLA
29 3108001001 7 15 3 174 1714,20118 03/04/2018 3 8.32 Porcentaje de analfabetas total PUEBLA
30 6200240391 3 15 3 1695,2179,2773,2785 20/06/2018 3 40.17 Porcentaje de la población de 15 años y más co... PUEBLA
31 6207019010 7 15 3 1714,3001 24/01/2021 3 91.03 Porcentaje de población de 25 años y más alfabeta PUEBLA

Add column with indicators values¶

In [16]:
count = len(CITIES_NAMES)
indicators_values = INDICATORS * count
indicators_values
Out[16]:
['Viviendas particulares habitadas que disponen de energía eléctrica',
 'Porcentaje de analfabetas total',
 'Porcentaje de la población de 15 años y más con rezago educativo',
 'Porcentaje de población de 25 años y más alfabeta',
 'Viviendas particulares habitadas que disponen de energía eléctrica',
 'Porcentaje de analfabetas total',
 'Porcentaje de la población de 15 años y más con rezago educativo',
 'Porcentaje de población de 25 años y más alfabeta',
 'Viviendas particulares habitadas que disponen de energía eléctrica',
 'Porcentaje de analfabetas total',
 'Porcentaje de la población de 15 años y más con rezago educativo',
 'Porcentaje de población de 25 años y más alfabeta',
 'Viviendas particulares habitadas que disponen de energía eléctrica',
 'Porcentaje de analfabetas total',
 'Porcentaje de la población de 15 años y más con rezago educativo',
 'Porcentaje de población de 25 años y más alfabeta',
 'Viviendas particulares habitadas que disponen de energía eléctrica',
 'Porcentaje de analfabetas total',
 'Porcentaje de la población de 15 años y más con rezago educativo',
 'Porcentaje de población de 25 años y más alfabeta',
 'Viviendas particulares habitadas que disponen de energía eléctrica',
 'Porcentaje de analfabetas total',
 'Porcentaje de la población de 15 años y más con rezago educativo',
 'Porcentaje de población de 25 años y más alfabeta',
 'Viviendas particulares habitadas que disponen de energía eléctrica',
 'Porcentaje de analfabetas total',
 'Porcentaje de la población de 15 años y más con rezago educativo',
 'Porcentaje de población de 25 años y más alfabeta',
 'Viviendas particulares habitadas que disponen de energía eléctrica',
 'Porcentaje de analfabetas total',
 'Porcentaje de la población de 15 años y más con rezago educativo',
 'Porcentaje de población de 25 años y más alfabeta']
In [17]:
df['INICATORS'] = indicators_values
df
Out[17]:
INDICADOR FREQ TOPIC UNIT UNIT_MULT NOTE SOURCE LASTUPDATE STATUS VALUE INICATORS CITY
0 1003000017 7 56 250 10,12,395 2,3,343,487,3001 25/05/2022 3 2746872.00 Viviendas particulares habitadas que disponen ... CDMX
1 3108001001 7 15 3 174 1714,20118 03/04/2018 3 1.48 Porcentaje de analfabetas total CDMX
2 6200240391 3 15 3 1695,2179,2773,2785 20/06/2018 3 20.63 Porcentaje de la población de 15 años y más co... CDMX
3 6207019010 7 15 3 1714,3001 24/01/2021 3 97.92 Porcentaje de población de 25 años y más alfabeta CDMX
4 1003000017 7 56 250 10,12,395 2,3,343,487,3001 25/05/2022 3 556409.00 Viviendas particulares habitadas que disponen ... MORELOS
5 3108001001 7 15 3 174 1714,20118 03/04/2018 3 4.96 Porcentaje de analfabetas total MORELOS
6 6200240391 3 15 3 1695,2179,2773,2785 20/06/2018 3 31.41 Porcentaje de la población de 15 años y más co... MORELOS
7 6207019010 7 15 3 1714,3001 24/01/2021 3 94.43 Porcentaje de población de 25 años y más alfabeta MORELOS
8 1003000017 7 56 250 10,12,395 2,3,343,487,3001 25/05/2022 3 1573803.00 Viviendas particulares habitadas que disponen ... GUANAJUATO
9 3108001001 7 15 3 174 1714,20118 03/04/2018 3 6.35 Porcentaje de analfabetas total GUANAJUATO
10 6200240391 3 15 3 1695,2179,2773,2785 20/06/2018 3 37.89 Porcentaje de la población de 15 años y más co... GUANAJUATO
11 6207019010 7 15 3 1714,3001 24/01/2021 3 93.13 Porcentaje de población de 25 años y más alfabeta GUANAJUATO
12 1003000017 7 56 250 10,12,395 2,3,343,487,3001 25/05/2022 3 661924.00 Viviendas particulares habitadas que disponen ... QUERETARO
13 3108001001 7 15 3 174 1714,20118 03/04/2018 3 4.54 Porcentaje de analfabetas total QUERETARO
14 6200240391 3 15 3 1695,2179,2773,2785 20/06/2018 3 29.83 Porcentaje de la población de 15 años y más co... QUERETARO
15 6207019010 7 15 3 1714,3001 24/01/2021 3 95.51 Porcentaje de población de 25 años y más alfabeta QUERETARO
16 1003000017 7 56 250 10,12,395 2,3,343,487,3001 25/05/2022 3 847206.00 Viviendas particulares habitadas que disponen ... HIDALGO
17 3108001001 7 15 3 174 1714,20118 03/04/2018 3 8.20 Porcentaje de analfabetas total HIDALGO
18 6200240391 3 15 3 1695,2179,2773,2785 20/06/2018 3 35.85 Porcentaje de la población de 15 años y más co... HIDALGO
19 6207019010 7 15 3 1714,3001 24/01/2021 3 91.58 Porcentaje de población de 25 años y más alfabeta HIDALGO
20 1003000017 7 56 250 10,12,395 2,3,343,487,3001 25/05/2022 3 4543258.00 Viviendas particulares habitadas que disponen ... EDOMEX
21 3108001001 7 15 3 174 1714,20118 03/04/2018 3 3.34 Porcentaje de analfabetas total EDOMEX
22 6200240391 3 15 3 1695,2179,2773,2785 20/06/2018 3 27.50 Porcentaje de la población de 15 años y más co... EDOMEX
23 6207019010 7 15 3 1714,3001 24/01/2021 3 96.21 Porcentaje de población de 25 años y más alfabeta EDOMEX
24 1003000017 7 56 250 10,12,395 2,3,343,487,3001 25/05/2022 3 333902.00 Viviendas particulares habitadas que disponen ... TLAXCALA
25 3108001001 7 15 3 174 1714,20118 03/04/2018 3 3.95 Porcentaje de analfabetas total TLAXCALA
26 6200240391 3 15 3 1695,2179,2773,2785 20/06/2018 3 28.69 Porcentaje de la población de 15 años y más co... TLAXCALA
27 6207019010 7 15 3 1714,3001 24/01/2021 3 95.66 Porcentaje de población de 25 años y más alfabeta TLAXCALA
28 1003000017 7 56 250 10,12,395 2,3,343,487,3001 25/05/2022 3 1695462.00 Viviendas particulares habitadas que disponen ... PUEBLA
29 3108001001 7 15 3 174 1714,20118 03/04/2018 3 8.32 Porcentaje de analfabetas total PUEBLA
30 6200240391 3 15 3 1695,2179,2773,2785 20/06/2018 3 40.17 Porcentaje de la población de 15 años y más co... PUEBLA
31 6207019010 7 15 3 1714,3001 24/01/2021 3 91.03 Porcentaje de población de 25 años y más alfabeta PUEBLA

Rounding values in VALUE column¶

In [18]:
df['VALUE'] = pd.to_numeric(df['VALUE'])
df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 32 entries, 0 to 31
Data columns (total 12 columns):
 #   Column      Non-Null Count  Dtype  
---  ------      --------------  -----  
 0   INDICADOR   32 non-null     object 
 1   FREQ        32 non-null     object 
 2   TOPIC       32 non-null     object 
 3   UNIT        32 non-null     object 
 4   UNIT_MULT   32 non-null     object 
 5   NOTE        32 non-null     object 
 6   SOURCE      32 non-null     object 
 7   LASTUPDATE  32 non-null     object 
 8   STATUS      32 non-null     object 
 9   VALUE       32 non-null     float64
 10  INICATORS   32 non-null     object 
 11  CITY        32 non-null     object 
dtypes: float64(1), object(11)
memory usage: 3.1+ KB
In [19]:
df['VALUE'] = round(df['VALUE'], 2)
df
Out[19]:
INDICADOR FREQ TOPIC UNIT UNIT_MULT NOTE SOURCE LASTUPDATE STATUS VALUE INICATORS CITY
0 1003000017 7 56 250 10,12,395 2,3,343,487,3001 25/05/2022 3 2746872.00 Viviendas particulares habitadas que disponen ... CDMX
1 3108001001 7 15 3 174 1714,20118 03/04/2018 3 1.48 Porcentaje de analfabetas total CDMX
2 6200240391 3 15 3 1695,2179,2773,2785 20/06/2018 3 20.63 Porcentaje de la población de 15 años y más co... CDMX
3 6207019010 7 15 3 1714,3001 24/01/2021 3 97.92 Porcentaje de población de 25 años y más alfabeta CDMX
4 1003000017 7 56 250 10,12,395 2,3,343,487,3001 25/05/2022 3 556409.00 Viviendas particulares habitadas que disponen ... MORELOS
5 3108001001 7 15 3 174 1714,20118 03/04/2018 3 4.96 Porcentaje de analfabetas total MORELOS
6 6200240391 3 15 3 1695,2179,2773,2785 20/06/2018 3 31.41 Porcentaje de la población de 15 años y más co... MORELOS
7 6207019010 7 15 3 1714,3001 24/01/2021 3 94.43 Porcentaje de población de 25 años y más alfabeta MORELOS
8 1003000017 7 56 250 10,12,395 2,3,343,487,3001 25/05/2022 3 1573803.00 Viviendas particulares habitadas que disponen ... GUANAJUATO
9 3108001001 7 15 3 174 1714,20118 03/04/2018 3 6.35 Porcentaje de analfabetas total GUANAJUATO
10 6200240391 3 15 3 1695,2179,2773,2785 20/06/2018 3 37.89 Porcentaje de la población de 15 años y más co... GUANAJUATO
11 6207019010 7 15 3 1714,3001 24/01/2021 3 93.13 Porcentaje de población de 25 años y más alfabeta GUANAJUATO
12 1003000017 7 56 250 10,12,395 2,3,343,487,3001 25/05/2022 3 661924.00 Viviendas particulares habitadas que disponen ... QUERETARO
13 3108001001 7 15 3 174 1714,20118 03/04/2018 3 4.54 Porcentaje de analfabetas total QUERETARO
14 6200240391 3 15 3 1695,2179,2773,2785 20/06/2018 3 29.83 Porcentaje de la población de 15 años y más co... QUERETARO
15 6207019010 7 15 3 1714,3001 24/01/2021 3 95.51 Porcentaje de población de 25 años y más alfabeta QUERETARO
16 1003000017 7 56 250 10,12,395 2,3,343,487,3001 25/05/2022 3 847206.00 Viviendas particulares habitadas que disponen ... HIDALGO
17 3108001001 7 15 3 174 1714,20118 03/04/2018 3 8.20 Porcentaje de analfabetas total HIDALGO
18 6200240391 3 15 3 1695,2179,2773,2785 20/06/2018 3 35.85 Porcentaje de la población de 15 años y más co... HIDALGO
19 6207019010 7 15 3 1714,3001 24/01/2021 3 91.58 Porcentaje de población de 25 años y más alfabeta HIDALGO
20 1003000017 7 56 250 10,12,395 2,3,343,487,3001 25/05/2022 3 4543258.00 Viviendas particulares habitadas que disponen ... EDOMEX
21 3108001001 7 15 3 174 1714,20118 03/04/2018 3 3.34 Porcentaje de analfabetas total EDOMEX
22 6200240391 3 15 3 1695,2179,2773,2785 20/06/2018 3 27.50 Porcentaje de la población de 15 años y más co... EDOMEX
23 6207019010 7 15 3 1714,3001 24/01/2021 3 96.21 Porcentaje de población de 25 años y más alfabeta EDOMEX
24 1003000017 7 56 250 10,12,395 2,3,343,487,3001 25/05/2022 3 333902.00 Viviendas particulares habitadas que disponen ... TLAXCALA
25 3108001001 7 15 3 174 1714,20118 03/04/2018 3 3.95 Porcentaje de analfabetas total TLAXCALA
26 6200240391 3 15 3 1695,2179,2773,2785 20/06/2018 3 28.69 Porcentaje de la población de 15 años y más co... TLAXCALA
27 6207019010 7 15 3 1714,3001 24/01/2021 3 95.66 Porcentaje de población de 25 años y más alfabeta TLAXCALA
28 1003000017 7 56 250 10,12,395 2,3,343,487,3001 25/05/2022 3 1695462.00 Viviendas particulares habitadas que disponen ... PUEBLA
29 3108001001 7 15 3 174 1714,20118 03/04/2018 3 8.32 Porcentaje de analfabetas total PUEBLA
30 6200240391 3 15 3 1695,2179,2773,2785 20/06/2018 3 40.17 Porcentaje de la población de 15 años y más co... PUEBLA
31 6207019010 7 15 3 1714,3001 24/01/2021 3 91.03 Porcentaje de población de 25 años y más alfabeta PUEBLA
In [20]:
df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 32 entries, 0 to 31
Data columns (total 12 columns):
 #   Column      Non-Null Count  Dtype  
---  ------      --------------  -----  
 0   INDICADOR   32 non-null     object 
 1   FREQ        32 non-null     object 
 2   TOPIC       32 non-null     object 
 3   UNIT        32 non-null     object 
 4   UNIT_MULT   32 non-null     object 
 5   NOTE        32 non-null     object 
 6   SOURCE      32 non-null     object 
 7   LASTUPDATE  32 non-null     object 
 8   STATUS      32 non-null     object 
 9   VALUE       32 non-null     float64
 10  INICATORS   32 non-null     object 
 11  CITY        32 non-null     object 
dtypes: float64(1), object(11)
memory usage: 3.1+ KB
In [24]:
df_indicadores = pd.DataFrame(INDICATORS, columns=['VALUES'])
df_ciudades = pd.DataFrame(CITIES_NAMES, columns=['VALUES'])

Saving data into postgreSQL¶

In [22]:
df_electric_service = df[ df['INICATORS'] == 'Viviendas particulares habitadas que disponen de energía eléctrica']
df_analfabetas = df[ df['INICATORS'] == 'Porcentaje de analfabetas total']
df_15_rezago = df[ df['INICATORS'] == 'Porcentaje de la población de 15 años y más con rezago educativo']
df_25_alfabeta = df[ df['INICATORS'] == 'Porcentaje de población de 25 años y más alfabeta']
In [25]:
conn_string = 'postgresql://xxx:xxx@Localhost:xxx/xxx'
db = create_engine(conn_string)
conn = db.connect()

df_electric_service.to_sql('electric_service', con=conn, if_exists='replace', index=True)
df_analfabetas.to_sql('analfabetas', con=conn, if_exists='replace', index=True)
df_15_rezago.to_sql('rezago15', con=conn, if_exists='replace', index=True)
df_25_alfabeta.to_sql('alfabeta25', con=conn, if_exists='replace', index=True)
df_indicadores.to_sql('indicadores', con=conn, if_exists='replace', index=True)
df_ciudades.to_sql('ciudades', con=conn, if_exists='replace', index=True)

conn = psycopg2.connect(conn_string)
conn.autocommit = True
cursor = conn.cursor()
  
sql1 = '''select * from electric_service;'''
cursor.execute(sql1)
for i in cursor.fetchall():
    print(i)
  
# conn.commit()
conn.close()
(0, '1003000017', '7', '56', '250', '', '10,12,395', '2,3,343,487,3001', '25/05/2022', '3', 2746872.0, 'Viviendas particulares habitadas que disponen de energía eléctrica', 'CDMX')
(4, '1003000017', '7', '56', '250', '', '10,12,395', '2,3,343,487,3001', '25/05/2022', '3', 556409.0, 'Viviendas particulares habitadas que disponen de energía eléctrica', 'MORELOS')
(8, '1003000017', '7', '56', '250', '', '10,12,395', '2,3,343,487,3001', '25/05/2022', '3', 1573803.0, 'Viviendas particulares habitadas que disponen de energía eléctrica', 'GUANAJUATO')
(12, '1003000017', '7', '56', '250', '', '10,12,395', '2,3,343,487,3001', '25/05/2022', '3', 661924.0, 'Viviendas particulares habitadas que disponen de energía eléctrica', 'QUERETARO')
(16, '1003000017', '7', '56', '250', '', '10,12,395', '2,3,343,487,3001', '25/05/2022', '3', 847206.0, 'Viviendas particulares habitadas que disponen de energía eléctrica', 'HIDALGO')
(20, '1003000017', '7', '56', '250', '', '10,12,395', '2,3,343,487,3001', '25/05/2022', '3', 4543258.0, 'Viviendas particulares habitadas que disponen de energía eléctrica', 'EDOMEX')
(24, '1003000017', '7', '56', '250', '', '10,12,395', '2,3,343,487,3001', '25/05/2022', '3', 333902.0, 'Viviendas particulares habitadas que disponen de energía eléctrica', 'TLAXCALA')
(28, '1003000017', '7', '56', '250', '', '10,12,395', '2,3,343,487,3001', '25/05/2022', '3', 1695462.0, 'Viviendas particulares habitadas que disponen de energía eléctrica', 'PUEBLA')
In [ ]: