datos

Pandas (VI)

Y mucho más Esto solo ha sido un pequeño vistazo con cosas que considero importantes pero que no tienen que ser las más importantes. Podéis echarle un ojo a: sort, max, min, head, tail, unique, groupby, apply, transform, stack, unstack, mean, std, isnull, value_counts, notnull, rank, dropna, fillna, describe, cov,… Leer más »Pandas (VI)

Pandas (V)

Antes de nada, el contexto, para esta serie de entradas se va a usar lo siguiente: [crayon-5df2a90d688c0162119619/]   Y sin más preámbulos seguimos con esta quinta parte de la serie. Unir (merge/join) Pandas dispone de la función merge (documentación oficial) que permite ‘unir’ datos al estilo de como se hace… Leer más »Pandas (V)

Pandas (IV)

Antes de nada, el contexto, para esta serie de entradas se va a usar lo siguiente: [crayon-5df2a90d69086549934534/]   Y sin más preámbulos seguimos con esta cuarta parte de la serie. Concatenando datos Para concatenar ficheros se usa la función pd.concat (documentación oficial]. Un ejemplo rápido sería el siguiente: [code language=”Python”]… Leer más »Pandas (IV)

Pandas (III)

Antes de nada, el contexto, para esta serie de entradas se va a usar lo siguiente: [crayon-5df2a90d6944f896025511/]   Y sin más preámbulos seguimos con esta tercera parte de la serie. Trabajando con datos, indexación, selección,… ¿Cómo podemos seleccionar, añadir, eliminar, mover,…, columnas, filas,…? Para seleccionar una columna solo hemos de… Leer más »Pandas (III)

Pandas (I)

Antes de nada, el contexto, para esta serie de entradas se va a usar lo siguiente: [crayon-5df2a90d6af92165881395/] Y sin más preámbulos… ¿Qué es Pandas? Pandas es una librería que proporciona estructuras de datos flexibles y permite trabajar con la información de forma eficiente (gran parte de Pandas está implementado usando… Leer más »Pandas (I)

Leer datos de Arduino desde Python

Introducción

En este artículo vamos a ver cómo leer datos procedentes de una plataforma Arduino con Python. Para quienes no lo conozcáis, Arduino es una plataforma de hardware libre concebida para crear prototipos de manera rápida y fácil usando componentes electrónicos. Gracias a Arduino vamos a alejarnos un poco de lo que solemos ver en este blog, que es solo software, y vamos a poder interactuar con el mundo real de una manera más directa.
Arduino Uno
Este artículo nace gracias a mi reciente incorporación a Aerobot, el club de robótica de mi escuela, donde iré explorando las posibilidades de Arduino y Python 🙂
En esta entrada se han usado python 3.3.3, numpy 1.8.0, pyserial 2.7 y matplotlib 1.3.1.

Prefacio: ¿cómo funciona?

En este artículo no vamos a ver en detalle qué es Arduino o el lenguaje con el que se programa. Para ello os remito a gente que sabe mucho más que nosotros: al final del artículo incluyo unos enlaces que os pueden interesar si queréis profundizar en este tema. Sin embargo, sí que vamos a explicar brevemente cómo es el proceso de escribir un programa para Arduino, por razones que en seguida veremos.
Tal y como se detalla en la documentación, el proceso de compilación en Arduino funciona a grandes rasgos de la siguiente manera:

  1. Se escribe un programa (sketch) en el IDE de Arduino en C o C++.
  2. El IDE comprueba que la sintaxis es correcta y añade #include "Arduino.h" y una función main() propia de la placa.
  3. El programa se compila con avr-gcc y se manda el binario a la placa.
  4. Una vez Arduino tiene el programa y mientras esté alimentado, el programa se ejecutará, normalmente de manera indefinida.

Esta explicación viene para aclarar que, al menos en este artículo, no vamos a programar nuestra placa en Python. Por el proceso que hemos visto, las únicas maneras de hacer esto serían:

  • Traducir un subconjunto de Python a C/C++, compilarlo y subirlo a la placa. Después de una búsqueda rápida en Google no tengo noticias de que nadie haya intentado esto.
  • Escribir un sketch que defina un protocolo de comunicación entre Arduino y Python. Este es el enfoque tomado por estos proyectos:
    • https://github.com/vascop/Python-Arduino-Proto-API-v2
    • https://github.com/thearn/Python-Arduino-Command-API
    • https://github.com/lekum/pyduino

Con el segundo método no tenemos disponibles todas las funciones de Arduino, de modo que solo sirve para prototipar programas. Hoy me voy a olvidar de esto y voy a usar Arduino para programar la placa y Python para obtener los datos.
Leer más »Leer datos de Arduino desde Python

Cómo leer y escribir datos en archivos con NumPy

Introducción

Hoy vamos a ver rápidamente cómo leer datos desde un archivo con NumPy y también cómo escribirlos. Es algo a lo que tendremos que recurrir con mucha frecuencia, ya sea porque hemos recogido nuestros datos de un experimento y los tenemos almacenados en un fichero de texto, porque los hemos recibido por otras fuentes o porque queremos separar lo que es la lógica del programa de los datos con los que opera.
Ya comentamos hace tiempo cómo crear matrices en Python a partir de listas, utilizando rangos numéricos, etc. Lo bueno que tienen las funciones de NumPy que nos ayudan a desempeñar estas tareas es que no tenemos que preocuparnos por el manejo de ficheros con Python, así que leer o escribir será tan fácil como invocar una función.
En esta entrada se ha usado python 2.7.3 y numpy 1.6.2 y es compatible con python 3.2.3

Lectura

NumPy nos ofrece varias funciones para cargar datos en forma matricial, pero la que usaremos con más frecuencia es la función loadtxt. Su único argumento obligatorio es un nombre de archivo o un objeto file desde el que leer los datos.
Leer más »Cómo leer y escribir datos en archivos con NumPy