Data Analysis con Pandas. Primeros pasos.

Patricia Carmona
Ironhack
Published in
6 min readFeb 9, 2020
Photo by Michael Payne on Unsplash

¿Tienes un dataset y quieres sacarle partido? ¿Necesitas analizar los datos de un archivo .csv? Pandas es una librería de Python con multitud de métodos y funcionalidades que te permitirán desgranar y agrupar la información que esconden esos datos para tomar decisiones.

En este post te presento los primeros pasos para poder manejarte con la librería Pandas de Python. En próximos artículos, te muestro cómo trabajar con los datos de DataFrames, visualizaciones, etc. Pero para comenzar, ¡unos pasos básicos!

La estructura del proyecto

El primer paso en el análisis de datos es montar la estructura del proyecto, antes de comenzar a generar archivos sin más. El proyecto debe estar en una carpeta, que sea un repositorio de código. Para hacerlo, crea un nuevo repositorio en GitHub (e incluye README). Clona el repositorio en local y de esta forma tendrás la misma carpeta en tu ordenador.

El repositorio debe tener tres carpetas: input, output y src. Una organización así te ayuda a saber dónde está cada archivo y al ser una estructura muy utilizada, será muy fácil para otros usuarios moverse entre las carpetas, si desean consultarlo.

  • En la carpeta de input se guardan los archivos con los que parte tu proyecto. El principal, el csv que importas.
  • En output, se almacenan los resultados del trabajo del análisis de datos.
  • Y en src, se guardan los archivos de código .py (editor de código, como Visual Studio Code) o .ipynb (entorno de trabajo, como Jupyter Notebook).

En desarrollo y en análisis de datos, a la hora de estructurar un proyecto o de documentar un archivo, piensa siempre que otra persona puede consultar el proyecto, por lo que se recomienda organizar los archivos de forma que se puedan consultar con facilidad y que no haya archivos duplicados.

El README es un documento imprescindible en tu proyecto. Redacta brevemente qué quieres hacer con el análisis. Esto delimita mucho qué líneas explorar y qué desarrollar, sobre todo es muy útil cuando comienzas a desarrollar y tienes muchas posibilidades por delante. Este documento también ayuda a otros a tener una idea de en qué consiste el proyecto.

DataFrame vs. Series

Dos términos técnicos muy útiles para hacerte con el vocabulario de pandas son DataFrame y Serie. La tabla que almacena los datos no se llama tabla, si no DataFrame y las columnas, se denominan Series.

Importa pandas

Para comenzar, necesitas tener instalado algunas de las librerías (en Terminal: pip3 install y el nombre de la librería), que se importan al inicio del documento .ipynb / .py. Puedes darle un alias para que al hacer uso de ellas sea más cómodo llamarlas. Por convención, a pandas se le da el alias “pd”.

import pandas as pd

La librería pandas es una herramienta desarrollada sobre Python, muy útil y flexible para análisis de datos, ya que partiendo de un dataset te permite generar un DataFrame y analizarlo gracias a diferentes métodos.

Importa el dataset y genera un DataFrame

El dataset es un conjunto de datos, normalmente en un archivo .csv, que al pasarlo a DataFrame se ve en formato tabla.

Por convención, el DataFrame se nombra como “df” en pandas. Para importarlo utiliza el siguiente código.

df = pd.read_csv('ruta relativa del archivo')

También puedes crear un DataFrame a partir de una lista de diccionarios, donde cada uno corresponde a un registro. Para darle formato, aplica el método pd.DataFrame(nombre de la lista de diccionarios).

students = [{
"name":"Jorge",
"surname":"Perez",
"age":24,
"weight":50,
"height": 170
},{
"name":"Pepe",
"surname":"Garcia",
"age":27,
"weight":60,
"height": 175
},
{
"name":"Aria",
"surname":"Jimenez",
"age":26,
"weight":70,
"height": 180
},
{
"name":"Maria",
"surname":"Ruz",
"age":25,
"weight":75,
"height": 181
},
{
"name":"Luisa",
"surname":"Perez",
"age":24,
"weight":50,
"height": 170
},
{
"name":"Luisa",
"surname":"Perez",
"age":24,
"weight":50,
"height": 170
}]
df = pd.DataFrame(students)

Para ver el DataFrame, solo necesitas llamar al DataFrame por su nombre y ejecutar la celda. Aunque si contiene muchos registros, Jupyter Notebook se ralentizará mucho y ejecutar las siguientes líneas de código será bastante tedioso por el tiempo que te llevará. Por lo que te recomiendo que solo traigas los 5 primeros registros con el método .head().

df # Llamada al DataFrame completo
df.head() # Llamada a los 5 primeros registros del DataFrame
df muestra todos los registros

Si quieres saber el número de líneas y columnas que tiene el DataFrame, utiliza shape y así puedes hacerte una idea de cómo de grande es el DataFrame. Otros métodos para tener información básica del DataFrame son .info() y .describe().

El método info que devuelve las características del DataFrame, número de columnas, cuáles son, cuántos registros no nulos tienen cada una y el tipo.

Para tener información estadística básica de estos datos, el método describe proporciona un resumen rápido por Series con el conteo, la media, desviación típica, valor mínimo, valor máximo y percentiles 25%, 50% y 75%.

df.shape
df.info()
df.describe()
df.describe()

Para tener un DataFrame limpio, hay que eliminar o sustituir los datos que no tienen registro (o nulos), llamados también ‘NaN’, el proceso para trabajarlos te lo cuento en el post Data Cleaning. Para conocer los registros nulos, el método .isnull() devuelve True o False si un registro es nulo. Aunque para resumir, puedes hacer una suma, con el método .sum() de valores nulos por columnas para conocer mejor el DataFrame.

df.isnull().sum()

Conoce las columnas del DataFrame

La estructura y el nombre de las columnas es importante, ya que para trabajar con el DataFrame se llama con frecuencia a las diferentes columnas, se las agrupa o se generan nuevas a partir de otras. Conoce las columnas que tiene el DataFrame con .columns. Puedes seleccionar una o varias haciendo una llamada a su nombre. Y también puedes renombrarlas.

df.columns   # Devuelve una lista con los nombres de las columnas
df.name # Devuelve la serie llamada Name
df['name'] # Otra forma de llamar a la serie Name
df[['name', 'surname']] # Devuelve las series Name y Surname
df.columns
df[[‘name’, ‘surname’]]

Para renombrar las columnas, puedes crear un diccionario con la key del nombre antiguo de la serie y como value, el nombre nuevo que quieres darle.

nombres = { 
'Name':'Nombre',
'Surname':'Apellido'
}
df = df.rename(columns=nombres)

El resto de las series, mantienen su nombre original.

df = df.rename(columns=nombres)

¿Hay algún registro duplicado? ¿Hay algún registro duplicado?

Si existen registros duplicados en el DataFrame, la objetividad del análisis es parcial, ya que no todos los registros tienen la misma presencia en el DataFrame. Para conocer si hay algún registro duplicado, utiliza el método .duplicated(). Al igual que con el método isnull(), se resume de forma rápida el número de registros duplicados si le añades el método .sum().

df.duplicated().sum()

Conteo de valores

En el proceso de conocer el DataFrame, es interesante conocer los diferentes valores que puede tomar una serie, es decir, los diferentes registros que tiene almacenados.

El método .value_counts() aplicado a una columna, hace un conteo, por ejemplo, de los diferentes registros. Esta información también puedes obtenerla con el método .unique().

df.nombre.value_counts() # Devuelve los diferentes nombres y el número de registros que hay para cada uno de ellos
df.nombre.unique()
df.nombre.value_counts()

Exportar los resultados a un nuevo csv

Tras finalizar el análisis, es recomendable guardar el DataFrame filtrado en un nuevo archivo.csv para una nueva consulta, si es necesario. El último método de estos primeros pasos es .to_csv() y te ayudará a ello.

Para utilizarlo debes incluir la ruta relativa de la carpeta donde quieres guardar el archivo y el nombre que quieres darle al mismo terminado en la extensión .csv.

En este código indico que guarde el archivo en la carpeta input. Como estoy ejecutando el código desde un archivo que se encuentra en el repo que contiene la carpeta input, solo hay que indicar la ruta descendiente del repo.

df.to_csv('input/nombredelarchivo.csv')

Métodos básicos para conocer un DataFrame

Con estos métodos básicos puedes conocer cómo es el DataFrame que vas a analizar. Pero sobre todo, son métodos que vas a utilizar con mucha frecuencia a la hora del análisis. ¡Comenzamos!

--

--

Patricia Carmona
Ironhack

Data Analyst. Improving the relation brands-users.