{"id":10984,"date":"2015-07-17T09:30:11","date_gmt":"2015-07-17T14:30:11","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/ccpg1001\/?p=10984"},"modified":"2026-04-04T11:38:33","modified_gmt":"2026-04-04T16:38:33","slug":"archivos-csv-ejercicio","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/fp-u08\/archivos-csv-ejercicio\/","title":{"rendered":"8.2.1 Archivos.csv - Ejercicio temperatura y Humedad"},"content":{"rendered":"\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/p>\n\n\n\n<p><a href=\"#archivocsv\">Archivo csv<\/a><\/p>\n\n\n\n<p><a href=\"#fechas\">fechas<\/a><\/p>\n\n\n\n<p><a href=\"#grafica\">gr\u00e1fica<\/a><\/p>\n\n\n\n<p><a href=\"#intervalos\">intervalos fecha<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"ejercicio\">Ejercicio<\/h2>\n\n\n\n<p>De una estaci\u00f3n meteorol\u00f3gica se obtiene un <strong>archivo.csv<\/strong> con los datos de los sensores disponibles durante una semana.<\/p>\n\n\n\n<figure class=\"wp-block-image alignright size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"450\" height=\"352\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2022\/08\/EstacionMeteorologica01.png\" alt=\"Estaci\u00f3n Meteorol\u00f3gica 01\" class=\"wp-image-13928\" \/><\/figure>\n\n\n\n<p><a href=\"https:\/\/www.dropbox.com\/s\/i9x6j3klfv0hzhf\/2021_10_EstMeteorologica.csv?dl=0\">2021_10_EstMeteorologica.csv<\/a><\/p>\n\n\n\n<p>a. Realice la lectura de los datos desde el <code>archivo.csv<\/code> en una tabla de Pandas, muestre los nombres de las columnas<\/p>\n\n\n\n<p>b. A\u00f1ada una columna de fecha-hora con tipo de dato <code>datetime<\/code> unificando las columnas \"<code>Date<\/code>\" y \"<code>Time<\/code>\"<\/p>\n\n\n\n<p>c. Realice la gr\u00e1fica de los datos obtenidos para la variable temperatura \"<code>TEMP<\/code>\" vs \"<code>fecha<\/code>\".<\/p>\n\n\n\n<p>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1069\" height=\"602\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2015\/07\/EstacionMeteorologica02.png\" alt=\"estaci\u00f3n meteorol\u00f3gica gr\u00e1fica datos \" class=\"wp-image-16149\" \/><\/figure>\n\n\n\n<p><em><strong>Referencia<\/strong><\/em>: Basic Time Series Plotting. Unidata. https:\/\/unidata.github.io\/python-training\/workshop\/Time_Series\/basic-time-series-plotting\/<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/p>\n\n\n\n<p><a href=\"#archivocsv\">Archivo csv<\/a><\/p>\n\n\n\n<p><a href=\"#fechas\">fechas<\/a><\/p>\n\n\n\n<p><a href=\"#grafica\">gr\u00e1fica<\/a><\/p>\n\n\n\n<p><a href=\"#intervalos\">intervalos fecha<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">Soluci\u00f3n propuesta<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"archivocsv\">literal a - leer archivo.csv<\/h3>\n\n\n\n<p>Para leer o cargar el archivo.csv con pandas y realizar la gr\u00e1fica se usar\u00e1n las librer\u00edas \"pandas\" y \"matplotlib\". La lectura del archivo usa los par\u00e1metros de separador de datos <code>';'<\/code> y separador decimal <code>','<\/code>. El nombre del archivo es parte del bloque de ingreso.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>tabla = pd.read_csv(narchivo, sep=';',decimal=',')<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/p>\n\n\n\n<p><a href=\"#archivocsv\">Archivo csv<\/a><\/p>\n\n\n\n<p><a href=\"#fechas\">fechas<\/a><\/p>\n\n\n\n<p><a href=\"#grafica\">gr\u00e1fica<\/a><\/p>\n\n\n\n<p><a href=\"#intervalos\">intervalos fecha<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"fechas\">literal b - fechas<\/h3>\n\n\n\n<p>Para manejar las fechas, se concatenan los valores de las columnas <code>'Date'<\/code> y <code>'Time'<\/code> conformando una cadena de caracteres en cada casilla de la columna <code>'fecha'<\/code>.<\/p>\n\n\n\n<p>Para manejar los datos y operaciones con fechas se usan el tipo de datos <code>datetime<\/code>. El formato de lectura se indica como<code>\"%d\/%m\/%Y %H:%M:%S\"<\/code> dado por una cadena de caracteres<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>fechaformato = \"%d\/%m\/%Y %H:%M:%S\"\ntabla&#091;'fecha'] = pd.to_datetime(tabla&#091;'fecha'],\n                                format=fechaformato)<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/p>\n\n\n\n<p><a href=\"#archivocsv\">Archivo csv<\/a><\/p>\n\n\n\n<p><a href=\"#fechas\">fechas<\/a><\/p>\n\n\n\n<p><a href=\"#grafica\">gr\u00e1fica<\/a><\/p>\n\n\n\n<p><a href=\"#intervalos\">intervalos fecha<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"grafica\">literal c - gr\u00e1fica<\/h3>\n\n\n\n<p>La gr\u00e1fica se realiza usando los datos de las columnas de fecha y temperatura.<\/p>\n\n\n\n<p>Instrucciones Python<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# lecturas archivo.csv de estaci\u00f3n meteorol\u00f3gica\nimport pandas as pd\nimport matplotlib.pyplot as plt\n\n# INGRESO\nnarchivo = &quot;2021_10_EstMeteorologica.csv&quot;\n\n# PROCEDIMIENTO\ntabla = pd.read_csv(narchivo, sep=';',decimal=',')\nn = len(tabla)\n\n# fechas concatenando columnas de texto\ntabla&#x5B;'fecha'] = tabla&#x5B;'Date']+' '+tabla&#x5B;'Time']\n\n# convierte a datetime\nfechaformato = &quot;%d\/%m\/%Y %H:%M:%S&quot;\ntabla&#x5B;'fecha'] = pd.to_datetime(tabla&#x5B;'fecha'],\n                                format=fechaformato)\n# SALIDA\nprint('columnas: ', list(tabla.keys()))\n\n# grafica\nx_horas = tabla&#x5B;'fecha']\ny_temp  = tabla&#x5B;'TEMP']\nplt.plot(x_horas,y_temp,'*')\nplt.title('Temperatura')\nplt.grid()\nplt.show()\n<\/pre><\/div>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/p>\n\n\n\n<p><a href=\"#archivocsv\">Archivo csv<\/a><\/p>\n\n\n\n<p><a href=\"#fechas\">fechas<\/a><\/p>\n\n\n\n<p><a href=\"#grafica\">gr\u00e1fica<\/a><\/p>\n\n\n\n<p><a href=\"#intervalos\">intervalos fecha<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<p id=\"intervalos\">Separar datos por d\u00edas y realizar gr\u00e1fica<\/p>\n\n\n\n<p>d. Para realizar un an\u00e1lisis por d\u00eda y comparar entre varios d\u00edas, se requiere encontrar los intervalos de inicio y fin de d\u00eda.<\/p>\n\n\n\n<p>e. Realizar la gr\u00e1fica comparativa de los d\u00edas.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1077\" height=\"607\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2015\/07\/EstacionMeteorologica03.png\" alt=\"estaci\u00f3n meteorol\u00f3gica gr\u00e1fica superpuesta por d\u00edas\" class=\"wp-image-16150\" \/><\/figure>\n\n\n\n<p>Soluci\u00f3n propuesta<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">literal d - varios intervalos por fecha<\/h3>\n\n\n\n<p>Los intervalos se pueden entregar como una lista de los \u00edndices de las filas donde cambia el d\u00eda.<\/p>\n\n\n\n<p>Para que las gr\u00e1ficas se superpongan en las mismas horas, sin cambiar de d\u00eda, se realiza una operaci\u00f3n de desplazamiento&nbsp;<code>pd.Timedelta(days=j)<\/code> a las fechas antes de hacer cada l\u00ednea de gr\u00e1fica.<\/p>\n\n\n\n<p>Las etiquetas en el eje x se cambia al formato <code>'%H:%M'<\/code> mediante la librer\u00eda <code>matplotlib.dates<\/code> y la instrucci\u00f3n <code>DateFormatter<\/code>.<\/p>\n\n\n\n<p>La gr\u00e1fica para 7 d\u00edas se presenta muchos datos, por lo que para an\u00e1lisis es preferible algo m\u00e1s simplificado, como comparar dos d\u00edas para simplificar visualmente.<\/p>\n\n\n\n<p>Instrucciones Python<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# lecturas archivo.csv de estaci\u00f3n meteorol\u00f3gica\nimport pandas as pd\nimport matplotlib.pyplot as plt\nfrom matplotlib.dates import DateFormatter, DayLocator\n\n# INGRESO\nnarchivo = &quot;2021OctubreEstMetorologica.csv&quot;\n\n# PROCEDIMIENTO\ntabla = pd.read_csv(narchivo, sep=';',decimal=',')\nn = len(tabla)\n\n# fechas concatenando columnas de texto\ntabla&#x5B;'fecha'] = tabla&#x5B;'Date']+' '+tabla&#x5B;'Time']\n\n# convierte a datetime\nfechaformato = &quot;%d\/%m\/%Y %H:%M:%S&quot;\ntabla&#x5B;'fecha'] = pd.to_datetime(tabla&#x5B;'fecha'],\n                                format=fechaformato)\n\n# serie por d\u00edas\ndiaIndice = &#x5B;0] # indice inicial\nfor i in range(1,n-1,1):\n    i0_fecha = tabla&#x5B;'fecha']&#x5B;i-1]\n    i1_fecha = tabla&#x5B;'fecha']&#x5B;i]\n    if i0_fecha.day != i1_fecha.day:\n        diaIndice.append(i)\ndiaIndice.append(len(tabla)-1) # indice final\nm = len(diaIndice)\n\n# SALIDA\nprint('columnas: ', list(tabla.keys()))\nprint('SerieDia: ',diaIndice)\nprint('d\u00edas en serie: ', len(diaIndice))\n\n# grafica\nfigura, grafica = plt.subplots()\nmarcador = &#x5B;'.','o','v','^','&lt;','&gt;','1']\nfor j in range(0,7,1):\n    i0 = diaIndice&#x5B;j]\n    i1 = diaIndice&#x5B;j+1]\n    x_horas = tabla&#x5B;'fecha']&#x5B;i0:i1]-pd.Timedelta(days=j)\n    y_temp  = tabla&#x5B;'TEMP']&#x5B;i0:i1]\n    etiqueta = str(tabla&#x5B;'fecha']&#x5B;i0].month)+'-'\n    etiqueta = etiqueta + str(tabla&#x5B;'fecha']&#x5B;i0].day)\n\n    grafica.scatter(x_horas,y_temp,\n                    marker = marcador&#x5B;j%7],\n                    label=etiqueta)\n\n# formato de eje\ngrafica.xaxis.set_major_formatter(DateFormatter('%H:%M'))\nplt.legend()\nplt.title('Temperatura')\nplt.grid()\nplt.show()\n\n<\/pre><\/div>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"otros-temas-de-desarrollo\">Otros temas de desarrollo<\/h2>\n\n\n\n<p><a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-unidades\/mn-u08\/regresion-polinomial-de-grado-m-ejercicio-temperatura-para-un-dia\/\" data-type=\"post\" data-id=\"8213\">Regresi\u00f3n polinomial de grado m<\/a> \u2013 Ejercicio Temperatura para un d\u00eda<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/p>\n\n\n\n<p><a href=\"#archivocsv\">Archivo csv<\/a><\/p>\n\n\n\n<p><a href=\"#fechas\">fechas<\/a><\/p>\n\n\n\n<p><a href=\"#grafica\">gr\u00e1fica<\/a><\/p>\n\n\n\n<p><a href=\"#intervalos\">intervalos fecha<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ejercicio Archivo csv fechas gr\u00e1fica intervalos fecha Ejercicio De una estaci\u00f3n meteorol\u00f3gica se obtiene un archivo.csv con los datos de los sensores disponibles durante una semana. 2021_10_EstMeteorologica.csv a. Realice la lectura de los datos desde el archivo.csv en una tabla de Pandas, muestre los nombres de las columnas b. A\u00f1ada una columna de fecha-hora con [&hellip;]<\/p>\n","protected":false},"author":8043,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"wp-custom-template-entrada-fp-unidades","format":"standard","meta":{"footnotes":""},"categories":[109],"tags":[],"class_list":["post-10984","post","type-post","status-publish","format-standard","hentry","category-fp-u08"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/10984","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/users\/8043"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/comments?post=10984"}],"version-history":[{"count":4,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/10984\/revisions"}],"predecessor-version":[{"id":22707,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/10984\/revisions\/22707"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=10984"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=10984"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=10984"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}