{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Análisis de datos sobre el Covid con 'pandas'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Tomamos el enlace de la base de datos que contiene información acerca de la incidencia del Covid. Esta api nos servirá para posteriormente visualizarse gracias a la importación de la librería 'pandas'. Así, la api podrá ser fácilmente entendible para quien tiene delante esos datos" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "La URL https://api.covid19api.com/countries" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Instalamos la librería 'pandas' porque el paquete no se encuentra dentro de las librerías de las que dispone Jupyterhub" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: pandas in /usr/local/lib/python3.8/dist-packages (1.3.1)\n", "Requirement already satisfied: pytz>=2017.3 in /usr/local/lib/python3.8/dist-packages (from pandas) (2020.4)\n", "Requirement already satisfied: python-dateutil>=2.7.3 in /usr/local/lib/python3.8/dist-packages (from pandas) (2.8.1)\n", "Requirement already satisfied: numpy>=1.17.3 in /usr/local/lib/python3.8/dist-packages (from pandas) (1.21.1)\n", "Requirement already satisfied: six>=1.5 in /usr/lib/python3/dist-packages (from python-dateutil>=2.7.3->pandas) (1.14.0)\n" ] } ], "source": [ " !pip install pandas\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Primero importamos la librería para poder trabajar con ella y utilizar sus tablas de visualización de datos. A continuación, denominamos a pandas simplemente pd para que sea más fácil referenciar su nombre" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "import pandas as pd" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Asignamos un valor a la URL para que cuando escribamos \"url\", Python entienda que nos referimos exactamente al contenido de ese enlace que contiene la api" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "url = 'https://api.covid19api.com/countries'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Llamamos al URL que contiene el archivo json con la función de pandas read_json y después analizamos con nano qué delimitadores tiene este archuivo en concreto. Así se puede leer correctamente" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ " df = pd.read_json(url)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Comprobamos el contenido del dataframe y nos aseguramos de que podemos visualizar lo que previamente hemos indicado" ] }, { "cell_type": "code", "execution_count": 9, "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", "
CountrySlugISO2
0French Polynesiafrench-polynesiaPF
1IndonesiaindonesiaID
2MaltamaltaMT
3Sao Tome and Principesao-tome-and-principeST
4HaitihaitiHT
............
243MyanmarmyanmarMM
244TurkeyturkeyTR
245Western Saharawestern-saharaEH
246PitcairnpitcairnPN
247Tanzania, United Republic oftanzaniaTZ
\n", "

248 rows × 3 columns

\n", "
" ], "text/plain": [ " Country Slug ISO2\n", "0 French Polynesia french-polynesia PF\n", "1 Indonesia indonesia ID\n", "2 Malta malta MT\n", "3 Sao Tome and Principe sao-tome-and-principe ST\n", "4 Haiti haiti HT\n", ".. ... ... ...\n", "243 Myanmar myanmar MM\n", "244 Turkey turkey TR\n", "245 Western Sahara western-sahara EH\n", "246 Pitcairn pitcairn PN\n", "247 Tanzania, United Republic of tanzania TZ\n", "\n", "[248 rows x 3 columns]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Mediante las funciones head y tail podemos visualizar la parte superior e inferior de los datos de la tabla respectivamente" ] }, { "cell_type": "code", "execution_count": 10, "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", "
CountrySlugISO2
0French Polynesiafrench-polynesiaPF
1IndonesiaindonesiaID
2MaltamaltaMT
3Sao Tome and Principesao-tome-and-principeST
4HaitihaitiHT
\n", "
" ], "text/plain": [ " Country Slug ISO2\n", "0 French Polynesia french-polynesia PF\n", "1 Indonesia indonesia ID\n", "2 Malta malta MT\n", "3 Sao Tome and Principe sao-tome-and-principe ST\n", "4 Haiti haiti HT" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head()" ] }, { "cell_type": "code", "execution_count": 11, "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", "
CountrySlugISO2
243MyanmarmyanmarMM
244TurkeyturkeyTR
245Western Saharawestern-saharaEH
246PitcairnpitcairnPN
247Tanzania, United Republic oftanzaniaTZ
\n", "
" ], "text/plain": [ " Country Slug ISO2\n", "243 Myanmar myanmar MM\n", "244 Turkey turkey TR\n", "245 Western Sahara western-sahara EH\n", "246 Pitcairn pitcairn PN\n", "247 Tanzania, United Republic of tanzania TZ" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.tail ()" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "ename": "SyntaxError", "evalue": "invalid character in identifier (, line 1)", "output_type": "error", "traceback": [ "\u001b[0;36m File \u001b[0;32m\"\"\u001b[0;36m, line \u001b[0;32m1\u001b[0m\n\u001b[0;31m df[‘country’][66]\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid character in identifier\n" ] } ], "source": [ "df['Country'][66]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Ahora solamente buscamos los datos relativos a España, por lo que delimitamos dicha búsqueda: Reasignamos un valor a la url y marcamos que la dataframe que necesitamos tomar es la de España" ] }, { "cell_type": "code", "execution_count": 16, "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", "
CountryCountryCodeProvinceCityCityCodeLatLonCasesStatusDate
0SpainES40.46-3.750confirmed2020-01-22 00:00:00+00:00
1SpainES40.46-3.750confirmed2020-01-23 00:00:00+00:00
2SpainES40.46-3.750confirmed2020-01-24 00:00:00+00:00
3SpainES40.46-3.750confirmed2020-01-25 00:00:00+00:00
4SpainES40.46-3.750confirmed2020-01-26 00:00:00+00:00
.................................
798SpainES40.46-3.7511508309confirmed2022-03-30 00:00:00+00:00
799SpainES40.46-3.7511508309confirmed2022-03-31 00:00:00+00:00
800SpainES40.46-3.7511551574confirmed2022-04-01 00:00:00+00:00
801SpainES40.46-3.7511551574confirmed2022-04-02 00:00:00+00:00
802SpainES40.46-3.7511551574confirmed2022-04-03 00:00:00+00:00
\n", "

803 rows × 10 columns

\n", "
" ], "text/plain": [ " Country CountryCode Province City CityCode Lat Lon Cases \\\n", "0 Spain ES 40.46 -3.75 0 \n", "1 Spain ES 40.46 -3.75 0 \n", "2 Spain ES 40.46 -3.75 0 \n", "3 Spain ES 40.46 -3.75 0 \n", "4 Spain ES 40.46 -3.75 0 \n", ".. ... ... ... ... ... ... ... ... \n", "798 Spain ES 40.46 -3.75 11508309 \n", "799 Spain ES 40.46 -3.75 11508309 \n", "800 Spain ES 40.46 -3.75 11551574 \n", "801 Spain ES 40.46 -3.75 11551574 \n", "802 Spain ES 40.46 -3.75 11551574 \n", "\n", " Status Date \n", "0 confirmed 2020-01-22 00:00:00+00:00 \n", "1 confirmed 2020-01-23 00:00:00+00:00 \n", "2 confirmed 2020-01-24 00:00:00+00:00 \n", "3 confirmed 2020-01-25 00:00:00+00:00 \n", "4 confirmed 2020-01-26 00:00:00+00:00 \n", ".. ... ... \n", "798 confirmed 2022-03-30 00:00:00+00:00 \n", "799 confirmed 2022-03-31 00:00:00+00:00 \n", "800 confirmed 2022-04-01 00:00:00+00:00 \n", "801 confirmed 2022-04-02 00:00:00+00:00 \n", "802 confirmed 2022-04-03 00:00:00+00:00 \n", "\n", "[803 rows x 10 columns]" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "url_es='https://api.covid19api.com/country/spain/status/confirmed/live'\n", "df_es= pd.read_json(url_es)\n", "df_es\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Obtenemos el nombre de cada columna mediante la función 'columns'" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['Country', 'CountryCode', 'Province', 'City', 'CityCode', 'Lat', 'Lon',\n", " 'Cases', 'Status', 'Date'],\n", " dtype='object')" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_es.columns\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Con la función info obtenemos un resumen del dataframe, como en este caso el número total de columnas (vemos que son un total de 10) o la memoria usada" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "RangeIndex: 803 entries, 0 to 802\n", "Data columns (total 10 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 Country 803 non-null object \n", " 1 CountryCode 803 non-null object \n", " 2 Province 803 non-null object \n", " 3 City 803 non-null object \n", " 4 CityCode 803 non-null object \n", " 5 Lat 803 non-null float64 \n", " 6 Lon 803 non-null float64 \n", " 7 Cases 803 non-null int64 \n", " 8 Status 803 non-null object \n", " 9 Date 803 non-null datetime64[ns, UTC]\n", "dtypes: datetime64[ns, UTC](1), float64(2), int64(1), object(6)\n", "memory usage: 62.9+ KB\n" ] } ], "source": [ "df_es.info()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Para obtener información sobre valores numéricos de una columna utilizamos la función describe" ] }, { "cell_type": "code", "execution_count": 19, "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", "
LatLonCases
count8.030000e+02803.008.030000e+02
mean4.046000e+01-3.753.242248e+06
std7.109856e-150.003.109442e+06
min4.046000e+01-3.750.000000e+00
25%4.046000e+01-3.753.186710e+05
50%4.046000e+01-3.753.149012e+06
75%4.046000e+01-3.754.920388e+06
max4.046000e+01-3.751.155157e+07
\n", "
" ], "text/plain": [ " Lat Lon Cases\n", "count 8.030000e+02 803.00 8.030000e+02\n", "mean 4.046000e+01 -3.75 3.242248e+06\n", "std 7.109856e-15 0.00 3.109442e+06\n", "min 4.046000e+01 -3.75 0.000000e+00\n", "25% 4.046000e+01 -3.75 3.186710e+05\n", "50% 4.046000e+01 -3.75 3.149012e+06\n", "75% 4.046000e+01 -3.75 4.920388e+06\n", "max 4.046000e+01 -3.75 1.155157e+07" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_es.describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Con index establecemos columnas de longitud apropiada como índice del dataFrame. El nuevo índice establecido puede reemplazar al índice existente " ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Date\n", "2020-01-22 00:00:00+00:00 0\n", "2020-01-23 00:00:00+00:00 0\n", "2020-01-24 00:00:00+00:00 0\n", "2020-01-25 00:00:00+00:00 0\n", "2020-01-26 00:00:00+00:00 0\n", " ... \n", "2022-03-30 00:00:00+00:00 11508309\n", "2022-03-31 00:00:00+00:00 11508309\n", "2022-04-01 00:00:00+00:00 11551574\n", "2022-04-02 00:00:00+00:00 11551574\n", "2022-04-03 00:00:00+00:00 11551574\n", "Name: Cases, Length: 803, dtype: int64" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_es.set_index('Date')['Cases']\n" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "df_es.set_index('Date')['Cases'].plot()" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "ename": "SyntaxError", "evalue": "EOL while scanning string literal (, line 1)", "output_type": "error", "traceback": [ "\u001b[0;36m File \u001b[0;32m\"\"\u001b[0;36m, line \u001b[0;32m1\u001b[0m\n\u001b[0;31m df_es.set_index('Date')['Cases'].plot(title=\"Casos de Covid en España”)\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m EOL while scanning string literal\n" ] } ], "source": [ "df_es.set_index('Date')['Cases'].plot(title=\"Casos de Covid en España”)\n" ] } ], "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.8.10" } }, "nbformat": 4, "nbformat_minor": 4 }