In [1]:
import pandas as pd
import numpy as np
#importar los modulos pandas y numpy con los alias convencionales
from pandas import Series, DataFrame
Series es similar a un arreglo de numpy(ndarray) con la excepción de que estos poseen un axis labels. Usaremos 's' para referinos a Series
Forma básica para crear un arreglo s = pd.Series(data, index=label)
Donde data puede ser un ndarray, dictionario, un escalar, etc.
In [2]:
#Crear una serie desde un ndarray
s = pd.Series(np.arange(0,5), index=['a', 'b', 'c', 'd', 'e'])
In [3]:
s
Out[3]:
In [4]:
s.index
Out[4]:
In [5]:
type(s)
Out[5]:
In [6]:
s0 = Series(np.random.random(10)) #crea una serie con 10 valores aleatorios
s0
Out[6]:
In [7]:
#Crear serie desde un dictionario
d = {'a':100,'b':124,'c':700,'d':430,'e':400}
s1 = pd.Series(d)
In [8]:
s1
Out[8]:
In [9]:
#Crear serie desde un valor escalar
s2 = pd.Series(23., s1.index)
In [10]:
s2
Out[10]:
In [11]:
# Acceder a los valores de la serie
print(s2.index)
print(s2.values)
Ejercicio 1: Serie con datos del mundo real Población, total [http://datos.bancomundial.org/indicador/SP.POP.TOTL]
Crear un dos listas, una con nombre de países y la segunda con su población, con estas hacer una serie paises y poblacion,
In [12]:
lpaises=['Venezuela','República Dominicana','India','Guatemala','Alemania','Arabia Saudita','Argentina','Francia','Filipinas','Indonesia','Haití','México','Nicaragua']
lpoblacion=[31108.08,10528.39,1311050.53,16342.90,81413.15,31540.37,43416.75,66808.38,100699.40,257563.82,10711.07,127017.22,6082.03]
In [13]:
seriepp=Series(lpoblacion,lpaises)
In [14]:
seriepp['India'] #seleccionar el indice India
Out[14]:
In [15]:
#Ver cuales de los paises seleccionado superan los 50 millones de personas
In [16]:
seriepp[seriepp>50000]
Out[16]:
In [17]:
seried = seriepp.to_dict() # convertir en un diccionario
In [18]:
seried
Out[18]:
In [19]:
seriepp.name = 'Población algunos paises'
In [20]:
seriepp['India']
Out[20]:
In [21]:
seriepp[['India','Aruba','Venezuela']] #Seleccionar desde una lista, en caso de no estar el elemento NaN
Out[21]:
In [22]:
'México' in seriepp #Verificar si México esta en la serie
Out[22]:
In [23]:
'Estados Unidos' in seriepp #Verificar si Estados Unidos esta en la serie
Out[23]:
In [24]:
seriepp.append(Series({'Ginea':12608.59}))
Out[24]:
In [25]:
seriepp=seriepp.append(Series({'Ginea':12608.59})) #Agregar un elemento a una serie
seriepp
Out[25]:
In [ ]:
In [26]:
seriepp=seriepp.append(Series({'Otro Nación':np.NAN}))
seriepp
Out[26]:
In [27]:
seriepp.notnull() # retorna una serie boleana donde identifca los valores no son nulos
Out[27]:
Data Frames se define como arreglo bidimensional etiquetadas, cada columna es una Serie.
In [29]:
#Crear un DataFrame desde un dictionario
In [30]:
AntillaMayores = {'ciudad':['Santo Domingo','La Habana','San Juan','Kington','Puerto Principe'],
'pais':['República Dominicana','Cuba','Puerto Rico','Jaimaica','Haití'],
'poblacion':[10528.39,11389.56,3474.18,2725.94,10711.07]}
In [31]:
dfAntillasMay = DataFrame(AntillaMayores)
In [32]:
dfAntillasMay
Out[32]:
In [33]:
#Crear un DataFram desde multiples listas
In [34]:
#Creando varias listas con datos de paises de antillas menores territorios independient
#fuente de datos: https://es.wikipedia.org/wiki/Antillas_Menores
pais = ['Antigua y Barbuda', 'Barbados', 'Dominica', 'Granada', 'San Cristóbal y Nieve', 'San Vicente y las Granadinas', 'Santa Lucía', 'Trinidad y Tobago']
idiomaOficial = ['Inglés','Inglés','Inglés','Inglés','Inglés','Inglés','Inglés','Inglés']
superficieTerritorial = [443,431,754, 344, 261,389, 616, 5128 ]
poblacion = [68722 , 279912 , 69278 , 89502 , 38958, 117534, 160145, 1075066]
In [35]:
etiquetas = ['pais','idioma','superficie','población']
In [36]:
listacolumnas = [pais,idiomaOficial,superficieTerritorial,poblacion]
In [37]:
datazipped = list(zip(etiquetas,listacolumnas))
In [38]:
dataantillas = dict(datazipped)
In [39]:
dfantillasmenores = DataFrame(dataantillas)
dfantillasmenores
Out[39]:
In [40]:
# Cambiando los nombres de las columnas
# complicarla un poco
dfantillasmenores.rename(columns={'idioma': 'Idioma Oficial','pais':'País','población':'Población','superficie':'Superficie Territorial'},inplace=True)
dfantillasmenores
Out[40]:
In [41]:
#Broadcasting o cambio en memoria, permite agregar nuevos datos o agregar columnas
#según se necesite, ejemplo una nueva colunma para asignar la visitas de turistas en el 2017
In [42]:
dfantillasmenores['Turismo 2017(MM)']=1
#De forma automática asignamos 1
dfantillasmenores
Out[42]:
In [43]:
dfantillasmenores['Turismo 2017(MM)']=dfantillasmenores['Población']/dfantillasmenores['Superficie Territorial']**3
In [44]:
dfantillasmenores
Out[44]:
In [ ]: