sábado, 31 de octubre de 2020

Tratamiento y visualización de ficheros con Python

En esta entrada voy a dar algunas pautas de utilización de ficheros con Python y de su tratamiento para analizar los datos estadísticos que estos contienen.
Para leer un archivo basta con hacer esto: 

file_for_reading = open('prueba.txt', 'r')

Como se puede apreciar, no escribimos el directorio, la instrucción se lee del directorio raíz de la instalación de Anaconda que suele ser C:\Usuarios\usuario\
En mi caso particular es  C:\Users\Administrador

Para escribir:

file_for_writing = open('prueba.txt', 'w')

para añadir datos

file_for_appending = open('prueba.txt', 'a')

Cuando escribimos no hay que olvidarse de cerrar el fichero

file_for_writing.close()

Para evitar que se nos olvide cerrar el archivo podemos hacer una función que lo cierre siempre y llamar a la función.

#estructura de lectura de ficheros
with open(nombre_fichero,'r') as f:
datos = function_que_lee_los_datos(f)
# aquí el fichero ya está cerrado pero operamos con el objeto que contiene sus datos (data)

leemos un fichero de principio a fin de este modo  

import re

comienza_con_hash = 0
     with open('input.txt','r') as f:
         for linea in f: # iteramos cada línea del fichero                 if re.match("^#",linea): # si es un comentario no la leemos (las que empiezan con '#'
                       comienza_con_hash += 1 # si comienza con # añadimos 1 al Contador de líneas para r a la siguiente

el ejemplo completo sería de este estilo

#funcion de lectura de ficheros
def function_que_lee_los_datos(f):
    import re
    comienza_con_hash = 0
    with open('prueba.txt','r') as f:
        for linea in f: comienza_con_hash += 1
    f.close()

Del mismo modo podemos crear una función que procese los datos utilizando el objeto Datos

Process(datos)

Leer y visualizar un fichero .csv

Un archivo csv es un archivo cuyas columnas están separadas por comas “,” una forma sencilla de montar un archivo csv es crearlo desde Excel y luego lo abrimos con  notepad++ donde le añadimos las comas* “,” y lo renombramos como  .csv

*Ojo, Hay que asegurarse de que nuestro Excel genere los .csv con comas, pues puede estar configurado (sobre todo en castellano) con punto y coma ‘;‘ para no confundirlo con las comas ‘,’  decimales. Para evitar problemas, sustituiremos las comas decimales ‘,’ por puntos ‘.’ Y posteriormente sustituiremos los punto y coma ‘;’ por comas ‘,’ de este modo el interprete de Jupyter ya leerá correctamente nuestro archivo .csv.

El archivo csv debe estar en el directorio de trabajo que como hemos dicho suele ser C:\Usuarios\Usuario_principal
Una vez colocado aquí el fichero .csv podemos leerlo con 

import pandas as pd
def load_retiro():
    return pd.read_csv("retiro.csv")

En nuestro caso se trata de las temperaturas del observatorio de Madrid -Retiro podemos ver las primeras líneas del fichero con estas líneas

datos = load_retiro()
datos.head()


Tratamiento de ficheros con Python

para mostrar la información del archivo

datos.info

Y para mostrar una descripción de los datos ponemos:

datos.describe()

Visualizar datos de un archivo .csv con Python


Count nos muestra el número de filas, mean el valor medio, std muestra la desviación estándar, min el valor mínimo, 25% muestra el percentil 25% , etc y max el máximo.
Las siguientes instrucciones nos mostraran unos histogramas mostrando en número de veces que aparece un valor dentro de un rango.

%matplotlib inline
import matplotlib.pyplot as plt
datos.hist(bins=13, figsize=(20,15))
plt.show()

Visualizar histogramas de un archivo con Python

Por ejemplo enero muestra el número de veces que aparecen datos por debajo de 2 ºC , entre 2 y 2,5 ºC , entre 2,5 y 3 ºC etc.
Hay muchas más funciones de Phyton en diferente librerías con la que obtener un montón de información. Pero para obtener gráficos se utiliza mucho matplolib que es muy completa

La instrucción value_counts() nos permite examinar los valores que toma una columna del dataset y cuantas veces aparece dicho valor en todo el dataset. 

Para dividir el dataset en dos partes, una de entrenamiento y otra de pruebas

#dividimos el dataset en dos, uno de entrenamiento con el 80% de los datos y otro de testeo con el 20%.

#Random state es una semilla aleatoria

from sklearn.model_selection import train_test_split

train_set, test_set = train_test_split(datos, test_size=0.2, random_state=42)

Seleccionar y entrenar el modelo

#tomamos como entrenamiento desde el principio hasta el297 y como tets desde el 297 hasta el final

X_train, X_test, y_train, y_test = X[:297], X[297:], y[:297], y[297:], AÑO

No hay comentarios:

Publicar un comentario