Subido por mvcarmona

Uso de librería Pandas

Anuncio
USO DE LIBRERÍA
PANDAS
>>> Parte 1: Ciencia de Datos y Caracterización Data Frames
Recordemos
Revisamos todas las herramientas básicas en Python
para el procesamiento de datos de forma masiva.
Son muy poderosas y tienen un gran potencial.
Reflexionemos
No obstante, siempre quedan las dudas.
¿Hasta dónde
podemos
llegar con
Python?
¿Cuál es el
estado del
arte?
La disciplina que está a la vanguardia hoy en día en
cuanto a procesamiento de datos es la ciencia de datos.
>>> Ciencia de Datos
¿Qué es la ciencia de datos?
Revisemos algunas definiciones:
Es la disciplina que permite encontrar patrones predecibles
en sets de datos estructurados, y no estructurados.
(Dhar, 2013).
Es un concepto que busca unificar estadísticas, análisis de
datos, inteligencia artificial y cualquier otro método similar
para poder entender y analizar fenómenos con los datos.
(Hayashi, 1996).
¿Qué es la ciencia de datos?
Ejemplo:
La astronomía
Con la tecnología que existe hoy en día y los
instrumentos de observación que se están
creando actualmente, diariamente se genera un
exabyte de datos. Para ejemplificar, es el doble de
la información que se genera en todo internet en
un día.
¿Qué es la ciencia de datos?
Científico de datos
Lo importante son las herramientas que los científicos
ocupan para poder trabajar.
Python es un buen ejemplo, ocupan este lenguaje para
poder hacer análisis e identificar patrones.
Además, generan paquetes (como el paquete random,
que vimos anteriormente), para facilitar esta labor. A
estos paquetes también podemos llamarlos librerías.
Librería pandas
Es una librería de código
abierto, que provee
estructuras de datos de
alto rendimiento y fáciles
de usar. Además, provee
herramientas para el
análisis de datos en
Python.
>>> Caracterización Data Frames
¿Cómo usar pandas?
Para comenzar a usar pandas, debemos tener claro dos
conceptos claves:
series
Data
frames
Estructura de Datos
La serie es la estructura de datos básica en la librería
pandas.
Es una lista de datos con un largo fijo, aquí no podemos
agregar o quitar elementos, solo modificarlos.
Además, los datos de una serie son del mismo tipo.
Por ejemplo:
“Roberto”
“Andrea”
“Felipe”
“Pamela”
“Daniela”
“Vicente”
La serie tiene 6 elementos de tipo texto. Específicamente, son
los nombres de distintas personas.
Data frames
Son la estructura más usada en la librería pandas y
podemos imaginarlos como una matriz de datos, donde
podemos agregar filas y columnas a nuestro antojo.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Cada columna, representa datos para una variable específica
Las columnas de un data frame son series, y por eso es
importante manejarlas.
Data frames
Son la estructura más usada en la librería pandas y
podemos imaginarlos como una matriz de datos, donde
podemos agregar filas y columnas a nuestro antojo.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Cada fila corresponde a medidas o valores de cada instancia y
podrá tener valores de distintos tipo
Data frames
Veamos un ejemplo de un data frame, con las
calificaciones de ciertas personas en una asignatura de una
universidad:
Nombre
Edad
Género
Calificación
Felipe
24
Masculino
4,5
Andrea
21
Femenino
7,0
Tomás
22
Masculino
6,1
Roberto
20
Masculino
5,5
Data frames
Analicemos el ejemplo anterior:
Nombre
Edad
Género
Calificación
Felipe
24
Masculino
4,5
Andrea
21
Femenino
7,0
Tomás
22
Masculino
6,1
Roberto
20
Masculino
5,5
La columna “Nombre” es de tipo texto (o string).
Data frames
Analicemos el ejemplo anterior:
Nombre
Edad
Género
Calificación
Felipe
24
Masculino
4,5
Andrea
21
Femenino
7,0
Tomás
22
Masculino
6,1
Roberto
20
Masculino
5,5
La columna “Edad” es de tipo entero (o int).
Data frames
Analicemos el ejemplo anterior:
Nombre
Edad
Género
Calificación
Felipe
24
Masculino
4,5
Andrea
21
Femenino
7,0
Tomás
22
Masculino
6,1
Roberto
20
Masculino
5,5
La columna “Género” es de tipo texto (o string).
Data frames
Analicemos el ejemplo anterior:
Nombre
Edad
Género
Calificación
Felipe
24
Masculino
4,5
Andrea
21
Femenino
7,0
Tomás
22
Masculino
6,1
Roberto
20
Masculino
5,5
La columna “Calificación” es de tipo decimal (o float).
Data frames
Nombre
Edad
Género
Calificación
Felipe
24
Masculino
4,5
Andrea
21
Femenino
7,0
Tomás
22
Masculino
6,1
Roberto
20
Masculino
5,5
Para resolver el ejercicio, es necesario ocupar Python IDLE
Data frames
La mayor ventaja de la librería pandas es poder procesar
grandes volúmenes de datos.
Definir Data frames de forma manual nunca nos permitirá
manejar Data frames con muchas líneas. Por lo tanto, y
como vimos anteriormente, la mejor forma de cargar
información es mediante archivos.
Importante
Al cargar un archivo CSV, es posible que te encuentres
con varios errores. Como un comentario general, es
difícil poder anticiparnos a qué errores te saldrán, así
que recomendamos fuertemente que seas autónomo al
momento que aparezcan errores. Esto significa copiar el
error que te sale en la consola, y buscar en internet
alguna solución. Esto además te permitirá poder
aprender más de esta grandiosa librería por tu cuenta.
error
Algunos errores comunes
Puedes observar que el segundo parámetro usado al crear
el Data frame es:
encoding="latin-1"
De forma general, si tus datos tienen algún tipo de carácter
que se use solo en el español (por ejemplo, tildes, ñ o ¡),
debes ocupar este parámetro para evitar errores.
Algunos errores comunes
Fíjate que el separador de columnas dentro del archivo
CSV sea “;” ó “,”. El tercer parámetro utilizado:
sep=";"
Nos asegura que la librería pandas sepa cómo separar las
columnas en cada fila.
Fíjate que el separador decimal para números decimales
sea un punto.
Verifica que el archivo que estás cargando esté en la
misma carpeta que el archivo tipo Python.
USO DE LIBRERÍA
PANDAS
>>> Parte 2: Operaciones básicas con Data Frames
Data frames
Sabemos cómo crear un Data frame.
Ahora veremos sus características básicas y cómo
poder trabajar con él.
Esto es muy importante, antes de ver algunas
herramientas más avanzadas de la librería pandas.
Data frames
También podemos filtrar nuestros datos según los
valores de ciertas columnas.
De forma general:
df.loc[df['Nombre columna'] (operación
lógica)]
A continuación, veamos algunos ejemplos para que
quede más claro.
Data frames
df.loc[df['Nombre columna'] (operación lógica)]
CÓDIGO
RESULTADO
import pandas as pd
df = pd.read_csv("clientes.csv",encoding="latin1",sep=";")
print(df.loc[9999]["FECHA_NAC"])
ID
RUT
...
MONTO
PUNTAJE_CREDITICIO
1
21.930.631-4
...
8153651
2.37
12
13.674.785-2
...
469341
2.81
19
15.452.563-10
...
1836607
0.33
21
7.699.998-8
...
5766978
7.70
Aquí filtramos solo a los clientes que son
de tipo A.
Data frames
df.loc[df['Nombre columna'] (operación lógica)]
CÓDIGO
RESULTADO
ID
RUT
...
MONTO
PUNTAJE_CREDITICIO
import pandas as pd
442
13.393.426-9
...
54358
3.35
df = pd.read_csv("clientes.csv",encoding="latin1",sep=";")
526
7.345.656-5
...
42298
3.70
537
20.081.815-9
...
72235
2.89
573
17.796.256-1
...
27274
7.90
print(df.loc[df['MONTO'] < 100000])
Aquí filtramos solo a los clientes que tienen menos de $100.000 en
su cuenta corriente (lo que se ve reflejado en la columna Monto).
Data frames
df.loc[df['Nombre columna'] (operación lógica)]
CÓDIGO
RESULTADO
ID
RUT
...
MONTO
PUNTAJE_CREDITICIO
import pandas as pd
2
9.655.791-3
...
9509104
9.91
df = pd.read_csv("clientes.csv",encoding="latin1",sep=";")
8
20.749.832-5
...
4441737
8.18
11
7.271.618-0
...
5832527
8.08
15
6.355.671-0
...
668186
9.84
print(df.loc[df['PUNTAJE_CREDITICIO'] >= 8.0])
Aquí filtramos solo a los clientes que tienen
un score crediticio mayor o igual a 8.0.
Data frames
Observemos que no solo nos sirve para poder filtrar
columnas según cierta información, sino que también
para crear tablas filtradas.
Podemos asignar la tabla filtrada a una variable para
luego seguir trabajando con ella:
CÓDIGO
import pandas as pd
df = pd.read_csv("clientes.csv",encoding="latin-1",sep=";")
df_final = df.loc[df['PUNTAJE_CREDITICIO'] >= 8.0]
Data frames
Crear columnas:
También podemos agregar nuevas columnas a los Data frames. Digamos que queremos agregar
la nacionalidad de los clientes a nuestra base de datos. En este caso, son todos chilenos.
CÓDIGO
import pandas as pd
df = pd.read_csv("clientes.csv",encoding="latin1",sep=";")
df["NACIONALIDAD"] = "CHILE"
print(df)
RESULTADO
ID
RUT
...
PUNTAJE_CREDITICIO
NACIONALIDAD
0
21.930.631-4
...
1.17
CHILE
1
11.269.366-8
...
2.37
CHILE
2
9.655.791-3
...
9.91
CHILE
3
16.644.711-4
...
2.86
CHILE
Data frames
Las columnas creadas también pueden ser el resultado de un cálculo. En este caso, crearemos
una nueva columna con el monto en dólares en la cuenta corriente de cada cliente (que estaba
en la columna original “Monto”).
CÓDIGO
import pandas as pd
df = pd.read_csv("clientes.csv",encoding="latin1",sep=";")
df["MONTO_DOLAR"] = df["MONTO"]/700
print(df)
RESULTADO
ID
RUT
...
PUNTAJE_CREDITICIO
MONTO_DOLAR
0
21.930.631-4
...
1.17
7725.641429
1
11.269.366-8
...
2.37
11648.072857
2
9.655.791-3
...
9.91
13584.434286
3
16.644.711-4
...
2.86
8665.054286
Data frames
Editar columnas:
En este caso, le agregaremos un punto base a todos
los puntajes crediticios. Lo importante es que
podemos modificar el contenido de una columna en
base al contenido original. Por ejemplo, aquí le
sumamos 1. De forma general, lo podemos
caracterizar de la siguiente manera:
df['Nombre columna'] = df['Nombre
columna'](operación matemática)
Data frames
CÓDIGO
RESULTADO
ID
RUT
...
MONTO
PUNTAJE_CREDITICIO
0
21.930.631-4
...
5407949
2.17
1
11.269.366-8
...
8153651
3.37
df["PUNTAJE_CREDITICIO"] =
df["PUNTAJE_CREDITICIO"]+1
2
9.655.791-3
...
9509104
10.91
print(df)
3
16.644.711-4
...
6065538
3.86
import pandas as pd
df = pd.read_csv("clientes.csv",encoding="latin1",sep=";")
Data frames
RESULTADO
Eliminar columnas:
También podemos eliminar columnas
a los Data frames.
ID
RUT
...
PUNTAJE_CREDITICIO
NACIONALIDAD
0
21.930.631-4
...
1.17
CHILE
1
11.269.366-8
...
2.37
CHILE
2
9.655.791-3
...
9.91
CHILE
3
16.644.711-4
...
2.86
CHILE
CÓDIGO
import pandas as pd
RESULTADO
df = pd.read_csv("clientes.csv",encoding="latin1",sep=";")
[100000 rows x 8 columns]
ID
RUT
...
MONTO
PUNTAJE_CREDITICIO
0
21.930.631-4
...
5407949
1.17
print(df)
1
11.269.366-8
...
8153651
2.37
del df["NACIONALIDAD"]
2
9.655.791-3
...
9509104
9.91
3
16.644.711-4
...
6065538
2.86
df["NACIONALIDAD"] = "CHILE"
print(df)
Data frames
Para agregar o quitar filas, es mucho más fácil trabajar
en el archivo CSV mismo (se puede trabajar en cualquier
editor de texto plano, como Bloc de Notas en Windows).
Simplemente se pueden borrar algunas o agregar al
archivo mismo.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Data frames
En el caso de requerir unir dos Data frames distintos
(con las mismas columnas, porque sino Python nos
arrojará un error), lo podemos hacer con el siguiente
código:
CÓDIGO
import pandas as pd
df = pd.read_csv("clientes.csv",encoding="latin-1",sep=";")
df2 = pd.read_csv("clientes2.csv",encoding="latin-1",sep=";")
df.append(df2)
Estadísticos descriptivos
Cuenta
Promedio
Desviación Estándar
Mínimo
Cuartiles
Máximo
Estadísticos descriptivos
Podemos calcular rápidamente los estadísticos descriptivos de las variables numéricas de
nuestra base de datos. En nuestro ejemplo, estas son Monto y Puntaje crediticio.
CÓDIGO
RESULTADO
ID
MONTO
PUNTAJE_CREDITICIO
100000.000000
1.000000e+05
100000.000000
import pandas as pd
count
df = pd.read_csv("clientes.csv",encoding="latin1",sep=";")
mean
49999.500000
5.001736e+06
5.001448
std
28867.657797
2.881127e+06
2.886175
min
0.000000
1.005600e+04
0.000000
print(df.describe())
En este ejemplo también calcula los estadísticos de la variable ID ya que también es numérica.
Escribir archivo CSV
Finalmente, podemos guardar lo que hicimos escribiendo el data
frame en un nuevo archivo CSV. De forma general, lo podemos
hacer de la siguiente manera:
df.to_csv("(nombre archivo csv).csv",index=false)
Por ejemplo
CÓDIGO
import pandas as pd
df = pd.read_csv("clientes.csv",encoding="latin-1",sep=";")
En este ejemplo
guardamos nuestro nuevo
Data frame con la columna
df["NACIONALIDAD"] = "CHILE"
“Nacionalidad” que no
print(df)
existía previamente.
df.to_csv("clientes_mod.csv", index=False)
Cierre
El mayor potencial que tiene Python es la capacidad de
trabajar con archivos de un tamaño considerable.
Probablemente muchas cosas de las que vimos pueden
hacerse con Excel, u otros softwares. No obstante, la
mayoría de éstos no funciona bien con grandes volúmenes
de datos.
Cierre
Con lo revisado, puedes editar datos de forma masiva y
guardarlos en archivos.
La librería pandas permite visualizar y sacar estadísticas
básicas de una forma rápida, además de poder agregar,
editar y eliminar columnas a tu antojo. Todo esto con
volúmenes de datos que no serían bien soportados con
otros softwares.
Cierre
Te invito a seguir explorando Python y las muchas
funcionalidades de la librería pandas. En niveles más
avanzados, esta permite identificar patrones y generar
predicciones en bases a sets de datos, que son las
necesidades que todas las empresas el día de hoy
necesitan cubrir.
 Dhar, V. (2013). Data science and
prediction. Communications of the ACM, 56(12), 64-73.
 Hayashi C. (1998) What is Data Science ? Fundamental
Bibliografía
Concepts and a Heuristic Example. In: Hayashi C.,
Yajima K., Bock HH., Ohsumi N., Tanaka Y., Baba Y.
(eds) Data Science, Classification, and Related
Methods. Studies in Classification, Data Analysis, and
Knowledge Organization. Springer, Tokyo.
>>> Cierre
Has finalizado la revisión de los contenidos.
A continuación, te invitamos a realizar las actividades y a revisar los recursos del
módulo que encontrarás en plataforma.
Descargar