Python

Pero la estrella indiscutible de Jupyter es Python, que se está convirtiendo poco a poco en el lenguaje de facto para el análisis de datos, decantando lentamente R, SAS, Matlab...

Lo importante no son los lenguajes, sino el enorme ecosistema de herramientas que han aparecido gracias a la apertura y facilidad de Python.

Jake VanderPlas mantiene una colección de notebooks muy interesantes:

¿Podemos predecir si un vino blanco será bueno?

Existe una base de datos de propiedades químicas de vinos y su valoración en catas que proviene de este paper.

P. Cortez, A. Cerdeira, F. Almeida, T. Matos and J. Reis. Modeling wine preferences by data mining from physicochemical properties. In Decision Support Systems, Elsevier, 47(4):547-553, 2009.

Se trata de más de 4000 vinos verdes portugueses. El objetivo es entender los datos y proporcionar una guía visual sencilla de qué propiedades debe tener un buen vino blanco.


In [3]:
import pandas as pd
import numpy as np
from sklearn import linear_model
from matplotlib import pylab as plt
plt.style.use('bmh')
%matplotlib notebook

In [4]:
wine = pd.read_csv('data/winequality-white.csv',delimiter=';')
wine.describe()


Out[4]:
fixed acidity volatile acidity citric acid residual sugar chlorides free sulfur dioxide total sulfur dioxide density pH sulphates alcohol quality
count 4898.000000 4898.000000 4898.000000 4898.000000 4898.000000 4898.000000 4898.000000 4898.000000 4898.000000 4898.000000 4898.000000 4898.000000
mean 6.854788 0.278241 0.334192 6.391415 0.045772 35.308085 138.360657 0.994027 3.188267 0.489847 10.514267 5.877909
std 0.843868 0.100795 0.121020 5.072058 0.021848 17.007137 42.498065 0.002991 0.151001 0.114126 1.230621 0.885639
min 3.800000 0.080000 0.000000 0.600000 0.009000 2.000000 9.000000 0.987110 2.720000 0.220000 8.000000 3.000000
25% 6.300000 0.210000 0.270000 1.700000 0.036000 23.000000 108.000000 0.991723 3.090000 0.410000 9.500000 5.000000
50% 6.800000 0.260000 0.320000 5.200000 0.043000 34.000000 134.000000 0.993740 3.180000 0.470000 10.400000 6.000000
75% 7.300000 0.320000 0.390000 9.900000 0.050000 46.000000 167.000000 0.996100 3.280000 0.550000 11.400000 6.000000
max 14.200000 1.100000 1.660000 65.800000 0.346000 289.000000 440.000000 1.038980 3.820000 1.080000 14.200000 9.000000

In [ ]:
fig = plt.figure(2)
ax = [fig.add_subplot(3,4,i) for i in range(1,12)]

models = [linear_model.LinearRegression() for i in range(11)]
for column, model in zip(wine.columns, models):
    model.fit(wine['quality'].reshape(-1,1),
              wine[column].as_matrix().reshape(-1,1))

for qual, group in wine.groupby('quality'):
    for column, axis in zip(group.columns, ax):
        axis.plot(qual, group[column].mean(), 'ob')
        axis.set_title(column + ' (avg)', fontsize=10)
        
qual = np.arange(3,10)
for model, axi in zip(models, ax):
    axi.plot(qual, model.coef_[0][0]*qual + model.intercept_,
             'r--', linewidth=4, label='Regression')
    axi.legend(fontsize=6)
    
fig.tight_layout()

Poner NFQ en un mapa

¿Cómo de difícil puede ser pintar un mapa interactivo de Madrid y poner la geolocalización de las oficinas de NFQ en él?


In [2]:
import folium
madrid = folium.Map(location=[40.429857, -3.685812], tiles="Stamen toner",
                    zoom_start=15)
nfqsolutions = folium.Marker([40.429857, -3.685812], popup='NFQ Solutions')
madrid.add_children(nfqsolutions)
madrid.save('madrid.html')
madrid


Out[2]:

Leer un archivo Excel

Hay otra herramienta que también mezcla datos, lógica y repesentacón: una hoja de cálculo. Pero Excel (la hoja de cálculo más frecuente) no escala con los datos.

  • Mala eficiencia de memoria.

  • Uso de datos no tabulables.

  • Simplicidad y apariencia vs eficiencia y rendimiento.

  • El formato xlsx es la estrategia de vendor lock-in más exitosa de la historia.

La definicón práctica de Big Data es algo demasiado grande para ser seleccionado con el ratón en una hoja Excel.


In [7]:
with pd.ExcelFile('./data/winequality-white.xls') as xls:
    wines = pd.read_excel(xls, 'Sheet1')
    
wines.describe()


Out[7]:
fixed acidity volatile acidity citric acid residual sugar chlorides free sulfur dioxide total sulfur dioxide density pH sulphates alcohol quality
count 4898.000000 4898.000000 4898.000000 4898.000000 4898.000000 4898.000000 4898.000000 4898.000000 4898.000000 4898.000000 4898.000000 4898.000000
mean 6.854788 0.278241 0.334192 6.391415 0.045772 35.308085 138.360657 0.994027 3.188267 0.489847 10.514267 5.877909
std 0.843868 0.100795 0.121020 5.072058 0.021848 17.007137 42.498065 0.002991 0.151001 0.114126 1.230621 0.885639
min 3.800000 0.080000 0.000000 0.600000 0.009000 2.000000 9.000000 0.987110 2.720000 0.220000 8.000000 3.000000
25% 6.300000 0.210000 0.270000 1.700000 0.036000 23.000000 108.000000 0.991723 3.090000 0.410000 9.500000 5.000000
50% 6.800000 0.260000 0.320000 5.200000 0.043000 34.000000 134.000000 0.993740 3.180000 0.470000 10.400000 6.000000
75% 7.300000 0.320000 0.390000 9.900000 0.050000 46.000000 167.000000 0.996100 3.280000 0.550000 11.400000 6.000000
max 14.200000 1.100000 1.660000 65.800000 0.346000 289.000000 440.000000 1.038980 3.820000 1.080000 14.200000 9.000000