Artículos por Kiko Correoso

Resaca PyData Madrid 2016

Este es un mini resumen de parte del trabajo y experiencias vividas durante muchos meses trabajando en la organización de la primera PyData por estos lares.

¿Cómo?

Muchos de los que nos leéis, seguramente, ya estéis envueltos en meetups locales, talleres,... Estos eventos son importantísimos para que la comunidad se conozca a pequeña escala y es una labor regular de mucha gente que os agradezco ya que es el germen de cosas más grandes. Una vez que hay comunidad local, esta puede contactar con otras comunidades locales o pueden intentar crear un evento que salga de ese ámbito más pequeño o cerrado. Estos eventos mayores hacen que las comunidades locales puedan interactuar en persona con el resto de comunidades locales.

De la experiencia vivida detrás de la asociación Python España desde sus inicios hasta hoy (en realidad, hasta anteayer) he …

Instala pypy 5.0 y numpypy en un virtualenv y juega con Jupyter

Hoy voy a mostrar como usar la última versión de pypy y numpypy en vuestro linux. Para instalar pypy usaremos la versión portable creada por squeaky-pl. Numpypy lo instalaremos en un entorno virtual juntamente con Jupyter para poder hacer las pruebas en un entorno más amigable que la consola de pypy.

Requerimientos

Necesitaremos tener instalada una versión reciente de virtualenv y git.

Al lío

¡Si queréis la versión TL;DR pinchad aquí! Si sois un poco más pacientes y queréis entender un poco lo que vamos a hacer seguid leyento.

Todos los comandos que vienen a continuación los tenéis que meter en un terminal. Primero creamos un directorio que se llamará pypy50 en vuestro $HOME

mkdir $HOME/pypy50

Ahora nos vamos al directorio recién creado y nos descargamos el fichero comprimido que contiene el pypy portable de 64 bits

cd …

Fórmula para el amor

Esta entrada se proyectó hace unos doscientos cuarenta y pico días.

Vamos a representar la siguiente fórmula:

${x}^2 + (y - \sqrt{x^2})^2 = 1$

Si despejamos la $y$ nos quedarán las siguientes soluciones:

$y_{1} = \sqrt{x^2} + \sqrt{1 - x^2}$

$y_{2} = \sqrt{x^2} - \sqrt{1 - x^2}$

En código Python usando Numpy y Matplotlib tendremos lo siguiente:

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
x = np.linspace(-1,1,50)
y1 = np.sqrt(x * x) + np.sqrt(1 - x * x)
y2 = np.sqrt(x * x) - np.sqrt(1 - x * x)
plt.plot(x, y1, c='r', lw = 3)
plt.plot(x, y2, c='r', lw = 3)
plt.show()

Felicidades a quien corresponda.

Idea copiada literalmente de aquí.

Reglas para refactorizar funciones lambda

Un gran ejercicio que podéis hacer de vez en cuando es revisar la documentación oficial de Python. La misma me parece increiblemente completa aunque también un poco anárquica o sin un guión mínimamente claro para seguir diferentes tópicos.

Hoy, revisando el HOWTO de programación funcional, casi al final del documento y sin llamar la atención, he encontrado la siguiente documentación para refactorizar funciones lambda sugerida por Fredrik Lundh. Las reglas que propone para la refactorización de las funciones lambda dicen lo siguiente:

  1. Escribe una función Lambda.
  2. Escribe un comentario explicando qué se supone que hace la función lambda.
  3. Estudia el comentario durante un rato y piensa un nombre que capture la esencia del comentario.
  4. Convierte la función lambda a una declaración def usando el nombre pensado en el anterior paso.
  5. Elimina el comentario.

😛

Feliz año 2016.

Joyas Python del 2015

Por Kiko Correoso

Este es un resumen de algunas joyas que he descubierto este 2015 dentro del mundo Python. Que las haya descubierto en el 2015 no significa que necesariamente sean cosas novedosas pero la mayoría siguen de actualidad. Tampoco es un resumen ordenado. de hecho, es un pequeño cajón de sastre. Tampoco es temático sobre ciencia, aunque la mayoría están relacionadas con ciencia ya que es a lo que me dedico. En las siguientes líneas nombro muchas cosas pero solo incluyo enlaces sobre las joyas de las que quiero hablar.

WEB:

  • En el pasado he trasteado algo con Django para hacer cosas que se puedan compartir con mucha otra gente. Django es un framework web muy completo o, como se suele decir, con baterías incluidas y el de más amplio uso dentro del mundo Python. El hecho de incluir tantas cosas de …

Aprende historia gracias a geocodificación inversa, mapping y wikipedia

El otro día, mientras esperaba en Juan Bravo a un amigo, tuve algo de tiempo para divagar y entre esas divagaciones junté Juan Bravo, Python, Internet, geolocalización, historia,... En fin, que estaba en Juan Bravo, no tenía ni idea de quien era ese señor (llamadme ignorante), tenía algo de tiempo y se me ocurrió poder obtener información de calles a partir de un mapa y de la wikipedia y, de aquellos polvos, estos lodos, y nació map2wiki.

¿Qué es map2wiki?

En pocas palabras, es una aplicación web que te permite buscar una calle/avenida/plaza/... en un mapa y obtener información sobre lo que le da nombre a esa dirección.

¿Por qué no buscarlo directamente en la wikipedia?

Porque eso no es tan divertido y no hubiera aprendido nada sobre Flask, Jinja2, geocodificación inversa, OpenStreetMap, Nominatim, OpenLayers, Javascript, Brython, la …

¿Cómo funciona el método append de una lista en CPython?

Por Kiko Correoso

Vamos a empezar con más preguntas que respuestas.

Como sabéis, las listas de Python son arrays dinámicos. Por otro lado, las tuplas son arrays estáticos.

¿Qué implica que las listas sean arrays dinámicos?

Al ser un array dinámico podemos modificar sus elementos así como extender el array (lista).

¿Cómo funciona lo de extender el array (lista)?

Cada vez que usamos el método append de las listas se crea una copia de la lista original y se añade un elemento a esa copia para luego borrar el array original.

¿Es esto último cierto?

Más o menos.

Todos estaréis conmigo que si cada vez que añadimos un nuevo elemento tenemos que crear una copia y luego eliminar el array original podríamos crear cierto coste/gasto de recursos (en memoria, principalmente, creando copias).

Veamos un poco de código:

import sys

lista = []
for i …

Vamos a comernos el mundo y [Argentina] en Python


 

Edit (2015/11/14):

Quiero agradecer a todos los que se han prestado al juego de la subasta. Al final hemos conseguido donar más de 120 € al proyecto Argentina en Python.

¡¡¡Sois grandes!!!!

Quiero agradecer, especialmente, a Yami y a Ariel su generosidad


 

Hoy nos alejamos un poco de la temática general del blog pero nos metemos de lleno en el tema de cómo crear comunidad, con amor, con dedicación y con mucho esfuerzo, en una apuesta personal de unas personas admirables.

Además del apasionante relato que tenemos hoy, si sigues leyendo, puedes llegar a conseguir una entrada para la PyConES 2015 en Valencia.

En la presente entrada vamos a charlar con Johanna, Manuel y Errante, equipo fullstack de Argentina en Python.

Pero, -¿quiénes son estos?-, os preguntáreis.

Todo esto empezó como la apuesta vital de una persona que ve …

Análisis Cluster (III): Clasificación no supervisada mediante K-medias

(Este es el tercer capítulo de la mini-serie de artículos sobre análisis cluster que estamos haciendo en pybonacci, si todavía no has leído los anteriores artículos les puedes echar un ojo ahora. Escribir esta tercera parte solo ha tardado ¡¡¡tres años en salir!!!).

El algoritmo de k-medias es uno de los algoritmos más sencillos de agrupamiento dentro del campo del aprendizaje automático (machine learning para los hipsters). Sirve para agrupar $N$-elementos en $K$-grupos distintos.

Agrupamiento

(Breve resumen de lo visto en anteriores artículos).

Las técnicas de agrupamiento o análisis Cluster son un tipo de aprendizaje no supervisado ya que no requieren un aprendizaje previo a partir de los datos.
Son métodos para agrupar datos sin etiqueta en subgrupos. Estos subgrupos pretenden reflejar algún tipo de estructura interna.

K-medias

El algoritmo de K-medias es un algoritmo de agrupamiento particional …