Reseña del libro “Learning NumPy Array” de Ivan Idris

El otro día me contactaron desde la editorial Packt Publishing y me propusieron hacer una reseña del libro “Learning NumPy Array”, de Ivan Idris, y no solo me regalaron la versión electrónica sino que encima me enviaron una copia física y me propusieron hacer un concurso para los lectores. ¡Genial! 🙂

Desde aquí agradezco su cordialidad y simpatía a la gente de Packt, y os dejo sin más dilación con la reseña del libro. Del concurso hablamos más abajo 😉

“Learning NumPy Array” es un libro escueto que va directo al grano, utilizando las versiones más modernas de todas las bibliotecas y muy instructivo. Sin embargo, puede sorprenderte por el nivel de matemáticas requerido y porque usa una multitud de paquetes más aparte de NumPy. Le doy un 3.5/5.

Si estás interesado como yo en empezar a hacer análisis de datos con Python y has oído hablar de pandas o StatsModels pero no sabes por qué los necesitas o cómo usarlos, este libro te va a gustar.
El capítulo 1 empieza desde el principio y explica cómo instalar Python, NumPy y el resto de paquetes necesarios en Windows, Linux y Mac OS X (este último es el sistema operativo usado por el autor), e incluso da instrucciones de cómo compilar el código fuente. A continuación abre el apetito del lector escribiendo un programa muy simple en Python haciendo uso de los arrays de NumPy.

El capítulo 2 es una introducción a NumPy que abarca desde los conceptos más primitivos (arrays, tipos de datos) hasta operaciones muy sofisticadas como la indexación avanzada, la expansión (broadcasting) o incluso el uso de strides, pasando por manipulación de arrays, distinción entre vistas y copias y mucho más. Al terminar el capítulo se tiene una visión bastante completa de la potencia de los arrays de NumPy y sus métodos.

Los capítulos 4, 5 y 6 son el cuerpo central del libro y tratan de cómo hacer análisis de datos con NumPy. En ellos se introducen numerosos conceptos matemáticos y estadísticos, y en ocasiones se echa mano de bibliotecas como pandas, SciPy o StatsModels. Por supuesto todas las gráficas del libro están hechas con matplotlib. El capítulo 4 comienza analizando datos meteorológicos disponibles en abierto para después explorar varias técnicas de análisis predictivo en el capítulo 5 y hacer una introducción al análisis de series temporales (filtrado, suavizado…) en el capítulo 6.

Por último, en el capítulo 7 trata de cómo depurar programas en Python, analizar su rendimiento (profiling) y escribir tests para mejorar la robustez de nuestros programas. Sin duda se agradece que estos temas tan importantes aparezcan tratados en el libro. En el capítulo 8 se mencionan brevemente otras bibliotecas del ecosistema Python científico: SciPy para integración numérica e interpolación, Cython para acelerar el código, scikit-learn para hacer agrupamiento (clustering) y finalmente se hace una sorprendente mención a Blaze como el futuro de NumPy.

Todos los capítulos traen numerosos ejemplos de código y gráficas, aunque en mi opinión el contexto o el programa en sí a veces necesitarían explicaciones más detalladas. El código además se puede descargar de la web de la editorial. Sin duda la mejor manera de aprovechar el libro es tenerlo junto al ordenador e ir explorando los conceptos a medida que se vayan aprendiendo.

Me sorprendió que a pesar del título realmente se utilizasen otras muchas bibliotecas del ecosistema Python científico, algo que no se menciona tampoco en la contraportada. Me he tomado la libertad de crear un archivo de dependencias para instalar todos los paquetes necesarios.

La instalación de paquetes en Python es siempre un asunto delicado (aunque cada vez menos, afortunadamente), y tengo que decir que no estoy de acuerdo con el criterio elegido por el autor. Mi recomendación personal sería ignorar el gestor de paquetes del sistema operativo (si lo tiene) y utilizar algunas de las muchas distribuciones portables de Python que existen, ya que la experiencia es la misma en todos los sistemas. Para mí las mejores son, sin duda, Anaconda y Pyzo (esta última incluso se puede usar desde un lápiz USB, poniendo fin a los clásicos problemas de privilegios de instalación). Y como gestor de paquetes, sin duda conda es mucho mejor que pip en nuestro contexto, puesto que descarga paquetes binarios en todas las plataformas y gestiona las dependencias de manera más efectiva.

El libro da una visión muy rica de cómo hacer análisis de datos con Python, pero el lector debe conocer no solo el lenguaje, sino también los conceptos estadísticos y matemáticos utilizados. En la línea de otros libros que he leído de Packt, las largas explicaciones teóricas brillan por su ausencia y el texto va directamente al grano. Si ya has hecho análisis de datos en otros lenguajes o tienes la formación adecuada sin duda disfrutarás del libro; si no, es posible que te pierdas en algunas partes.
Lo que más me ha gustado de “Learning NumPy Array” es el hecho de que utilice NumPy para analizar los datos, porque de esta forma se ven rápidamente sus limitaciones a la hora de tratar con datos heterogéneos o datasets incompletos y se justifica sobradamente el uso de pandas. Si alguna vez te has preguntado para qué necesitas pandas si tienes NumPy, este es tu libro.

En definitiva, una lectura interesante que sin duda resultará útil a muchos, directa al grano y con muchos ejemplos de código.


¿Te ha interesado la reseña? ¿Te gustaría ganar la copia electrónica que Packt Publishing sortea para los lectores de Pybonacci? Solo tienes que echar un vistazo en http://www.packtpub.com/learning-numpy-array/book, donde puedes también descargar un capítulo de ejemplo del libro, y dejarnos un comentario diciendo qué es lo que más te interesa del libro.

El plazo termina el 15 de agosto de 2014 a las 00:00, y entre los mejores comentarios haremos un sorteo riguroso y avisaremos al ganador por email. ¡Mucha suerte y muchas gracias por leer! 🙂
 

16 pensamientos sobre “Reseña del libro “Learning NumPy Array” de Ivan Idris”

  1. Voy a comenzar un doctorado pronto. (O eso espero).
    Y voy a tener que usar Matlab para el análisis de datos, porque es lo que “se usa en el laboratorio”.
    El resto del mundo está haciendo todo con Python y NumPy y ScyPy. Yo no quiero quedarme atrás. Puedo usar las librerías propietarias de Matlab, decirle al mundo lo que hice, o puedo usar Python y todos sus open source libreries y decirle al mundo lo que hice y cómo lo hice.
    Considerame para el libro, si esta parece una buena razón. 🙂

    1. A mí también me parece una razón excelente 🙂 ¡Muchas gracias por participar!
      Por curiosidad, ¿de dónde eres? No lo he dicho en la entrada pero pensaba donar mi copia física a una biblioteca. Ya doné una a la de mi universidad, pero estoy abierto a sugerencias.
      ¡Un saludo!

  2. Hola, soy profe interino de mate en secundaria. Por mi cuenta voy aprendiendo Python 3 y librerías matemáticas como Matplotlib, Numpy, Sympy, etc. He escrito un pdf de métodos para cálculo de raíces con Octave, pero me interesa más hacerlo con Python porque Python me parece un lenguaje muy robusto pero sin las complicaciones de C++ o Java. Además Python es libre y una herramienta muy poderosa en ciencias sin tener que utilizar software de pago por todos conocido. Actualmente estoy en el paro y no me puedo permitir comprar libros de programación basados en Python.
    Gracias

  3. Aunque en nuestro caso quizás sobren presentaciones, como asociación sin ánimo de lucro tratamos de ofrecer formación gratuita a estudiantes de ingeniería de procesos químicos. Si fuéramos los afortunados, el libro quedaría a disposición de quien lo necesitase en la Universidad de Alicante.
    En la industria de procesos se generan gran cantidad de datos heterogéneos provenientes de sensores, controladores, especificaciones de reactivos/productos, etc. El capítulo de Signal Processing, junto al resto del libro, parece muy interesante.
    ¡Buena suerte a todos!
    PD: Gracias Pybonacci y Packt Publishing por el sorteo 🙂

  4. Saludos desde Venezuela!!, Soy Profe. de Física egresado de la Universidad Experimental Pedagógica Experimental Libertador (UPEL) recientemente, siguiendo mi pasión por el estudio me encuentro realizando un Postgrado de Física orientado a la Astrofísica en la ULA, desafortunadamente en mi pregrado no vi ninguna asignatura orientada a la programación, deficiencia que he ido solventado ya que en la Astronomía moderna se necesita tener conocimiento en algún lenguaje de programación para la reducción de datos e infinidades de cosas. He decido aprender a programar en el lenguaje de programación Python, será una tarea dura pero no inalcanzable.
    Los vídeos son muy pedagógico los cuales me han ayudado mucho, espero sigan con ese proyecto.

    1. ¡Hola Álvaro, mucho gusto! Efectivamente en astronomía Python se ha convertido en el lenguaje rey últimamente. Gracias por participar, un saludo 🙂

  5. Buenas, soy estudiante de la Universidad Nacional de Luján, en camino a realizar mi tesis sobre temas de Big Data y Recuperación de Información, aunque actualmente me encuentro también realizando una investigación sobre Machine Learning con dos colegas. En paralelo hacemos cosas con R y Python (Pandas + Scikit Learn + Numpy).
    Entramos a Numpy de forma tangencial, debido a Pandas, pero investigar a fondo Numpy es una materia pendiente.
    Sigo el blog hace rato vía RSS y es muy bueno el laburo que hacen. Los felicito.

  6. Vaya cambio de imagen que habéis dado, tenía pendiente entrar en vuestra nueva casa y que mejor motivo. Pues nada, estoy estudiando física por hobby y cuando llegue el momento de elegir proyecto seguro que va a tener que ver con física computacional y si puede ser, será en python, así que un libro así no me vendría mal 🙂 .

  7. Como hay menos de diez participantes, se asigna un número del 1 al 9 a los comentarios en orden cronológico y la cifra más significativa del número ganador del Cuponazo de la ONCE de mañana 15 de agosto será quien se lleve la copia electrónica. Si ese número no corresponde a nadie avanzamos una posición, y así hasta que haya ganador.
    En base al resultado, me reservo el derecho de donar mi copia física a algún no-premiado o a alguna biblioteca pública cerca de donde viva con criterios de interés del comentario, cercanía geográfica (por los gastos de envío, que los pagaré yo) u otros 🙂

  8. Obviamente ayer me equivoqué y quise decir de 0 a 9, porque en Python se empieza por 0 y los números de la lotería también 🙂
    ¡Y nuestro ganador es Alvaro Guaimare! Muchísimas gracias a todos por participar, en seguida notificaremos a la editorial del ganador y le harán llegar su libro. A la vuelta de las vacaciones decido qué hacer con mi copia física.
    ¡Un saludo a todos!

  9. Saludos Juan Luis! ya respondí en correo que me enviaron, estaré esperando el excelente aporte, entre poco tendré un buen libro para seguir ampliando mi conocimiento en programación. Antemano agradezco el aporte a PYBONACCI.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

twenty seven − = 17