{ "cells": [ { "cell_type": "markdown", "id": "00e7695b", "metadata": {}, "source": [ "# Parte 1: Lectura de datos con diferentes formatos" ] }, { "cell_type": "code", "execution_count": 1, "id": "de7a4f1c", "metadata": {}, "outputs": [], "source": [ "%reset -f" ] }, { "cell_type": "code", "execution_count": 175, "id": "75c1c998", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "import os\n", "from datetime import datetime\n", "# Librería para tratamiento de ficheros xml\n", "import xml.etree.ElementTree as ET\n", "# Librería para efectuar peticiones a páginas web\n", "import requests\n" ] }, { "cell_type": "markdown", "id": "5868e025", "metadata": {}, "source": [ "Vamos a generar las funciones necesarias para cargar los datos en los diferentes formatos" ] }, { "cell_type": "code", "execution_count": 104, "id": "a5581176", "metadata": {}, "outputs": [], "source": [ "# carga de archivos xml\n", "\n", "def cargaXml():\n", " inicio = datetime.now()\n", " xml_data = open('./data/calendario_laboral_2021.xml', 'r').read() # Leer archivo\n", " root = ET.XML(xml_data) # Parsear el XML\n", " data = []\n", " cols = []\n", " for i, child in enumerate(root):\n", " data.append([subchild.text for subchild in child])\n", " cols.append(child.tag)\n", "\n", " df = pd.DataFrame(data).T # Escribir en DF y transponer datos\n", " df.columns = cols # Actualizamos nombres de columna Update column names\n", " \n", " return ((datetime.now()-inicio).total_seconds())" ] }, { "cell_type": "code", "execution_count": 107, "id": "7ce72dfb", "metadata": {}, "outputs": [], "source": [ "# carga de archivos xlsx\n", "def cargaXlsx ():\n", " inicio = datetime.now()\n", " xlsx_data = pd.read_excel('./data/calendario_laboral_2021.xlsx', sheet_name='calendario_laboral_2021')\n", " return ((datetime.now()-inicio).total_seconds())" ] }, { "cell_type": "code", "execution_count": 109, "id": "82ef1c7c", "metadata": {}, "outputs": [], "source": [ "# carga de archivos csv\n", "def cargaCsv ():\n", " inicio = datetime.now()\n", " csv_data = pd.read_csv('./data/calendario_laboral_2021.csv', sep=';')\n", " return ((datetime.now()-inicio).total_seconds())" ] }, { "cell_type": "code", "execution_count": 110, "id": "d0ec11b5", "metadata": {}, "outputs": [], "source": [ "# carga de archivos json\n", "def cargaJson ():\n", " inicio = datetime.now()\n", " json_data = pd.read_json('./data/calendario_laboral_2021.json')\n", " return ((datetime.now()-inicio).total_seconds())" ] }, { "cell_type": "code", "execution_count": 111, "id": "f5ad13c7", "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "0.012827" ] }, "execution_count": 111, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cargaXml()" ] }, { "cell_type": "code", "execution_count": 114, "id": "b59f147d", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.068827" ] }, "execution_count": 114, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cargaXlsx()" ] }, { "cell_type": "code", "execution_count": 118, "id": "f67d2813", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.004919" ] }, "execution_count": 118, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cargaCsv()" ] }, { "cell_type": "code", "execution_count": 121, "id": "4e07ca51", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.012655" ] }, "execution_count": 121, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cargaJson()" ] }, { "cell_type": "markdown", "id": "b36d62dd", "metadata": {}, "source": [ "Vemos que la carga de datos más rápida es a través de CSV's. También podemos cargar archivos directamente de internet..." ] }, { "cell_type": "code", "execution_count": 122, "id": "c28b6617", "metadata": {}, "outputs": [], "source": [ "# carga de archivos csv internet\n", "def cargaCsvInternet ():\n", " inicio = datetime.now()\n", " csv_data = pd.read_csv('https://opendata.euskadi.eus/contenidos/ds_eventos/calendario_laboral_2021/opendata/calendario_laboral_2021.csv', sep=';')\n", " return ((datetime.now()-inicio).total_seconds())" ] }, { "cell_type": "code", "execution_count": 126, "id": "cc91fbf5", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.242901" ] }, "execution_count": 126, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cargaCsvInternet()" ] }, { "cell_type": "markdown", "id": "dc7c983c", "metadata": {}, "source": [ "Lo ponemos bonito y automatizamos... Ejecutaremos el proceso 5 veces para tener un tiempo medio de carga por tipo de archivo" ] }, { "cell_type": "code", "execution_count": 148, "id": "9d45687e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Iteración: 0\n", "Iteración: 1\n", "Iteración: 2\n", "Iteración: 3\n", "Iteración: 4\n" ] } ], "source": [ "resultados = pd.DataFrame(columns=['xml','xlsx','csv','json','csvInternet'])\n", "tiempos = np.array([])\n", "for a in range(5):\n", " print ('Iteración:', a)\n", " xml = cargaXml()\n", " xlsx = cargaXlsx()\n", " csv = cargaCsv()\n", " json = cargaJson()\n", " csvInternet = cargaCsvInternet()\n", " \n", " tiempos = pd.Series(np.array([xml, xlsx, csv, json, csvInternet]), index=resultados.columns)\n", " resultados = resultados.append(tiempos, ignore_index=True)" ] }, { "cell_type": "code", "execution_count": 149, "id": "13a1bec3", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
xmlxlsxcsvjsoncsvInternet
00.0131610.0727450.0022160.0075020.886830
10.0106660.0666490.0021960.0077100.874905
20.0177470.0763200.0023250.0086500.892770
30.0163540.0685730.0021890.0074750.894838
40.0176800.0701000.0022330.0075410.924653
\n", "
" ], "text/plain": [ " xml xlsx csv json csvInternet\n", "0 0.013161 0.072745 0.002216 0.007502 0.886830\n", "1 0.010666 0.066649 0.002196 0.007710 0.874905\n", "2 0.017747 0.076320 0.002325 0.008650 0.892770\n", "3 0.016354 0.068573 0.002189 0.007475 0.894838\n", "4 0.017680 0.070100 0.002233 0.007541 0.924653" ] }, "execution_count": 149, "metadata": {}, "output_type": "execute_result" } ], "source": [ "resultados" ] }, { "cell_type": "markdown", "id": "1b1972bc", "metadata": {}, "source": [ "Calculamos los tiempos medios para cada tipo de archivo" ] }, { "cell_type": "code", "execution_count": 173, "id": "f2a526eb", "metadata": {}, "outputs": [], "source": [ "tiemposMedios = pd.DataFrame(columns=['xml','xlsx','csv','json','csvInternet'])\n", "\n", "tiemposMedios.loc ['0','xml'] = round(resultados ['xml'].mean(),3)\n", "tiemposMedios.loc ['0','xlsx'] = round(resultados ['xlsx'].mean(),3)\n", "tiemposMedios.loc ['0','csv'] = round(resultados ['csv'].mean(),3)\n", "tiemposMedios.loc ['0','json'] = round(resultados ['json'].mean(),3)\n", "tiemposMedios.loc ['0','csvInternet'] = round(resultados ['csvInternet'].mean(),3)" ] }, { "cell_type": "code", "execution_count": 174, "id": "8ffe8b94", "metadata": { "scrolled": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
xmlxlsxcsvjsoncsvInternet
00.0150.0710.0020.0080.895
\n", "
" ], "text/plain": [ " xml xlsx csv json csvInternet\n", "0 0.015 0.071 0.002 0.008 0.895" ] }, "execution_count": 174, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tiemposMedios" ] }, { "cell_type": "markdown", "id": "c45f804e", "metadata": {}, "source": [ "También podemos cargar tablas desde una url en internet..." ] }, { "cell_type": "code", "execution_count": 195, "id": "616c5afe", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
County CodeTract CodeTract Income LevelDistressed or Under -served TractTract Median Family Income %2011 HUD Est. MSA/MD non-MSA/MD Median Family Income2011 Est. Tract Median Family Income2000 Tract Median Family IncomeTract PopulationTract Minority %Minority PopulationOwner Occupied Units1- to 4- Family Units
0151.00ModerateNo74.23$51,500$38,228$29,615227945.771043431894
1152.00MiddleNo86.40$51,500$44,496$34,468308442.4413098811543
2153.00ModerateNo59.27$51,500$30,524$23,644354578.8727966371562
3154.00ModerateNo76.24$51,500$39,264$30,417277759.4216509081335
4155.00LowNo40.54$51,500$20,878$16,172237293.5522195971306
5156.00LowNo30.36$51,500$15,635$12,113243977.741896363736
6158.00ModerateNo72.62$51,500$37,399$28,971147555.05812293674
7159.00UpperNo147.52$51,500$75,973$58,854370516.2260112141606
81510.00UpperNo142.34$51,500$73,305$56,786553815.9888516602226
91511.00UpperNo122.20$51,500$62,933$48,750609616.44100216672398
101512.00MiddleNo101.99$51,500$52,525$40,688754522.29168222193155
111513.00ModerateNo71.07$51,500$36,601$28,35524814.511127631187
121514.00MiddleNo92.76$51,500$47,771$37,005354523.3082611661581
131515.00MiddleNo100.88$51,500$51,953$40,24754718.5947018392311
141516.00MiddleNo92.93$51,500$47,859$37,074382211.0942411991756
151517.00UpperNo121.62$51,500$62,634$48,520653019.91130020912651
161518.00MiddleNo101.16$51,500$52,097$40,359665312.6384020872894
171519.00MiddleNo97.13$51,500$50,022$38,7501915.7935446
181520.00MiddleNo101.02$51,500$52,025$40,30255396.3235018152321
191521.01LowNo42.57$51,500$21,924$16,985263730.94816199570
201521.02UpperNo167.87$51,500$86,453$66,970265113.433568681145
211521.03MiddleNo92.01$51,500$47,385$36,708456925.5211669471759
221522.00MiddleNo94.29$51,500$48,559$37,61837844.9718812861752
231523.00ModerateNo75.40$51,500$38,831$30,081404315.3862212061877
241524.00MiddleNo103.82$51,500$53,467$41,41743574.5019614471807
251525.01MiddleNo114.30$51,500$58,865$45,60066359.2561421322684
261525.02MiddleNo95.27$51,500$49,064$38,00843953.8917114621844
271526.00MiddleNo100.75$51,500$51,886$40,19442637.0830214631918
\n", "
" ], "text/plain": [ " County Code Tract Code Tract Income Level \\\n", "0 15 1.00 Moderate \n", "1 15 2.00 Middle \n", "2 15 3.00 Moderate \n", "3 15 4.00 Moderate \n", "4 15 5.00 Low \n", "5 15 6.00 Low \n", "6 15 8.00 Moderate \n", "7 15 9.00 Upper \n", "8 15 10.00 Upper \n", "9 15 11.00 Upper \n", "10 15 12.00 Middle \n", "11 15 13.00 Moderate \n", "12 15 14.00 Middle \n", "13 15 15.00 Middle \n", "14 15 16.00 Middle \n", "15 15 17.00 Upper \n", "16 15 18.00 Middle \n", "17 15 19.00 Middle \n", "18 15 20.00 Middle \n", "19 15 21.01 Low \n", "20 15 21.02 Upper \n", "21 15 21.03 Middle \n", "22 15 22.00 Middle \n", "23 15 23.00 Moderate \n", "24 15 24.00 Middle \n", "25 15 25.01 Middle \n", "26 15 25.02 Middle \n", "27 15 26.00 Middle \n", "\n", " Distressed or Under -served Tract Tract Median Family Income % \\\n", "0 No 74.23 \n", "1 No 86.40 \n", "2 No 59.27 \n", "3 No 76.24 \n", "4 No 40.54 \n", "5 No 30.36 \n", "6 No 72.62 \n", "7 No 147.52 \n", "8 No 142.34 \n", "9 No 122.20 \n", "10 No 101.99 \n", "11 No 71.07 \n", "12 No 92.76 \n", "13 No 100.88 \n", "14 No 92.93 \n", "15 No 121.62 \n", "16 No 101.16 \n", "17 No 97.13 \n", "18 No 101.02 \n", "19 No 42.57 \n", "20 No 167.87 \n", "21 No 92.01 \n", "22 No 94.29 \n", "23 No 75.40 \n", "24 No 103.82 \n", "25 No 114.30 \n", "26 No 95.27 \n", "27 No 100.75 \n", "\n", " 2011 HUD Est. MSA/MD non-MSA/MD Median Family Income \\\n", "0 $51,500 \n", "1 $51,500 \n", "2 $51,500 \n", "3 $51,500 \n", "4 $51,500 \n", "5 $51,500 \n", "6 $51,500 \n", "7 $51,500 \n", "8 $51,500 \n", "9 $51,500 \n", "10 $51,500 \n", "11 $51,500 \n", "12 $51,500 \n", "13 $51,500 \n", "14 $51,500 \n", "15 $51,500 \n", "16 $51,500 \n", "17 $51,500 \n", "18 $51,500 \n", "19 $51,500 \n", "20 $51,500 \n", "21 $51,500 \n", "22 $51,500 \n", "23 $51,500 \n", "24 $51,500 \n", "25 $51,500 \n", "26 $51,500 \n", "27 $51,500 \n", "\n", " 2011 Est. Tract Median Family Income 2000 Tract Median Family Income \\\n", "0 $38,228 $29,615 \n", "1 $44,496 $34,468 \n", "2 $30,524 $23,644 \n", "3 $39,264 $30,417 \n", "4 $20,878 $16,172 \n", "5 $15,635 $12,113 \n", "6 $37,399 $28,971 \n", "7 $75,973 $58,854 \n", "8 $73,305 $56,786 \n", "9 $62,933 $48,750 \n", "10 $52,525 $40,688 \n", "11 $36,601 $28,355 \n", "12 $47,771 $37,005 \n", "13 $51,953 $40,247 \n", "14 $47,859 $37,074 \n", "15 $62,634 $48,520 \n", "16 $52,097 $40,359 \n", "17 $50,022 $38,750 \n", "18 $52,025 $40,302 \n", "19 $21,924 $16,985 \n", "20 $86,453 $66,970 \n", "21 $47,385 $36,708 \n", "22 $48,559 $37,618 \n", "23 $38,831 $30,081 \n", "24 $53,467 $41,417 \n", "25 $58,865 $45,600 \n", "26 $49,064 $38,008 \n", "27 $51,886 $40,194 \n", "\n", " Tract Population Tract Minority % Minority Population \\\n", "0 2279 45.77 1043 \n", "1 3084 42.44 1309 \n", "2 3545 78.87 2796 \n", "3 2777 59.42 1650 \n", "4 2372 93.55 2219 \n", "5 2439 77.74 1896 \n", "6 1475 55.05 812 \n", "7 3705 16.22 601 \n", "8 5538 15.98 885 \n", "9 6096 16.44 1002 \n", "10 7545 22.29 1682 \n", "11 2481 4.51 112 \n", "12 3545 23.30 826 \n", "13 5471 8.59 470 \n", "14 3822 11.09 424 \n", "15 6530 19.91 1300 \n", "16 6653 12.63 840 \n", "17 19 15.79 3 \n", "18 5539 6.32 350 \n", "19 2637 30.94 816 \n", "20 2651 13.43 356 \n", "21 4569 25.52 1166 \n", "22 3784 4.97 188 \n", "23 4043 15.38 622 \n", "24 4357 4.50 196 \n", "25 6635 9.25 614 \n", "26 4395 3.89 171 \n", "27 4263 7.08 302 \n", "\n", " Owner Occupied Units 1- to 4- Family Units \n", "0 431 894 \n", "1 881 1543 \n", "2 637 1562 \n", "3 908 1335 \n", "4 597 1306 \n", "5 363 736 \n", "6 293 674 \n", "7 1214 1606 \n", "8 1660 2226 \n", "9 1667 2398 \n", "10 2219 3155 \n", "11 763 1187 \n", "12 1166 1581 \n", "13 1839 2311 \n", "14 1199 1756 \n", "15 2091 2651 \n", "16 2087 2894 \n", "17 5 446 \n", "18 1815 2321 \n", "19 199 570 \n", "20 868 1145 \n", "21 947 1759 \n", "22 1286 1752 \n", "23 1206 1877 \n", "24 1447 1807 \n", "25 2132 2684 \n", "26 1462 1844 \n", "27 1463 1918 " ] }, "execution_count": 195, "metadata": {}, "output_type": "execute_result" } ], "source": [ "url = 'http://www.ffiec.gov/census/report.aspx?year=2011&state=01&report=demographic&msa=11500'\n", "html = requests.get(url).content\n", "df_list = pd.read_html(html)\n", "df = df_list[-1] # Nos quedamos con la ultima tabla descargada\n", "\n", "df.to_csv('tabla descargada de internet.csv')\n", "df" ] }, { "cell_type": "markdown", "id": "f67b6ea5", "metadata": {}, "source": [ "Concatenación de tablas (iguales) descargadas desde internet..." ] }, { "cell_type": "code", "execution_count": 209, "id": "6928a549", "metadata": {}, "outputs": [], "source": [ "urls = [\"http://www.marca.com/estadisticas/futbol/primera/2016_17/jornada_38/\",\n", " \"http://www.marca.com/estadisticas/futbol/primera/2017_18/jornada_38/\",\n", " \"http://www.marca.com/estadisticas/futbol/primera/2018_19/jornada_38/\",\n", " \"http://www.marca.com/estadisticas/futbol/primera/2019_20/jornada_38/\",\n", " \"http://www.marca.com/estadisticas/futbol/primera/2020_21/jornada_38/\"]" ] }, { "cell_type": "code", "execution_count": 231, "id": "12bae9ec", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n", "1\n", "2\n", "3\n", "4\n" ] } ], "source": [ "tablas = []\n", "for a in range(len(urls)):\n", " print(a)\n", " html = requests.get(urls[a]).content\n", " df_list = pd.read_html(html)\n", " tablas.append(df_list[-1]) # Nos quedamos con la ultima tabla descargada\n" ] }, { "cell_type": "code", "execution_count": 233, "id": "39f600e7", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ClasificaciónClasificación.1P.J.P.G.P.E.P.P.G.F.G.C.Ptos
01Barcelona382693903687
12Atlético3822106552976
23R. Madrid3821512634668
34Valencia3715157513560
45Sevilla3817813624759
56Getafe3715139483558
67Espanyol38141113485053
78Athletic38131411414553
89R. Sociedad38131114454650
910Betis3814816445250
1011Alavés38131114395050
1112Eibar38111413465047
1213Leganés38111215374345
1314Villarreal38101414495244
1415Levante38111116596644
1516Valladolid38101117325141
1617Celta38101117536241
1718Girona3891019375337
1819Huesca3771119436532
1920Rayo378722417031
\n", "
" ], "text/plain": [ " Clasificación Clasificación.1 P.J. P.G. P.E. P.P. G.F. G.C. Ptos\n", "0 1 Barcelona 38 26 9 3 90 36 87\n", "1 2 Atlético 38 22 10 6 55 29 76\n", "2 3 R. Madrid 38 21 5 12 63 46 68\n", "3 4 Valencia 37 15 15 7 51 35 60\n", "4 5 Sevilla 38 17 8 13 62 47 59\n", "5 6 Getafe 37 15 13 9 48 35 58\n", "6 7 Espanyol 38 14 11 13 48 50 53\n", "7 8 Athletic 38 13 14 11 41 45 53\n", "8 9 R. Sociedad 38 13 11 14 45 46 50\n", "9 10 Betis 38 14 8 16 44 52 50\n", "10 11 Alavés 38 13 11 14 39 50 50\n", "11 12 Eibar 38 11 14 13 46 50 47\n", "12 13 Leganés 38 11 12 15 37 43 45\n", "13 14 Villarreal 38 10 14 14 49 52 44\n", "14 15 Levante 38 11 11 16 59 66 44\n", "15 16 Valladolid 38 10 11 17 32 51 41\n", "16 17 Celta 38 10 11 17 53 62 41\n", "17 18 Girona 38 9 10 19 37 53 37\n", "18 19 Huesca 37 7 11 19 43 65 32\n", "19 20 Rayo 37 8 7 22 41 70 31" ] }, "execution_count": 233, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tablas[2]" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.8.12" } }, "nbformat": 4, "nbformat_minor": 5 }