Python – Parte III

En la última parte de este tutorial de Pandas, procederemos a graficar nuestros resultados. Para esto, necesitamos instalar la librería matplotlib

Instalación

pip install matplotlib

Instrucciones básicas

Y, para comenzar a utilizarla, debemos importarla en nuestro programa.

import matplotlib.pyplot as plt

Ejercicio:

¿Cuántos superhéroes pertenecen por cada editorial?

Aquí suena a que habrá que incluir unas cuántas operaciones antes de mostrar un gráfico.

  1. Importa las librerías
    import pandas as pd
    import matplotlib.pyplot as plt
  2. Lee el archivo local.
    superheroes = pd.read_csv( ‘heroes_information.csv’ )
  3. Utiliza el groupby por la o las columnas que se solicitan
    grupos = superheroes.groupby(‘Publisher’)
  4. Seleccionar la o las columnas solicitadas
    columnas = grupos[[‘Publisher’]]
  5. Realizar la operación que se solicita, en este caso el número total hace referencia a contar todos los valores.
    resultado =  columnas.count()
  6. Ahora, es cuestión de graficar los resultados. Aquí deberás escoger cuál representa las filas y cuál representa las columnas de nuestro gráfico.
    resultado.plot.bar(color=’red’)
    plt.show()
  7. El gráfico que aparecerá luce así

 

 

 

 

 

 

 

 

Otros tipos de gráficos.

Ejercicios

  • Por editorial, ¿Cuántos superhéroes superan los 190cm?
  • Promedio de estatura por color de piel.
  • Por alineación y raza, ¿Cuántos superhéroes de Marvel Comics existen?

 

 

Publicado en Varios | Deja un comentario

Python Pandas – II

Superhéroes

En la segunda parte del tutorial, revisaremos el agrupamiento de datos.

Selección de columnas

Trabajar con todas las columnas de un conjunto de datos resulta un poco incómodo por lo que puedes utilizar el subsetting al enviar una lista con el nombre de las columnas que deseas.

nuevosDatos = superheroes[[‘name’,’Publisher’]]
starwars = nuevosDatos[‘Publisher’] == ‘George Lucas’
print(nuevosDatos[starwars])

En las instrucciones anteriores creamos un nuevo conjunto de datos llamado nuevosDatos con el que haremos operaciones, aplicamos condiciones, etc.

Agrupamiento

En algunas ocasiones, es necesario realizar operaciones de cálculo (count, sum, mean, max, min) para los diversos grupos de datos, por ejemplo:

“Número total de superhéroes por editorial” o “Máxima altura de superhéroes de acuerdo a su alineación y género”

Para responder al “Total de superhéroes por editorial”:

  1. Utiliza el groupby por la o las columnas que se solicitan
    grupos = superheroes.groupby(‘Publisher’)
  2. Seleccionar la o las columnas solicitadas
    columnas = grupos[[‘Publisher’]]
  3. Realizar la operación que se solicita, en este caso el número total hace referencia a contar todos los valores.
    print(columnas.count())

El resultado es el siguiente:

PublisherPublisher
ABC Studios4
DC Comics215
Dark Horse Comics18
George Lucas14
Hanna-Barbera1
HarperCollins6
IDW Publishing4
Icon Comics4
Image Comics14
J. K. Rowling1
J. R. R. Tolkien1
Marvel Comics388
Microsoft1
NBC - Heroes19
Rebellion1
Shueisha4
Sony Pictures2
South Park1
Star Trek6
SyFy5
Team Epic TV5
Titan Books1
Universal Studios1
Wildstorm3

Para el segundo ejemplo: “Máxima altura de superhéroes de acuerdo a su alineación y género”

Las columnas a agrupar son “Alignment” y “Gender”. Las columnas a escoger son “Alignment”, “Gender” y “Height”. Finalmente, la operación es max.

El resultado se interpreta que

  • El superhéroe masculino – malo de mayor altura mide 366.0, y que
  • El superhéroe femenino – malo de mayor altura mide 218.0
AlignmentGenderHeight
---99.0
-Male229.0
bad-198.0
badFemale218.0
badMale366.0
good-193.0
goodFemale366.0
goodMale975.0
neutral--99.0
neutralFemale183.0
neutralMale876.0

Algunos ejercicios para que practicar:

  • El promedio de estatura por género. Asegúrate de eliminar los valores -99 antes de cualquier cálculo.
  • Mínimo peso y estatura de los superhéroes Alien y Mutants por editorial
  • ¿Cuántos superhéroes existen por color de ojos?
  • ¿Cuántos superhéroes existen por color de cabello?
Publicado en coding, pandas, python | Etiquetado , | Deja un comentario

Python Pandas – I

Pandas

Instalación

En este corto tutorial acerca de Pandas, la librería de Python. Primero, será necesario instalar el módulo mediante pip.

pip install pandas

Pandas sirve para procesar conjuntos de datos con un formato específico. Donde el tipo de datos puede variar en cada una de las columnas. Pandas es utiliza como una herramienta para analizar y procesar datos a gran escala.

Conjunto de datos o Dataset

Siempre que trabajemos con Pandas será necesario utilizar un dataset. En este caso utilizaremos el conjunto de datos de superhéroes. Este dataset contiene la información general (nombre, género, raza, color de ojos, estatura, editorial, etc ) de cada superhéroe.

Instrucciones básicas

Ahora, escribiremos nuestro algunas instrucciones para procesar el archivo. Primero, procedemos a cargar el módulo de Pandas

import pandas as pd

Comenzamos cargando el conjunto de datos en memoria, mediante la instrucción read_csv

superheroes = pd.read_csv( ‘heroes_information.csv’ )

Por defecto, la primera fila del conjunto de datos corresponde/contiene a los nombres de las columnas.

Para mostrar los datos, simplemente utiliza un print de la variable que contiene el conjunto de datos.

print( superheroes )

 

¿Qué vemos en la salida?

 

Además, podemos tener una vista previa de los datos con las instrucciones head tail.

print( superheroes.head() )

Con head (tail) tendrá una vista previa de lo que te puedes encontrar en el conjunto de datos en las cinco primeras (últimas) filas.

Tanto head como tail permite mostrar más de las 5 filas predeterminadas, para esto podrás enviar un número como parámetro.

print( superheroes.tail(15) )

Con la línea anterior podrás ver los últimos 15 superhéroes en el conjunto de datos.

Para conocer la cantidad de filas y contiene mi conjunto de datos, utilizaremos la instrucción shape que devuelve una tupla con la cantidad de filas y columnas.

nfilas, ncolumnas = superheroes.shape
print(“Cantidad de superhérores: “, nfilas)

 

¿Cuántas filas y cuántas columnas tiene nuestro conjunto de datos? 

 

Si necesitamos conocer el nombre de las columnas utilizaremos la instrucción:

nombreColumnas = superheroes.columns.values
print(“Nombres de las columnas: “, nombreColumnas )

Para referirnos a una columna específica utilizamos su nombre, por ejemplo:

print(superheroes[‘Publisher’])

Y si necesitáramos saber una lista con valores únicos de Publisher, simplemente hacemos lo siguiente:

print(list(set(superheroes[‘Publisher’])))

Como te puedes dar cuenta, existen editoriales como ‘Marvel Comics’, ‘DC Comics’ y nan. ¿Qué es nan? Pandas utiliza este tipo de dato para representar los vacíos en el conjunto de datos.

Condicionales

A veces, es necesario contar el número de elementos que cumplen con una determinada condición, por ejemplo: ¿Cuántos superhéroes son de DC Comics?

Para resolver esta pregunta, se recurre a:

  1. Filtra la columna a contar, en este caso Publisher

    columna = superheroes[‘Publisher’]

  2. Crear la condición
    condicion = columna == ‘DC Comics’
  3. Aplicar la condición sobre la columna y contar
    print( columna[condicion].count() )
  4. Deben resultar en 215 superhéroes.

Más preguntas para practicar:

  • ¿Cuántos superhéroes buenos existen? Utiliza la columna Alignment y el valor para es good.
  • ¿Cuántos superhéroes tienen piel blanca? Utiliza la columna Skin color y el valor es white.
  • ¿Cuántos superhéroes tienen los ojos amarillos? Utiliza la columna Eye color y el valor es yellow.

Condicionales complejas

Para unir dos o más condiciones utiliza:

  • Cada condición entre paréntesis, y
  • Los conectores & (para conjunción – and) u | (para disyunción – or)

Por ejemplo, para la pregunta: ¿Cuáles son los nombres de los superhéroes humanos que son neutrales ?

  1. Selecciona la columna name
    columnaNombres = superheroes[‘name’]
  2. Selecciona la columna Race
    columnaRaza = superheroes[‘Race’]
  3. Selecciona la columna Alignment
    columnaAlineacion = superheroes[‘Alignment’]
  4. Crea la condición
    condicion = (columnaRaza == ‘Human’) & (columnaAlineacion == ‘neutral’ )
  5. Filtra la columna name con la condición
    print( columnaNombres[condicion] )

Operaciones básicas

Desde luego, Pandas tiene un conjunto de operaciones básicas, como: sum, max, min, idxmax, idxmin, mean, para responder a preguntas como:

¿Cuál es el nombre, editorial y peso del superhéroe más pesado?

  1. Obtén el valor del peso más grande
    pesoMax = superheroes[‘Weight’].max()
  2. Crea la condición con el valor obtenido.
    condicion = superheroes[‘Weight’] == pesoMax
  3. Obtén la fila con el índice obtenido
    superHeroeMasPesado = superheroes[condicion]
  4. Muestra las características
    print(superHeroeMasPesado[‘name’],superHeroeMasPesado[‘Publisher’], pesoMax )
  5. Debería mostrar esta información
    Sasquatch Marvel Comics 900.0

Acá encontrarás más detalles de otras operaciones básicas.

Para los siguientes casos deberás considerar que el valor de la estatura/peso no se conoce por lo que han colocado el valor de -99.

  • ¿Cuál es el nombre del alien bueno de menor estatura? columnas: name, Alignment (‘good’)Race (‘Alien’) y  Height.
  • ¿Cuál es la estatura promedio de los mutantes? columnas: Race (‘Mutant’) y  Height.
  • ¿Cuántos buenos se encuentran en las editoriales ‘HarperCollins’ y ‘George Lucas’? columnas: Alignment (‘good’) Publisher (‘HarperCollins’ – ‘George Lucas’)
Publicado en pandas, python | Etiquetado , | Deja un comentario

Python Pandas

Pandas LogoCon el propósito de introducir al uso de Pandas, en Python, te dejo un recurso con una recopilación de instrucciones para la manipulación de un conjunto de datos, o dataset.

Publicado en coding, pandas, python | Etiquetado , | Deja un comentario

Mapa de eventos con Python

Una forma de mostrar ciertos datos geolocalizados en un mapa, de Google, consiste en utilizar el módulo gmplot.

A continuación las instrucciones para obtener un mapa parecido a este:

mapa

 
mapa2

Primero, instale el módulo gmplot:

  1. Mediante la línea de comandos:
    pip install gmplot
  2. O, mediante PyCharm.

Vaya a File > Default Settings …  
paso1

En la ventana que aparece, seleccione la opción de Project Interpreter. Luego, de clic en el símbolo + para agregar un módulo.

paso2

Finalmente, en esta ventana, agregue el nombre del módulo: gmplot. Y, de clic en Install Packages

paso3

Luego, obtenga la posición (latitud y longitud) del cualquier lugar que desee, en el sitio: http://www.coordenadas-gps.com/

Finalmente, las instrucciones en Python para graficar.

import gmplot

#Ubicar el centro del mapa en Ecuador
#Para esto, se necesita la latitud y la longitud de Ecuador:
#latitud: -1.831239
#longitud: -78.18340599999999


#Esta funcion necesita los siguientes argumentos: latitud, longitud, zoom
gmap = gmplot.GoogleMapPlotter(-1.831239, -78.18340599999999, 7)


#diccionario de ejemplos con las latitudes y longitudes
ciudades = {

    "Guayaquil" : {"region":"costa","habitantes":2350915,"coordenada":(-2.1709979, -79.92235920000002)},
    "Quito": {"region":"sierra","habitantes":2239191,"coordenada":(-0.1806532,-78.46783820000002)},
    "Cuenca": {"region":"sierra","habitantes":505585,"coordenada":(-2.9001285, -79.0058965)},
    "Bahia de Caraquez": {"region":"costa","habitantes":20921,"coordenada":(-0.6186619,-80.42736439999999)},
    "Loja":{"region":"sierra","habitantes":214855,"coordenada":(-4.0078909,-79.21127690000003)},
    "Ambato": {"region":"sierra","habitantes":329856,"coordenada":(-1.2543408,-78.6228504)}
}

#procesamos el diccionario para tener dos listas: latitud y longitud
latitud = []
longitud = []

for key in ciudades.keys():
    lat, long = ciudades[key]["coordenada"]
    habitantes = ciudades[key]["habitantes"]

    #agregamos a la lista
    latitud.append(lat)
    longitud.append(long)

    # Marcadores de Google: marker
    #Por cada ciudad con menos de 1000000 (un millon) de habitantes
    if habitantes > 1000000:
        #vamos agregando uno a uno los datos de la latitud y longitud correspondientes
        gmap.marker(lat,long,c='red')
    elif habitantes > 100000:
        gmap.marker(lat, long, c='yellow')
    else:
        gmap.marker(lat, long, c='green')


#Mapa de calor: heatmap
#recibe dos listas: latitud y longitud
#ademas del radio (radius) de calor
#Y, la opacidad (cuan opaco) desea el mapa de calor, en general.
gmap.heatmap(latitud, longitud,radius=30, opacity=0.9)


#graficar en un archivo html
nombreDeArchivo = "ecuador.html"
print("Archivo final: "+nombreDeArchivo)
gmap.draw(nombreDeArchivo)



Publicado en coding, python | Etiquetado , , , | Deja un comentario