Archivo: repositorio_03_IO.py
En este archivo se muestran ejemplos prácticos para leer datos desde diferentes formatos de archivos y para guardarlos en diferentes formatos.
Carga de datos a mano
Cargar datos a mano
from numpy import *
import matplotlib.pyplot as plt
datos_x1 = arange(0,100,5)
datos_y1 = [-2.02, -0.16, 1.76, 0.28, 0.37, 1.83, 2.92, 2.11,
3.06, 2.36, 0.57, 5.16, 4.64, 4.4 , 7.44, 4.48,
5.22, 6.2, 5.7, 6.64]
datos_x2 = linspace(15,80,10)
datos_y2 = array([0.7, 1.06, 0.35, 0.1, 1.6, 2.73, 1.22, 1.16, 3.58, 2.52] )
plt.figure()
plt.plot(datos_x1, datos_y1, 'o-')
plt.plot(datos_x2, datos_y2, '.-')
plt.xlabel('Eje X')
plt.ylabel('Eje Y')
Carga de datos desde CSV
Cargar datos desde un archivo CSV u otro archivo de texto plano
from numpy import *
import matplotlib.pyplot as plt
# Cargamos los datos completos en una matris
DATOS_todos = genfromtxt('decaimiento.csv', delimiter=',' )
# El parámetro 'delimiter' nos dice cual es el separador entre columnas
# Si el separador entre columnas es un espacio va ' ' y si es un TAB va '\t'
# Extraemos cada columna por separado en un vector
datos_columna0 = DATOS_todos[:,0]
datos_columna1 = DATOS_todos[:,1]
datos_columna2 = DATOS_todos[:,2]
# graficamos
plt.figure()
plt.errorbar( datos_columna0 , datos_columna1 , yerr=datos_columna2 )
plt.xlabel('Eje X')
plt.ylabel('Eje Y')
Carga de datos desde CSV con tiempos
from numpy import *
import matplotlib.pyplot as plt
from datetime import datetime
def tiempo_a_seg(txt):
"Funcion para convertir texto con tiempos en segundos"
tiempo = datetime.strptime(txt, '%H:%M:%S.%f').time()
return tiempo.second+tiempo.microsecond/1e6
# Cargamos los datos completos
# Especificamos que saltee cabecera y pie de archivo
# Usamos un conversor para la columna 3
datos = genfromtxt('datos_tiempos.csv', delimiter=',' ,
skip_header=3 , skip_footer=3 ,
converters = {3: tiempo_a_seg}, encoding='utf-8')
# Extraemos la columna 3
tiempos = datos[:,3]
plt.plot(tiempos,'.-')
Carga de datos desde un excel
Cargar datos desde un archivo tipo excel
from numpy import *
import matplotlib.pyplot as plt
import pandas as pd # solo lo vamos a usar para leer EXCEL
datos = pd.read_excel('dolar.xlsx', sheet_name=0)
# Veamos cuales son las columnas:
print(datos.columns.tolist())
fecha = datos['Fecha']
dolar = datos['Dolar']
plt.plot( fecha , dolar )
plt.xlabel('fecha')
plt.ylabel('dolar [$]')
plt.grid(True)
Carga de datos desde un archivo .mat de matlab
Cargar datos desde un archivo .mat de MATLAB
from numpy import *
import matplotlib.pyplot as plt
from scipy.io import loadmat
# Importamos los datos del archivo
datos = loadmat('archivo_matlab.mat')
# Veamos qué variables fueron guardadas en el archivo:
for nombre_variable in datos.keys():
print(nombre_variable)
tt = datos['tt']
ch2 = datos['ch2']
ch3 = datos['ch3']
plt.plot( tt , ch2 , label='canal 1')
plt.plot( tt , ch3 , label='canal 2' )
plt.xlabel('tiempo [s]')
plt.ylabel('canales osciloscopio [V]')
plt.legend()
plt.grid(True)
Carga de datos desde un archivo NPZ (de NumPy)
Cargar datos desde un archivo NPZ
from numpy import *
import matplotlib.pyplot as plt
# Generamos datos de prueba
datos=load('datos_de_ejemplo.npz', allow_pickle=True)
for item in datos.keys():
print(item)
xx = datos['xx']
yy = datos['yy']
plt.plot(xx,yy)
plt.xlabel('xx')
plt.ylabel('yy')
plt.grid(True)
Guardar datos en un archivo NPZ (de NumPy)
Guardar datos en un archivo NPZ (de NumPy)
from numpy import *
import matplotlib.pyplot as plt
# Generamos datos de prueba
xx = linspace(0,10,1000)
yy = ( 1+sin(xx*5) ) * ( 1 + xx**2 )
# plt.plot(xx,yy)
# los guardamos
savez('datos_de_ejemplo.npz' , xx=xx , yy=yy )
Guardar datos en un archivo CSV
Guardar datos en un archivo CSV
from numpy import *
import matplotlib.pyplot as plt
# Generamos datos de prueba
xx = linspace(0,10,1000)
yy = ( 1+sin(xx*5) ) * ( 1 + xx**2 )
# plt.plot(xx,yy)
# los guardamos
savetxt('datos_de_ejemplo.csv', array([xx,yy]).T , delimiter="," , header='xx,yy')
# La expresión: array([ ACA VAN LOS VECTORES SEPARADOS POR COMAS ]).T
# Es necesaria para que los datos se exporten como columnas
savetxt('datos_de_ejemplo2.csv', array([xx,yy]).T , delimiter="\t" , header='xx yy', fmt='%5f')
# En esta segunda version, la separación son TABs y el formato numérico es mas corto
Guardar datos en un archivo .mat de MATLAB
Guardar datos en un archivo .mat de MATLAB
from numpy import *
import matplotlib.pyplot as plt
from scipy.io import savemat
# Generamos datos de prueba
xx = linspace(0,10,1000)
yy = ( 1+sin(xx*5) ) * ( 1 + xx**2 )
# plt.plot(xx,yy)
# los guardamos
savemat('datos_de_ejemplo.mat' , { 'xx': xx , 'yy': yy } )
# Los datos son guardados a partir de un diccionario
# - los keys del diccionario van a ser los nombres de las variables en el archivo .mat
# - los contenidos, los vectores correspondientes a cada variable