{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "fb4464cd-9572-4f69-87a0-ea432c2f6a0e",
   "metadata": {
    "tags": []
   },
   "source": [
    "Importación de archivos JSON --- 8:25 min\n",
    "===\n",
    "\n",
    "* 8:25 min | Última modificación: Octubre 13, 2021 | [YouTube](https://youtu.be/qWftbEDT0bY)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "37127794-4f21-41e1-b055-00cbba1fb3f9",
   "metadata": {},
   "outputs": [],
   "source": [
    "#\n",
    "# Carga de la librería\n",
    "# ===============================================\n",
    "#\n",
    "import json"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e7176fbe-f327-4ecc-aedb-57ce8ed937a9",
   "metadata": {},
   "source": [
    "## Introducción a JSON"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "f4eef0f2-cdc1-4baf-b0f9-ac03a0ae69c1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'[1, 1.0, \"hola\", true, false, null]'"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#\n",
    "# Conversion a JSON de una lista\n",
    "# ===============================================\n",
    "#\n",
    "some_list = [1, 1.0, \"hola\", True, False, None]\n",
    "json.dumps(some_list)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "52a7dccf-2a18-4f11-a8eb-554c64ce2e48",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'[1, \"hola\"]'"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#\n",
    "# Conversion a JSON de una tupla\n",
    "# ===============================================\n",
    "#\n",
    "some_tuple = (1, \"hola\")\n",
    "json.dumps(some_tuple)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "b0f2e77f-d201-4da9-9a04-64926cfb29f5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'{\"key_0\": 0, \"key_1\": 1, \"key_2\": 2, \"key_3\": 3}'"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#\n",
    "# Conversion a JSON de un diccionario\n",
    "# ===============================================\n",
    "#\n",
    "some_dict = {\n",
    "    \"key_0\": 0,\n",
    "    \"key_1\": 1,\n",
    "    \"key_2\": 2,\n",
    "    \"key_3\": 3,\n",
    "}\n",
    "\n",
    "json.dumps(some_dict)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "576f195b-885b-4696-b143-16c6bbd8f044",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'[{\"Name\": \"Jameson R. Boyle\", \"Phone\": \"1-507-132-4340\"}, {\"Name\": \"Idona J. Singleton\", \"Phone\": \"1-662-859-5562\"}, {\"Name\": \"Ryder K. Maldonado\", \"Phone\": \"1-921-715-5315\"}]'"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#\n",
    "# Conversion a JSON de una estructura compleja\n",
    "# ===============================================\n",
    "#\n",
    "some_data = [\n",
    "    {\"Name\": \"Jameson R. Boyle\", \"Phone\": \"1-507-132-4340\" },\n",
    "    {\"Name\": \"Idona J. Singleton\", \"Phone\": \"1-662-859-5562\"},\n",
    "    {\"Name\": \"Ryder K. Maldonado\", \"Phone\": \"1-921-715-5315\"},\n",
    "]\n",
    "\n",
    "json.dumps(some_data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "9a1ad79e-9e35-4796-9f5e-9bb57e650403",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "('[{\"Name\": \"Jameson R. Boyle\", \"Phone\": \"1-507-132-4340\"}, {\"Name\": \"Idona J. '\n",
      " 'Singleton\", \"Phone\": \"1-662-859-5562\"}, {\"Name\": \"Ryder K. Maldonado\", '\n",
      " '\"Phone\": \"1-921-715-5315\"}]')\n"
     ]
    }
   ],
   "source": [
    "#\n",
    "# Impresión de JSON con pprint\n",
    "# ===============================================\n",
    "#\n",
    "from pprint import pprint\n",
    "\n",
    "data_json = json.dumps(some_data)\n",
    "pprint(data_json)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2b9d272c-71c0-47e0-beb0-2bdf6fbc7e2b",
   "metadata": {},
   "source": [
    "## Ingestión de datos desde archivos locales"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "18e7599b-241b-4989-a323-dca981b8dfac",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Overwriting /tmp/data.json\n"
     ]
    }
   ],
   "source": [
    "%%writefile /tmp/data.json\n",
    "{\"Name\":{\"0\":\"Isabelle I. Dotson\",\"1\":\"Erin F. Munoz\",\"2\":\"Troy G. Harrell\",\"3\":\"Yen W. Summers\",\"4\":\"Jerome B. Carney\",\"5\":\"Yuri O. Head\",\"6\":\"Ima A. Richard\",\"7\":\"Eleanor Q. Guerrero\",\"8\":\"Stuart F. Daniels\",\"9\":\"Cara G. Beach\",\"10\":\"Nolan E. Cortez\",\"11\":\"Darius H. Beach\",\"12\":\"Christian T. Mercer\",\"13\":\"Florence F. Gordon\",\"14\":\"Wilma I. Patton\",\"15\":\"Rajah I. Jensen\",\"16\":\"Zoe U. Whitfield\",\"17\":\"May K. Wood\",\"18\":\"Beck Q. Monroe\",\"19\":\"Amanda A. Marks\",\"20\":\"Serina X. Lang\",\"21\":\"Lionel L. Bartlett\",\"22\":\"Florence Z. Oconnor\",\"23\":\"Chloe Y. Sears\",\"24\":\"Mariam N. Tyler\",\"25\":\"Dana A. Jefferson\",\"26\":\"Nola N. Chan\",\"27\":\"Owen Z. Odom\",\"28\":\"Serina B. Nash\",\"29\":\"Salvador I. Powell\"},\"Address\":{\"0\":\"?\",\"1\":\"P.O. Box 737, 6015 Ligula St.\",\"2\":\"3706 Ut St.\",\"3\":\"P.O. Box 939, 8016 Egestas Av.\",\"4\":\"298-7004 Natoque St.\",\"5\":\"P.O. Box 214, 231 Dapibus Ave\",\"6\":\"Ap #496-7181 Ullamcorper, St.\",\"7\":\"5425 Ornare St.\",\"8\":\"719-8478 Nunc St.\",\"9\":\"648-517 Velit. Av.\",\"10\":\"Ap #766-6998 Gravida Rd.\",\"11\":\"Ap #251-7151 Donec Av.\",\"12\":\"P.O. Box 858, 1997 Elit, Avenue\",\"13\":\"543-831 Est. Rd.\",\"14\":\"P.O. Box 299, 7144 Orci Street\",\"15\":\"Ap #782-6146 Turpis St.\",\"16\":\"Ap #200-7243 Sit St.\",\"17\":\"777-1067 Auctor, Ave\",\"18\":\"P.O. Box 123, 9085 Lorem, Rd.\",\"19\":\"638-3732 Fermentum Road\",\"20\":\"P.O. Box 780, 2133 Rutrum Road\",\"21\":\"Ap #400-1963 Pellentesque. Ave\",\"22\":\"839 Cras Road\",\"23\":\"361-5600 Per St.\",\"24\":\"589-6397 Scelerisque Road\",\"25\":\"Ap #142-8392 Consequat Avenue\",\"26\":\"Ap #878-314 Faucibus Rd.\",\"27\":\"1659 Risus. Street\",\"28\":\"P.O. Box 143, 5197 At Avenue\",\"29\":\"356-7423 Semper Road\"},\"City\":{\"0\":\"Lamontz\\u017de\",\"1\":\"Springfield\",\"2\":\"Herne\",\"3\":\"Elversele\",\"4\":\"Osimo\",\"5\":\"Lac-Serent\",\"6\":\"Lehrte\",\"7\":\"Arendonk\",\"8\":\"Mataram\",\"9\":\"Casciana Terme\",\"10\":\"Manfredonia\",\"11\":\"Valuyki\",\"12\":\"Guaymas\",\"13\":\"Valcourt\",\"14\":\"Palermo\",\"15\":\"Arquata del Tronto\",\"16\":\"Chesapeake\",\"17\":\"Maastricht\",\"18\":\"Reading\",\"19\":\"Sindelfingen\",\"20\":\"Bromyard\",\"21\":\"Aparecida de Goi\\u00e2nia\",\"22\":\"Etawah\",\"23\":\"Mission\",\"24\":\"Pozzuolo del Friuli\",\"25\":\"Khammam\",\"26\":\"Requ\\u00ednoa\",\"27\":\"Valuyki\",\"28\":\"San Costantino Calabro\",\"29\":\"Cardiff\"},\"ZipCode\":{\"0\":\"12144-86218\",\"1\":\"6373\",\"2\":\"?\",\"3\":\"93452\",\"4\":\"20619\",\"5\":\"4464\",\"6\":\"21449\",\"7\":\"00636\",\"8\":\"43168\",\"9\":\"78450\",\"10\":\"09534\",\"11\":\"903927\",\"12\":\"21574\",\"13\":\"6387\",\"14\":\"233311\",\"15\":\"15936\",\"16\":\"W2A 0QO\",\"17\":\"754025\",\"18\":\"27665\",\"19\":\"678968\",\"20\":\"Z7366\",\"21\":\"744476\",\"22\":\"15197\",\"23\":\"0787 KM\",\"24\":\"T5G 6M8\",\"25\":\"49399\",\"26\":\"1640\",\"27\":\"12758\",\"28\":\"77234\",\"29\":\"Z4197\"},\"Date\":{\"0\":\"02.24.21\",\"1\":\"10.15.20\",\"2\":\"06.28.21\",\"3\":\"?\",\"4\":\"09.23.20\",\"5\":\"12.22.21\",\"6\":\"09.12.21\",\"7\":\"02.15.22\",\"8\":\"06.20.21\",\"9\":\"02.12.22\",\"10\":\"12.14.20\",\"11\":\"10.31.21\",\"12\":\"10.20.20\",\"13\":\"12.01.21\",\"14\":\"12.27.20\",\"15\":\"02.06.21\",\"16\":\"12.01.21\",\"17\":\"01.06.21\",\"18\":\"08.03.22\",\"19\":\"11.20.20\",\"20\":\"07.02.21\",\"21\":\"12.21.21\",\"22\":\"11.29.20\",\"23\":\"08.08.22\",\"24\":\"05.12.21\",\"25\":\"02.06.21\",\"26\":\"06.10.22\",\"27\":\"02.03.21\",\"28\":\"10.31.21\",\"29\":\"05.28.22\"},\"Score\":{\"0\":21.0,\"1\":21.0,\"2\":23.0,\"3\":null,\"4\":24.0,\"5\":17.0,\"6\":22.0,\"7\":21.0,\"8\":15.0,\"9\":19.0,\"10\":23.0,\"11\":14.0,\"12\":19.0,\"13\":25.0,\"14\":17.0,\"15\":21.0,\"16\":19.0,\"17\":13.0,\"18\":24.0,\"19\":11.0,\"20\":14.0,\"21\":17.0,\"22\":24.0,\"23\":19.0,\"24\":23.0,\"25\":20.0,\"26\":10.0,\"27\":20.0,\"28\":18.0,\"29\":19.0}}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "b61d254a-045b-4584-8477-3b2126638561",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{\"Name\":{\"0\":\"Isabelle I. Dotson\",\"1\":\"Erin F. Munoz\",\"2\":\"Troy G. Harrell\",\"3\":\"Yen W. Summers\",\"4\":\"Jerome B. Carney\",\"5\":\"Yuri O. Head\",\"6\":\"Ima A. Richard\",\"7\":\"Eleanor Q. Guerrero\",\"8\":\"Stuart F. Daniels\",\"9\":\"Cara G. Beach\",\"10\":\"Nolan E. Cortez\",\"11\":\"Darius H. Beach\",\"12\":\"Christian T. Mercer\",\"13\":\"Florence F. Gordon\",\"14\":\"Wilma I. Patton\",\"15\":\"Rajah I. Jensen\",\"16\":\"Zoe U. Whitfield\",\"17\":\"May K. Wood\",\"18\":\"Beck Q. Monroe\",\"19\":\"Amanda A. Marks\",\"20\":\"Serina X. Lang\",\"21\":\"Lionel L. Bartlett\",\"22\":\"Florence Z. Oconnor\",\"23\":\"Chloe Y. Sears\",\"24\":\"Mariam N. Tyler\",\"25\":\"Dana A. Jefferson\",\"26\":\"Nola N. Chan\",\"27\":\"Owen Z. Odom\",\"28\":\"Serina B. Nash\",\"29\":\"Salvador I. Powell\"},\"Address\":{\"0\":\"?\",\"1\":\"P.O. Box 737, 6015 Ligula St.\",\"2\":\"3706 Ut St.\",\"3\":\"P.O. Box 939, 8016 Egestas Av.\",\"4\":\"298-7004 Natoque St.\",\"5\":\"P.O. Box 214, 231 Dapibus Ave\",\"6\":\"Ap #496-7181 Ullamcorper, St.\",\"7\":\"5425 Ornare St.\",\"8\":\"719-8478 Nunc St.\",\"9\":\"648-517 Velit. Av.\",\"10\":\"Ap #766-6998 Gravida Rd.\",\"11\":\"Ap #251-7151 Donec Av.\",\"12\":\"P.O. Box 858, 1997 Elit, Avenue\",\"13\":\"543-831 Est. Rd.\",\"14\":\"P.O. Box 299, 7144 Orci Street\",\"15\":\"Ap #782-6146 Turpis St.\",\"16\":\"Ap #200-7243 Sit St.\",\"17\":\"777-1067 Auctor, Ave\",\"18\":\"P.O. Box 123, 9085 Lorem, Rd.\",\"19\":\"638-3732 Fermentum Road\",\"20\":\"P.O. Box 780, 2133 Rutrum Road\",\"21\":\"Ap #400-1963 Pellentesque. Ave\",\"22\":\"839 Cras Road\",\"23\":\"361-5600 Per St.\",\"24\":\"589-6397 Scelerisque Road\",\"25\":\"Ap #142-8392 Consequat Avenue\",\"26\":\"Ap #878-314 Faucibus Rd.\",\"27\":\"1659 Risus. Street\",\"28\":\"P.O. Box 143, 5197 At Avenue\",\"29\":\"356-7423 Semper Road\"},\"City\":{\"0\":\"Lamontz\\u017de\",\"1\":\"Springfield\",\"2\":\"Herne\",\"3\":\"Elversele\",\"4\":\"Osimo\",\"5\":\"Lac-Serent\",\"6\":\"Lehrte\",\"7\":\"Arendonk\",\"8\":\"Mataram\",\"9\":\"Casciana Terme\",\"10\":\"Manfredonia\",\"11\":\"Valuyki\",\"12\":\"Guaymas\",\"13\":\"Valcourt\",\"14\":\"Palermo\",\"15\":\"Arquata del Tronto\",\"16\":\"Chesapeake\",\"17\":\"Maastricht\",\"18\":\"Reading\",\"19\":\"Sindelfingen\",\"20\":\"Bromyard\",\"21\":\"Aparecida de Goi\\u00e2nia\",\"22\":\"Etawah\",\"23\":\"Mission\",\"24\":\"Pozzuolo del Friuli\",\"25\":\"Khammam\",\"26\":\"Requ\\u00ednoa\",\"27\":\"Valuyki\",\"28\":\"San Costantino Calabro\",\"29\":\"Cardiff\"},\"ZipCode\":{\"0\":\"12144-86218\",\"1\":\"6373\",\"2\":\"?\",\"3\":\"93452\",\"4\":\"20619\",\"5\":\"4464\",\"6\":\"21449\",\"7\":\"00636\",\"8\":\"43168\",\"9\":\"78450\",\"10\":\"09534\",\"11\":\"903927\",\"12\":\"21574\",\"13\":\"6387\",\"14\":\"233311\",\"15\":\"15936\",\"16\":\"W2A 0QO\",\"17\":\"754025\",\"18\":\"27665\",\"19\":\"678968\",\"20\":\"Z7366\",\"21\":\"744476\",\"22\":\"15197\",\"23\":\"0787 KM\",\"24\":\"T5G 6M8\",\"25\":\"49399\",\"26\":\"1640\",\"27\":\"12758\",\"28\":\"77234\",\"29\":\"Z4197\"},\"Date\":{\"0\":\"02.24.21\",\"1\":\"10.15.20\",\"2\":\"06.28.21\",\"3\":\"?\",\"4\":\"09.23.20\",\"5\":\"12.22.21\",\"6\":\"09.12.21\",\"7\":\"02.15.22\",\"8\":\"06.20.21\",\"9\":\"02.12.22\",\"10\":\"12.14.20\",\"11\":\"10.31.21\",\"12\":\"10.20.20\",\"13\":\"12.01.21\",\"14\":\"12.27.20\",\"15\":\"02.06.21\",\"16\":\"12.01.21\",\"17\":\"01.06.21\",\"18\":\"08.03.22\",\"19\":\"11.20.20\",\"20\":\"07.02.21\",\"21\":\"12.21.21\",\"22\":\"11.29.20\",\"23\":\"08.08.22\",\"24\":\"05.12.21\",\"25\":\"02.06.21\",\"26\":\"06.10.22\",\"27\":\"02.03.21\",\"28\":\"10.31.21\",\"29\":\"05.28.22\"},\"Score\":{\"0\":21.0,\"1\":21.0,\"2\":23.0,\"3\":null,\"4\":24.0,\"5\":17.0,\"6\":22.0,\"7\":21.0,\"8\":15.0,\"9\":19.0,\"10\":23.0,\"11\":14.0,\"12\":19.0,\"13\":25.0,\"14\":17.0,\"15\":21.0,\"16\":19.0,\"17\":13.0,\"18\":24.0,\"19\":11.0,\"20\":14.0,\"21\":17.0,\"22\":24.0,\"23\":19.0,\"24\":23.0,\"25\":20.0,\"26\":10.0,\"27\":20.0,\"28\":18.0,\"29\":19.0}}\n"
     ]
    }
   ],
   "source": [
    "!cat /tmp/data.json"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "69056bb8-4066-4d03-8d6c-4857420b31a1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dict"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#\n",
    "# Importación\n",
    "# ===============================================\n",
    "#\n",
    "with open(\"/tmp/data.json\", 'r') as json_file:\n",
    "    data_json = json.load(json_file)\n",
    "    \n",
    "type(data_json)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "da914714-3f2c-4d1c-baf0-59ba45d808cb",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dict_keys(['Name', 'Address', 'City', 'ZipCode', 'Date', 'Score'])"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#\n",
    "# Claves del diccionario\n",
    "#\n",
    "data_json.keys()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "1b3e4283-0c06-461e-995c-b43fd07b8b9c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'0': 'Isabelle I. Dotson',\n",
       " '1': 'Erin F. Munoz',\n",
       " '2': 'Troy G. Harrell',\n",
       " '3': 'Yen W. Summers',\n",
       " '4': 'Jerome B. Carney',\n",
       " '5': 'Yuri O. Head',\n",
       " '6': 'Ima A. Richard',\n",
       " '7': 'Eleanor Q. Guerrero',\n",
       " '8': 'Stuart F. Daniels',\n",
       " '9': 'Cara G. Beach',\n",
       " '10': 'Nolan E. Cortez',\n",
       " '11': 'Darius H. Beach',\n",
       " '12': 'Christian T. Mercer',\n",
       " '13': 'Florence F. Gordon',\n",
       " '14': 'Wilma I. Patton',\n",
       " '15': 'Rajah I. Jensen',\n",
       " '16': 'Zoe U. Whitfield',\n",
       " '17': 'May K. Wood',\n",
       " '18': 'Beck Q. Monroe',\n",
       " '19': 'Amanda A. Marks',\n",
       " '20': 'Serina X. Lang',\n",
       " '21': 'Lionel L. Bartlett',\n",
       " '22': 'Florence Z. Oconnor',\n",
       " '23': 'Chloe Y. Sears',\n",
       " '24': 'Mariam N. Tyler',\n",
       " '25': 'Dana A. Jefferson',\n",
       " '26': 'Nola N. Chan',\n",
       " '27': 'Owen Z. Odom',\n",
       " '28': 'Serina B. Nash',\n",
       " '29': 'Salvador I. Powell'}"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#\n",
    "# Extracción de una columna\n",
    "#\n",
    "data_json['Name']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "c5d5fa6f-3716-4c52-824d-27a300850e3e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'{\\n    \"Address\": {\\n        \"0\": \"?\",\\n        \"1\": \"P.O. Box 737, 6015 Ligula St.\",\\n        \"10\": \"Ap #766-6998 Gravida Rd.\",\\n        \"11\": \"Ap #251-7151 Donec Av.\",\\n        \"12\": \"P.O. Box 858, 1997 Elit, Avenue\",\\n        \"13\": \"543-831 Est. Rd.\",\\n        \"14\": \"P.O. Box 299, 7144 Orci Street\",\\n        \"15\": \"Ap #782-6146 Turpis St.\",\\n        \"16\": \"Ap #200-7243 Sit St.\",\\n        \"17\": \"777-1067 Auctor, Ave\",\\n        \"18\": \"P.O. Box 123, 9085 Lorem, Rd.\",\\n        \"19\": \"638-3732 Fermentum Road\",\\n        \"2\": \"3706 Ut St.\",\\n        \"20\": \"P.O. Box 780, 2133 Rutrum Road\",\\n        \"21\": \"Ap #400-1963 Pellentesque. Ave\",\\n        \"22\": \"839 Cras Road\",\\n        \"23\": \"361-5600 Per St.\",\\n        \"24\": \"589-6397 Scelerisque Road\",\\n        \"25\": \"Ap #142-8392 Consequat Avenue\",\\n        \"26\": \"Ap #878-314 Faucibus Rd.\",\\n        \"27\": \"1659 Risus. Street\",\\n        \"28\": \"P.O. Box 143, 5197 At Avenue\",\\n        \"29\": \"356-7423 Semper Road\",\\n        \"3\": \"P.O. Box 939, 8016 Egestas Av.\",\\n        \"4\": \"298-7004 Natoque St.\",\\n        \"5\": \"P.O. Box 214, 231 Dapibus Ave\",\\n        \"6\": \"Ap #496-7181 Ullamcorper, St.\",\\n        \"7\": \"5425 Ornare St.\",\\n        \"8\": \"719-8478 Nunc St.\",\\n        \"9\": \"648-517 Velit. Av.\"\\n    },\\n    \"City\": {\\n        \"0\": \"Lamontz\\\\u017de\",\\n        \"1\": \"Springfield\",\\n        \"10\": \"Manfredonia\",\\n        \"11\": \"Valuyki\",\\n        \"12\": \"Guaymas\",\\n        \"13\": \"Valcourt\",\\n        \"14\": \"Palermo\",\\n        \"15\": \"Arquata del Tronto\",\\n        \"16\": \"Chesapeake\",\\n        \"17\": \"Maastricht\",\\n        \"18\": \"Reading\",\\n        \"19\": \"Sindelfingen\",\\n        \"2\": \"Herne\",\\n        \"20\": \"Bromyard\",\\n        \"21\": \"Aparecida de Goi\\\\u00e2nia\",\\n        \"22\": \"Etawah\",\\n        \"23\": \"Mission\",\\n        \"24\": \"Pozzuolo del Friuli\",\\n        \"25\": \"Khammam\",\\n        \"26\": \"Requ\\\\u00ednoa\",\\n        \"27\": \"Valuyki\",\\n        \"28\": \"San Costantino Calabro\",\\n        \"29\": \"Cardiff\",\\n        \"3\": \"Elversele\",\\n        \"4\": \"Osimo\",\\n        \"5\": \"Lac-Serent\",\\n        \"6\": \"Lehrte\",\\n        \"7\": \"Arendonk\",\\n        \"8\": \"Mataram\",\\n        \"9\": \"Casciana Terme\"\\n    },\\n    \"Date\": {\\n        \"0\": \"02.24.21\",\\n        \"1\": \"10.15.20\",\\n        \"10\": \"12.14.20\",\\n        \"11\": \"10.31.21\",\\n        \"12\": \"10.20.20\",\\n        \"13\": \"12.01.21\",\\n        \"14\": \"12.27.20\",\\n        \"15\": \"02.06.21\",\\n        \"16\": \"12.01.21\",\\n        \"17\": \"01.06.21\",\\n        \"18\": \"08.03.22\",\\n        \"19\": \"11.20.20\",\\n        \"2\": \"06.28.21\",\\n        \"20\": \"07.02.21\",\\n        \"21\": \"12.21.21\",\\n        \"22\": \"11.29.20\",\\n        \"23\": \"08.08.22\",\\n        \"24\": \"05.12.21\",\\n        \"25\": \"02.06.21\",\\n        \"26\": \"06.10.22\",\\n        \"27\": \"02.03.21\",\\n        \"28\": \"10.31.21\",\\n        \"29\": \"05.28.22\",\\n        \"3\": \"?\",\\n        \"4\": \"09.23.20\",\\n        \"5\": \"12.22.21\",\\n        \"6\": \"09.12.21\",\\n        \"7\": \"02.15.22\",\\n        \"8\": \"06.20.21\",\\n        \"9\": \"02.12.22\"\\n    },\\n    \"Name\": {\\n        \"0\": \"Isabelle I. Dotson\",\\n        \"1\": \"Erin F. Munoz\",\\n        \"10\": \"Nolan E. Cortez\",\\n        \"11\": \"Darius H. Beach\",\\n        \"12\": \"Christian T. Mercer\",\\n        \"13\": \"Florence F. Gordon\",\\n        \"14\": \"Wilma I. Patton\",\\n        \"15\": \"Rajah I. Jensen\",\\n        \"16\": \"Zoe U. Whitfield\",\\n        \"17\": \"May K. Wood\",\\n        \"18\": \"Beck Q. Monroe\",\\n        \"19\": \"Amanda A. Marks\",\\n        \"2\": \"Troy G. Harrell\",\\n        \"20\": \"Serina X. Lang\",\\n        \"21\": \"Lionel L. Bartlett\",\\n        \"22\": \"Florence Z. Oconnor\",\\n        \"23\": \"Chloe Y. Sears\",\\n        \"24\": \"Mariam N. Tyler\",\\n        \"25\": \"Dana A. Jefferson\",\\n        \"26\": \"Nola N. Chan\",\\n        \"27\": \"Owen Z. Odom\",\\n        \"28\": \"Serina B. Nash\",\\n        \"29\": \"Salvador I. Powell\",\\n        \"3\": \"Yen W. Summers\",\\n        \"4\": \"Jerome B. Carney\",\\n        \"5\": \"Yuri O. Head\",\\n        \"6\": \"Ima A. Richard\",\\n        \"7\": \"Eleanor Q. Guerrero\",\\n        \"8\": \"Stuart F. Daniels\",\\n        \"9\": \"Cara G. Beach\"\\n    },\\n    \"Score\": {\\n        \"0\": 21.0,\\n        \"1\": 21.0,\\n        \"10\": 23.0,\\n        \"11\": 14.0,\\n        \"12\": 19.0,\\n        \"13\": 25.0,\\n        \"14\": 17.0,\\n        \"15\": 21.0,\\n        \"16\": 19.0,\\n        \"17\": 13.0,\\n        \"18\": 24.0,\\n        \"19\": 11.0,\\n        \"2\": 23.0,\\n        \"20\": 14.0,\\n        \"21\": 17.0,\\n        \"22\": 24.0,\\n        \"23\": 19.0,\\n        \"24\": 23.0,\\n        \"25\": 20.0,\\n        \"26\": 10.0,\\n        \"27\": 20.0,\\n        \"28\": 18.0,\\n        \"29\": 19.0,\\n        \"3\": null,\\n        \"4\": 24.0,\\n        \"5\": 17.0,\\n        \"6\": 22.0,\\n        \"7\": 21.0,\\n        \"8\": 15.0,\\n        \"9\": 19.0\\n    },\\n    \"ZipCode\": {\\n        \"0\": \"12144-86218\",\\n        \"1\": \"6373\",\\n        \"10\": \"09534\",\\n        \"11\": \"903927\",\\n        \"12\": \"21574\",\\n        \"13\": \"6387\",\\n        \"14\": \"233311\",\\n        \"15\": \"15936\",\\n        \"16\": \"W2A 0QO\",\\n        \"17\": \"754025\",\\n        \"18\": \"27665\",\\n        \"19\": \"678968\",\\n        \"2\": \"?\",\\n        \"20\": \"Z7366\",\\n        \"21\": \"744476\",\\n        \"22\": \"15197\",\\n        \"23\": \"0787 KM\",\\n        \"24\": \"T5G 6M8\",\\n        \"25\": \"49399\",\\n        \"26\": \"1640\",\\n        \"27\": \"12758\",\\n        \"28\": \"77234\",\\n        \"29\": \"Z4197\",\\n        \"3\": \"93452\",\\n        \"4\": \"20619\",\\n        \"5\": \"4464\",\\n        \"6\": \"21449\",\\n        \"7\": \"00636\",\\n        \"8\": \"43168\",\\n        \"9\": \"78450\"\\n    }\\n}'"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#\n",
    "# Conversión a un string\n",
    "# ===============================================\n",
    "#\n",
    "json_string = json.dumps(\n",
    "    data_json,\n",
    "    sort_keys=True,\n",
    "    indent=4,\n",
    ")\n",
    "\n",
    "json_string"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "543bf5ca-0110-41a8-b7f5-79be7614f700",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{\n",
      "    \"Address\": {\n",
      "        \"0\": \"?\",\n",
      "        \"1\": \"P.O. Box 737, 6015 Ligula St.\",\n",
      "        \"10\": \"Ap #766-6998 Gravida Rd.\",\n",
      "        \"11\": \"Ap #251-7151 Donec Av.\",\n",
      "        \"12\": \"P.O. Box 858, 1997 Elit, Avenue\",\n",
      "        \"13\": \"543-831 Est. Rd.\",\n",
      "        \"14\": \"P.O. Box 299, 7144 Orci Street\",\n",
      "        \"15\": \"Ap #782-6146 Turpis St.\",\n",
      "        \"16\": \"Ap #200-7243 Sit St.\",\n",
      "        \"17\": \"777-1067 Auctor, Ave\",\n",
      "        \"18\": \"P.O. Box 123, 9085 Lorem, Rd.\",\n",
      "        \"19\": \"638-3732 Fermentum Road\",\n",
      "        \"2\": \"3706 Ut St.\",\n",
      "        \"20\": \"P.O. Box 780, 2133 Rutrum Road\",\n",
      "        \"21\": \"Ap #400-1963 Pellentesque. Ave\",\n",
      "        \"22\": \"839 Cras Road\",\n",
      "        \"23\": \"361-5600 Per St.\",\n",
      "        \"24\": \"589-6397 Scelerisque Road\",\n",
      "        \"25\": \"Ap #142-8392 Consequat Avenue\",\n",
      "        \"26\": \"Ap #878-314 Faucibus Rd.\",\n",
      "        \"27\": \"1659 Risus. Street\",\n",
      "        \"28\": \"P.O. Box 143, 5197 At Avenue\",\n",
      "        \"29\": \"356-7423 Semper Road\",\n",
      "        \"3\": \"P.O. Box 939, 8016 Egestas Av.\",\n",
      "        \"4\": \"298-7004 Natoque St.\",\n",
      "        \"5\": \"P.O. Box 214, 231 Dapibus Ave\",\n",
      "        \"6\": \"Ap #496-7181 Ullamcorper, St.\",\n",
      "        \"7\": \"5425 Ornare St.\",\n",
      "        \"8\": \"719-8478 Nunc St.\",\n",
      "        \"9\": \"648-517 Velit. Av.\"\n",
      "    },\n",
      "    \"City\": {\n",
      "        \"0\": \"Lamontz\\u017de\",\n",
      "        \"1\": \"Springfield\",\n",
      "        \"10\": \"Manfredonia\",\n",
      "        \"11\": \"Valuyki\",\n",
      "        \"12\": \"Guaymas\",\n",
      "        \"13\": \"Valcourt\",\n",
      "        \"14\": \"Palermo\",\n",
      "        \"15\": \"Arquata del Tronto\",\n",
      "        \"16\": \"Chesapeake\",\n",
      "        \"17\": \"Maastricht\",\n",
      "        \"18\": \"Reading\",\n",
      "        \"19\": \"Sindelfingen\",\n",
      "        \"2\": \"Herne\",\n",
      "        \"20\": \"Bromyard\",\n",
      "        \"21\": \"Aparecida de Goi\\u00e2nia\",\n",
      "        \"22\": \"Etawah\",\n",
      "        \"23\": \"Mission\",\n",
      "        \"24\": \"Pozzuolo del Friuli\",\n",
      "        \"25\": \"Khammam\",\n",
      "        \"26\": \"Requ\\u00ednoa\",\n",
      "        \"27\": \"Valuyki\",\n",
      "        \"28\": \"San Costantino Calabro\",\n",
      "        \"29\": \"Cardiff\",\n",
      "        \"3\": \"Elversele\",\n",
      "        \"4\": \"Osimo\",\n",
      "        \"5\": \"Lac-Serent\",\n",
      "        \"6\": \"Lehrte\",\n",
      "        \"7\": \"Arendonk\",\n",
      "        \"8\": \"Mataram\",\n",
      "        \"9\": \"Casciana Terme\"\n",
      "    },\n",
      "    \"Date\": {\n",
      "        \"0\": \"02.24.21\",\n",
      "        \"1\": \"10.15.20\",\n",
      "        \"10\": \"12.14.20\",\n",
      "        \"11\": \"10.31.21\",\n",
      "        \"12\": \"10.20.20\",\n",
      "        \"13\": \"12.01.21\",\n",
      "        \"14\": \"12.27.20\",\n",
      "        \"15\": \"02.06.21\",\n",
      "        \"16\": \"12.01.21\",\n",
      "        \"17\": \"01.06.21\",\n",
      "        \"18\": \"08.03.22\",\n",
      "        \"19\": \"11.20.20\",\n",
      "        \"2\": \"06.28.21\",\n",
      "        \"20\": \"07.02.21\",\n",
      "        \"21\": \"12.21.21\",\n",
      "        \"22\": \"11.29.20\",\n",
      "        \"23\": \"08.08.22\",\n",
      "        \"24\": \"05.12.21\",\n",
      "        \"25\": \"02.06.21\",\n",
      "        \"26\": \"06.10.22\",\n",
      "        \"27\": \"02.03.21\",\n",
      "        \"28\": \"10.31.21\",\n",
      "        \"29\": \"05.28.22\",\n",
      "        \"3\": \"?\",\n",
      "        \"4\": \"09.23.20\",\n",
      "        \"5\": \"12.22.21\",\n",
      "        \"6\": \"09.12.21\",\n",
      "        \"7\": \"02.15.22\",\n",
      "        \"8\": \"06.20.21\",\n",
      "        \"9\": \"02.12.22\"\n",
      "    },\n",
      "    \"Name\": {\n",
      "        \"0\": \"Isabelle I. Dotson\",\n",
      "        \"1\": \"Erin F. Munoz\",\n",
      "        \"10\": \"Nolan E. Cortez\",\n",
      "        \"11\": \"Darius H. Beach\",\n",
      "        \"12\": \"Christian T. Mercer\",\n",
      "        \"13\": \"Florence F. Gordon\",\n",
      "        \"14\": \"Wilma I. Patton\",\n",
      "        \"15\": \"Rajah I. Jensen\",\n",
      "        \"16\": \"Zoe U. Whitfield\",\n",
      "        \"17\": \"May K. Wood\",\n",
      "        \"18\": \"Beck Q. Monroe\",\n",
      "        \"19\": \"Amanda A. Marks\",\n",
      "        \"2\": \"Troy G. Harrell\",\n",
      "        \"20\": \"Serina X. Lang\",\n",
      "        \"21\": \"Lionel L. Bartlett\",\n",
      "        \"22\": \"Florence Z. Oconnor\",\n",
      "        \"23\": \"Chloe Y. Sears\",\n",
      "        \"24\": \"Mariam N. Tyler\",\n",
      "        \"25\": \"Dana A. Jefferson\",\n",
      "        \"26\": \"Nola N. Chan\",\n",
      "        \"27\": \"Owen Z. Odom\",\n",
      "        \"28\": \"Serina B. Nash\",\n",
      "        \"29\": \"Salvador I. Powell\",\n",
      "        \"3\": \"Yen W. Summers\",\n",
      "        \"4\": \"Jerome B. Carney\",\n",
      "        \"5\": \"Yuri O. Head\",\n",
      "        \"6\": \"Ima A. Richard\",\n",
      "        \"7\": \"Eleanor Q. Guerrero\",\n",
      "        \"8\": \"Stuart F. Daniels\",\n",
      "        \"9\": \"Cara G. Beach\"\n",
      "    },\n",
      "    \"Score\": {\n",
      "        \"0\": 21.0,\n",
      "        \"1\": 21.0,\n",
      "        \"10\": 23.0,\n",
      "        \"11\": 14.0,\n",
      "        \"12\": 19.0,\n",
      "        \"13\": 25.0,\n",
      "        \"14\": 17.0,\n",
      "        \"15\": 21.0,\n",
      "        \"16\": 19.0,\n",
      "        \"17\": 13.0,\n",
      "        \"18\": 24.0,\n",
      "        \"19\": 11.0,\n",
      "        \"2\": 23.0,\n",
      "        \"20\": 14.0,\n",
      "        \"21\": 17.0,\n",
      "        \"22\": 24.0,\n",
      "        \"23\": 19.0,\n",
      "        \"24\": 23.0,\n",
      "        \"25\": 20.0,\n",
      "        \"26\": 10.0,\n",
      "        \"27\": 20.0,\n",
      "        \"28\": 18.0,\n",
      "        \"29\": 19.0,\n",
      "        \"3\": null,\n",
      "        \"4\": 24.0,\n",
      "        \"5\": 17.0,\n",
      "        \"6\": 22.0,\n",
      "        \"7\": 21.0,\n",
      "        \"8\": 15.0,\n",
      "        \"9\": 19.0\n",
      "    },\n",
      "    \"ZipCode\": {\n",
      "        \"0\": \"12144-86218\",\n",
      "        \"1\": \"6373\",\n",
      "        \"10\": \"09534\",\n",
      "        \"11\": \"903927\",\n",
      "        \"12\": \"21574\",\n",
      "        \"13\": \"6387\",\n",
      "        \"14\": \"233311\",\n",
      "        \"15\": \"15936\",\n",
      "        \"16\": \"W2A 0QO\",\n",
      "        \"17\": \"754025\",\n",
      "        \"18\": \"27665\",\n",
      "        \"19\": \"678968\",\n",
      "        \"2\": \"?\",\n",
      "        \"20\": \"Z7366\",\n",
      "        \"21\": \"744476\",\n",
      "        \"22\": \"15197\",\n",
      "        \"23\": \"0787 KM\",\n",
      "        \"24\": \"T5G 6M8\",\n",
      "        \"25\": \"49399\",\n",
      "        \"26\": \"1640\",\n",
      "        \"27\": \"12758\",\n",
      "        \"28\": \"77234\",\n",
      "        \"29\": \"Z4197\",\n",
      "        \"3\": \"93452\",\n",
      "        \"4\": \"20619\",\n",
      "        \"5\": \"4464\",\n",
      "        \"6\": \"21449\",\n",
      "        \"7\": \"00636\",\n",
      "        \"8\": \"43168\",\n",
      "        \"9\": \"78450\"\n",
      "    }\n",
      "}\n"
     ]
    }
   ],
   "source": [
    "#\n",
    "# Impresion\n",
    "# ===============================================\n",
    "#\n",
    "print(json_string)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "f8584a42-e992-452d-811e-003d09ddb429",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'Name': {'0': 'Jameson R. Boyle',\n",
       "  '1': 'Idona J. Singleton',\n",
       "  '2': 'Ryder K. Maldonado'},\n",
       " 'Phone': {'0': '1-507-132-4340',\n",
       "  '1': '1-662-859-5562',\n",
       "  '2': '1-921-715-5315'}}"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#\n",
    "# Importación desde un string\n",
    "# ===============================================\n",
    "#\n",
    "json_string = \"\"\"\n",
    "{\n",
    "    \"Name\": {\n",
    "        \"0\": \"Jameson R. Boyle\",\n",
    "        \"1\": \"Idona J. Singleton\",\n",
    "        \"2\": \"Ryder K. Maldonado\"\n",
    "    },\n",
    "    \"Phone\": {\n",
    "        \"0\": \"1-507-132-4340\",\n",
    "        \"1\": \"1-662-859-5562\",\n",
    "        \"2\": \"1-921-715-5315\"\n",
    "    }\n",
    "}\n",
    "\"\"\"\n",
    "\n",
    "json.loads(json_string)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "907f763a-5eba-45dd-ba81-243c7990b42f",
   "metadata": {},
   "source": [
    "## Ingestión desde una API"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "fe76e130-47d3-4baf-825f-53a13e400efd",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'avatar_url': 'https://avatars.githubusercontent.com/u/8204100?v=4',\n",
      " 'bio': 'Full Professor (Analytics and Computer Science) at Facultad de Minas, '\n",
      "        'Universidad Nacional de Colombia. ',\n",
      " 'blog': '',\n",
      " 'company': 'Universidad Nacional de Colombia',\n",
      " 'created_at': '2014-07-18T19:26:25Z',\n",
      " 'email': None,\n",
      " 'events_url': 'https://api.github.com/users/jdvelasq/events{/privacy}',\n",
      " 'followers': 369,\n",
      " 'followers_url': 'https://api.github.com/users/jdvelasq/followers',\n",
      " 'following': 0,\n",
      " 'following_url': 'https://api.github.com/users/jdvelasq/following{/other_user}',\n",
      " 'gists_url': 'https://api.github.com/users/jdvelasq/gists{/gist_id}',\n",
      " 'gravatar_id': '',\n",
      " 'hireable': None,\n",
      " 'html_url': 'https://github.com/jdvelasq',\n",
      " 'id': 8204100,\n",
      " 'location': 'Medellín, Colombia',\n",
      " 'login': 'jdvelasq',\n",
      " 'name': 'Juan David Velásquez-Henao',\n",
      " 'node_id': 'MDQ6VXNlcjgyMDQxMDA=',\n",
      " 'organizations_url': 'https://api.github.com/users/jdvelasq/orgs',\n",
      " 'public_gists': 3,\n",
      " 'public_repos': 54,\n",
      " 'received_events_url': 'https://api.github.com/users/jdvelasq/received_events',\n",
      " 'repos_url': 'https://api.github.com/users/jdvelasq/repos',\n",
      " 'site_admin': False,\n",
      " 'starred_url': 'https://api.github.com/users/jdvelasq/starred{/owner}{/repo}',\n",
      " 'subscriptions_url': 'https://api.github.com/users/jdvelasq/subscriptions',\n",
      " 'twitter_username': None,\n",
      " 'type': 'User',\n",
      " 'updated_at': '2021-08-10T14:33:27Z',\n",
      " 'url': 'https://api.github.com/users/jdvelasq'}\n"
     ]
    }
   ],
   "source": [
    "import requests\n",
    "from pprint import pprint\n",
    "\n",
    "username = \"jdvelasq\"\n",
    "url = f\"https://api.github.com/users/{username}\"\n",
    "user_data = requests.get(url).json()\n",
    "pprint(user_data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "67aa1b41-9db1-41fd-aa16-40dac883cda9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'Juan David Velásquez-Henao'"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#\n",
    "# Extracción de un valor\n",
    "#\n",
    "user_data['name']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "2f097d82-5e44-42fb-b3b6-f863b2f97da4",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'archive_url': 'https://api.github.com/repos/jdvelasq/autograding-run-command/{archive_format}{/ref}',\n",
      " 'archived': False,\n",
      " 'assignees_url': 'https://api.github.com/repos/jdvelasq/autograding-run-command/assignees{/user}',\n",
      " 'blobs_url': 'https://api.github.com/repos/jdvelasq/autograding-run-command/git/blobs{/sha}',\n",
      " 'branches_url': 'https://api.github.com/repos/jdvelasq/autograding-run-command/branches{/branch}',\n",
      " 'clone_url': 'https://github.com/jdvelasq/autograding-run-command.git',\n",
      " 'collaborators_url': 'https://api.github.com/repos/jdvelasq/autograding-run-command/collaborators{/collaborator}',\n",
      " 'comments_url': 'https://api.github.com/repos/jdvelasq/autograding-run-command/comments{/number}',\n",
      " 'commits_url': 'https://api.github.com/repos/jdvelasq/autograding-run-command/commits{/sha}',\n",
      " 'compare_url': 'https://api.github.com/repos/jdvelasq/autograding-run-command/compare/{base}...{head}',\n",
      " 'contents_url': 'https://api.github.com/repos/jdvelasq/autograding-run-command/contents/{+path}',\n",
      " 'contributors_url': 'https://api.github.com/repos/jdvelasq/autograding-run-command/contributors',\n",
      " 'created_at': '2021-02-14T01:24:40Z',\n",
      " 'default_branch': 'main',\n",
      " 'deployments_url': 'https://api.github.com/repos/jdvelasq/autograding-run-command/deployments',\n",
      " 'description': None,\n",
      " 'disabled': False,\n",
      " 'downloads_url': 'https://api.github.com/repos/jdvelasq/autograding-run-command/downloads',\n",
      " 'events_url': 'https://api.github.com/repos/jdvelasq/autograding-run-command/events',\n",
      " 'fork': False,\n",
      " 'forks': 0,\n",
      " 'forks_count': 0,\n",
      " 'forks_url': 'https://api.github.com/repos/jdvelasq/autograding-run-command/forks',\n",
      " 'full_name': 'jdvelasq/autograding-run-command',\n",
      " 'git_commits_url': 'https://api.github.com/repos/jdvelasq/autograding-run-command/git/commits{/sha}',\n",
      " 'git_refs_url': 'https://api.github.com/repos/jdvelasq/autograding-run-command/git/refs{/sha}',\n",
      " 'git_tags_url': 'https://api.github.com/repos/jdvelasq/autograding-run-command/git/tags{/sha}',\n",
      " 'git_url': 'git://github.com/jdvelasq/autograding-run-command.git',\n",
      " 'has_downloads': True,\n",
      " 'has_issues': True,\n",
      " 'has_pages': False,\n",
      " 'has_projects': True,\n",
      " 'has_wiki': True,\n",
      " 'homepage': None,\n",
      " 'hooks_url': 'https://api.github.com/repos/jdvelasq/autograding-run-command/hooks',\n",
      " 'html_url': 'https://github.com/jdvelasq/autograding-run-command',\n",
      " 'id': 338706086,\n",
      " 'issue_comment_url': 'https://api.github.com/repos/jdvelasq/autograding-run-command/issues/comments{/number}',\n",
      " 'issue_events_url': 'https://api.github.com/repos/jdvelasq/autograding-run-command/issues/events{/number}',\n",
      " 'issues_url': 'https://api.github.com/repos/jdvelasq/autograding-run-command/issues{/number}',\n",
      " 'keys_url': 'https://api.github.com/repos/jdvelasq/autograding-run-command/keys{/key_id}',\n",
      " 'labels_url': 'https://api.github.com/repos/jdvelasq/autograding-run-command/labels{/name}',\n",
      " 'language': 'Shell',\n",
      " 'languages_url': 'https://api.github.com/repos/jdvelasq/autograding-run-command/languages',\n",
      " 'license': None,\n",
      " 'merges_url': 'https://api.github.com/repos/jdvelasq/autograding-run-command/merges',\n",
      " 'milestones_url': 'https://api.github.com/repos/jdvelasq/autograding-run-command/milestones{/number}',\n",
      " 'mirror_url': None,\n",
      " 'name': 'autograding-run-command',\n",
      " 'node_id': 'MDEwOlJlcG9zaXRvcnkzMzg3MDYwODY=',\n",
      " 'notifications_url': 'https://api.github.com/repos/jdvelasq/autograding-run-command/notifications{?since,all,participating}',\n",
      " 'open_issues': 0,\n",
      " 'open_issues_count': 0,\n",
      " 'owner': {'avatar_url': 'https://avatars.githubusercontent.com/u/8204100?v=4',\n",
      "           'events_url': 'https://api.github.com/users/jdvelasq/events{/privacy}',\n",
      "           'followers_url': 'https://api.github.com/users/jdvelasq/followers',\n",
      "           'following_url': 'https://api.github.com/users/jdvelasq/following{/other_user}',\n",
      "           'gists_url': 'https://api.github.com/users/jdvelasq/gists{/gist_id}',\n",
      "           'gravatar_id': '',\n",
      "           'html_url': 'https://github.com/jdvelasq',\n",
      "           'id': 8204100,\n",
      "           'login': 'jdvelasq',\n",
      "           'node_id': 'MDQ6VXNlcjgyMDQxMDA=',\n",
      "           'organizations_url': 'https://api.github.com/users/jdvelasq/orgs',\n",
      "           'received_events_url': 'https://api.github.com/users/jdvelasq/received_events',\n",
      "           'repos_url': 'https://api.github.com/users/jdvelasq/repos',\n",
      "           'site_admin': False,\n",
      "           'starred_url': 'https://api.github.com/users/jdvelasq/starred{/owner}{/repo}',\n",
      "           'subscriptions_url': 'https://api.github.com/users/jdvelasq/subscriptions',\n",
      "           'type': 'User',\n",
      "           'url': 'https://api.github.com/users/jdvelasq'},\n",
      " 'private': False,\n",
      " 'pulls_url': 'https://api.github.com/repos/jdvelasq/autograding-run-command/pulls{/number}',\n",
      " 'pushed_at': '2021-02-14T01:29:01Z',\n",
      " 'releases_url': 'https://api.github.com/repos/jdvelasq/autograding-run-command/releases{/id}',\n",
      " 'size': 3,\n",
      " 'ssh_url': 'git@github.com:jdvelasq/autograding-run-command.git',\n",
      " 'stargazers_count': 0,\n",
      " 'stargazers_url': 'https://api.github.com/repos/jdvelasq/autograding-run-command/stargazers',\n",
      " 'statuses_url': 'https://api.github.com/repos/jdvelasq/autograding-run-command/statuses/{sha}',\n",
      " 'subscribers_url': 'https://api.github.com/repos/jdvelasq/autograding-run-command/subscribers',\n",
      " 'subscription_url': 'https://api.github.com/repos/jdvelasq/autograding-run-command/subscription',\n",
      " 'svn_url': 'https://github.com/jdvelasq/autograding-run-command',\n",
      " 'tags_url': 'https://api.github.com/repos/jdvelasq/autograding-run-command/tags',\n",
      " 'teams_url': 'https://api.github.com/repos/jdvelasq/autograding-run-command/teams',\n",
      " 'trees_url': 'https://api.github.com/repos/jdvelasq/autograding-run-command/git/trees{/sha}',\n",
      " 'updated_at': '2021-02-14T01:30:19Z',\n",
      " 'url': 'https://api.github.com/repos/jdvelasq/autograding-run-command',\n",
      " 'watchers': 0,\n",
      " 'watchers_count': 0}\n"
     ]
    }
   ],
   "source": [
    "#\n",
    "# Extracción de los repositorios\n",
    "#\n",
    "repos_url = user_data['repos_url']\n",
    "repos_data = requests.get(repos_url).json()\n",
    "pprint(repos_data[2])"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}