Hola Pandas!

Pandas = Manejo de informacion facil!

Que es pandas?

Pandas es un libreria de alto rendimiento, facil de usar para manejar estructuras de datos y analizarlas.

Checate mas en :

Para usar pandas, solo tiene que importar el modulo ..tambien te conviene importar numpy y matplotlib..juega n muy bien con pandas


In [1]:
import pandas as pd
import numpy as np # modulo de computo numerico
import matplotlib.pyplot as plt # modulo de graficas
# esta linea hace que las graficas salgan en el notebook
%matplotlib inline

Y yo para que quiero eso? De que sirve pandas?

Pandas te sirve si quieres:

  • Trabajar con datos de manera facil.
  • Explorar un conjunto de datos de manera rapida, enterder los datos que tienes.
  • Facilmente manipular informacion, por ejemplo sacar estadisticas.
  • Graficas patrones y distribuciones de datos.
  • Trabajar con Exceles, base de datos, sin tener que suar esas herramientas.

Y mucho mas...

El DataFrame en Pandas

Una estructura de datos en Pandas se llama un DataFrame, con el manejamos todos los datos y aplicamos tranformaciones.

Asi creamos un DataFrame vacio:


In [4]:
df = pd.DataFrame()
df


Out[4]:

No nos sirve nada vacio, entonces agreguemos le informacion!

LLenando informacion con un Dataframe

Situacion:

Suponte que eres un taquero y quieres hacer un dataframe de cuantos tacos vendes en una semana igual y para ver que tacos son mas populares y echarle mas ganas en ellos,

Asumiremos:

  • Que vende tacos de Pastor, Tripa y Chorizo
  • Hay 7 dias en una semana de Lunes a Domingo (obvio)
  • Crearemos el numero de tacos como numeros enteros aleatorios (np.random.randint)

Ojo! Si ponemos la variable de un dataframe al final de una celda no saldra una tabla con los datos, eah!


In [9]:
df = pd.DataFrame()
df['Tripas'] = np.random.randint(100,size=7)
df['Chorizo'] = np.random.randint(100,size=7)
df['Pastor'] = np.random.randint(100,size=7)

df.index = ['L','Mar','Mier','J','V','S','D']
df


Out[9]:
Tripas Chorizo Pastor
L 35 50 10
Mar 99 89 11
Mier 5 99 61
J 76 8 66
V 97 50 59
S 28 34 69
D 74 39 92

Jugando con el Dataframe!

Estadisticas

Ya con teniendo un dataframe podemos hacer muchas cosas, por ejemplo sacar estadisticas, de medias, desviaciones estandares, cuantos elementos:


In [10]:
df.describe()


Out[10]:
Tripas Chorizo Pastor
count 7.000000 7.000000 7.000000
mean 59.142857 52.714286 52.571429
std 36.539607 31.652879 30.707530
min 5.000000 8.000000 10.000000
25% 31.500000 36.500000 35.000000
50% 74.000000 50.000000 61.000000
75% 86.500000 69.500000 67.500000
max 99.000000 99.000000 92.000000

pero talvez solo queramos estadisticas de Pastor, entonces seria:


In [11]:
df['Pastor'].describe()


Out[11]:
count     7.000000
mean     52.571429
std      30.707530
min      10.000000
25%      35.000000
50%      61.000000
75%      67.500000
max      92.000000
Name: Pastor, dtype: float64

o talvez solo nos interese del Lunes:

Ojo! Tenemos que usar .ix para seleccionar un renglon


In [13]:
df.ix['L'].describe()


Out[13]:
count     3.000000
mean     31.666667
std      20.207259
min      10.000000
25%      22.500000
50%      35.000000
75%      42.500000
max      50.000000
Name: L, dtype: float64

Grafica de cajas 'Boxplot'

Un boxplot nos da mucha informacion:

  • Cada caja esta centrada en la mediana
  • Tiene de alto la desviacion estandar entonces nos dice donde se encuentra el 60% de los datos.
  • Tiene los minimos y maximos de cada dato.

In [14]:
df.boxplot()


/usr/local/lib/python2.7/site-packages/ipykernel/__main__.py:1: FutureWarning: 
The default value for 'return_type' will change to 'axes' in a future release.
 To use the future behavior now, set return_type='axes'.
 To keep the previous behavior and silence this warning, set return_type='dict'.
  if __name__ == '__main__':
Out[14]:
{'boxes': [<matplotlib.lines.Line2D at 0x10ff47dd0>,
  <matplotlib.lines.Line2D at 0x10ff72750>,
  <matplotlib.lines.Line2D at 0x10ff93390>],
 'caps': [<matplotlib.lines.Line2D at 0x10ff57dd0>,
  <matplotlib.lines.Line2D at 0x10ff66450>,
  <matplotlib.lines.Line2D at 0x10ff7ea10>,
  <matplotlib.lines.Line2D at 0x10ff88090>,
  <matplotlib.lines.Line2D at 0x10ff9f650>,
  <matplotlib.lines.Line2D at 0x10ff9fc90>],
 'fliers': [<matplotlib.lines.Line2D at 0x10ff72110>,
  <matplotlib.lines.Line2D at 0x10ff88d10>,
  <matplotlib.lines.Line2D at 0x10fef9c90>],
 'means': [],
 'medians': [<matplotlib.lines.Line2D at 0x10ff66a90>,
  <matplotlib.lines.Line2D at 0x10ff886d0>,
  <matplotlib.lines.Line2D at 0x10ff08650>],
 'whiskers': [<matplotlib.lines.Line2D at 0x10ff570d0>,
  <matplotlib.lines.Line2D at 0x10ff57790>,
  <matplotlib.lines.Line2D at 0x10ff72d50>,
  <matplotlib.lines.Line2D at 0x10ff7e3d0>,
  <matplotlib.lines.Line2D at 0x10ff93990>,
  <matplotlib.lines.Line2D at 0x10ff93fd0>]}

Combinando columnas

Que tal si queremos saber cuantos tacos vendimos en total? Pues solamente sumamos las columnas:


In [17]:
df['Total']=df['Pastor']+df['Tripas']+df['Chorizo']
df


Out[17]:
Tripas Chorizo Pastor Total
L 35 50 10 95
Mar 99 89 11 199
Mier 5 99 61 165
J 76 8 66 150
V 97 50 59 206
S 28 34 69 131
D 74 39 92 205

Borrando columnas

Aveces simplemente queremos reducir el numero de datos, entonces podemos usar el drop:


In [19]:
df.drop('Pastor',axis=1)


Out[19]:
Tripas Chorizo Total
L 35 50 95
Mar 99 89 199
Mier 5 99 165
J 76 8 150
V 97 50 206
S 28 34 131
D 74 39 205

Exportando a otro formato

Aveces queremos guardar nuestros datos (excel, csv, sql database, pickle, json) , por ejemplo a un excel:


In [19]:
df.to

Leyendo un DataFrame de otro formato

O alrevez, queremos crear un dataframe apartir de un archivo:


In [20]:

Ejercicios:

  • Inventa un Dataframe de tu propio negocio, que quieres vender? Usa numeros aleatorios.
  • Saca estadisticas de cada columna.
  • Crea una nueva columna que toma en cuenta la otra informacion. (Promedio, etc..)

In [21]:



  File "<ipython-input-21-e58d666df0d6>", line 1
    blah blah blah
            ^
SyntaxError: invalid syntax

In [ ]: