Está en la página 1de 11

SEMANA I

MINERÍA DE DATOS

Taller de limpieza y minería de datos con


Python y Pandas para principiantes y
profesionales
Este taller cubrirá desde los conceptos básicos de limpieza y
preprocesamiento de datos hasta técnicas avanzadas de minería de
datos utilizando la biblioteca de Pandas en Python. Aprenderás cómo
cargar, limpiar y preprocesar datos estructurados, aplicar
transformaciones y filtraciones de datos, agrupar datos y realizar
análisis estadísticos. También cubriremos técnicas avanzadas de
minería de datos, como la segmentación de clientes, la clasificación y la
regresión. Este taller está diseñado tanto para principiantes como para
profesionales que deseen mejorar sus habilidades en el análisis y la
minería de datos con Python y Pandas.

Dr. Edwin Gerardo Acuña Acuña

Dr. Edwin Gerardo Acuña Acuña 2023


Limpiar data de un Excel con columnas en blanco, números
negativo, letras y más
El programa que se ha propuesto tiene como objetivo leer un archivo
de Excel que contiene información de personas en varias columnas,
incluyendo su nombre, apellido, edad, dirección, teléfono y correo
electrónico. El programa limpia los datos de la siguiente manera:
1. Elimina cualquier número que se encuentre en el campo de
nombre y apellido, ya que se asume que estos campos solo deben
contener letras.
2. Elimina las filas donde el nombre o el apellido estén en blanco, ya
que esto no proporciona información útil.
3. Convierte el campo de edad a un formato numérico.
4. Elimina cualquier fila que tenga una edad menor o igual a cero.
5. Guarda los datos limpios en un nuevo archivo de Excel.
El programa utiliza las siguientes librerías de Python:
 Pandas: para leer el archivo de Excel y trabajar con los datos en
un marco de datos.
 Regular Expressions (re): para eliminar los números en los
campos de nombre y apellido.
El programa comienza importando las librerías necesarias y luego
leyendo el archivo de Excel con la función read_excel() de Pandas.
Después de leer los datos, el programa utiliza la función apply() para
aplicar una función lambda que elimina cualquier número en los
campos de nombre y apellido. También utiliza la función str.strip()
para eliminar cualquier espacio en blanco adicional en los campos de
nombre y apellido.

Dr. Edwin Gerardo Acuña Acuña 2023


Luego, el programa utiliza la función pd.to_numeric() para convertir el
campo de edad a un formato numérico y elimina cualquier fila con una
edad menor o igual a cero utilizando la función de indexación booleana.
Finalmente, el programa guarda los datos limpios en un nuevo archivo
de Excel utilizando la función to_excel() de Pandas y muestra los datos
limpios en la pantalla con la función print().
Para imprimir los datos originales (es decir, los datos sucios) en la
pantalla en Google Colab, puedes simplemente usar la función print()
de Python después de leer los datos desde el archivo Excel. Por
ejemplo:
# importar librerías necesarias
import pandas as pd

# leer archivo Excel


df = pd.read_excel("DATA.xlsx")

# imprimir datos originales en la pantalla


print(df)
En este código, se usa la función read_excel() de Pandas para leer los
datos del archivo Excel "DATA.xlsx". Después de leer los datos, se usa
la función print() para imprimir los datos originales en la pantalla. Los
datos se imprimirán en formato de tabla.
Para guardar los datos limpios en Google Colab, puedes utilizar la
función files.download() de Colab. Esta función permite descargar un
archivo generado en Colab al equipo local.
Para utilizar esta función, primero debes guardar el archivo en el
sistema de archivos temporal de Colab, lo que se puede hacer mediante

Dr. Edwin Gerardo Acuña Acuña 2023


la función to_csv() o to_excel() de Pandas. Luego, puedes utilizar la
función files.download() para descargar el archivo. Aquí está el código
completo:
# importar librerías necesarias
import pandas as pd
import re
from google.colab import files

# leer archivo Excel


df = pd.read_excel("DATA.xlsx")

# limpiar datos
df['Nombre'] = df['Nombre'].apply(lambda x:
re.sub(r'\d+', '', str(x))) # eliminar números en el
nombre
df['Apellido'] = df['Apellido'].apply(lambda x:
re.sub(r'\d+', '', str(x))) # eliminar números en el
apellido
df = df[df['Nombre'].str.strip() != ''] # eliminar
filas con nombre en blanco
df = df[df['Apellido'].str.strip() != ''] # eliminar
filas con apellido en blanco
df['Edad'] = pd.to_numeric(df['Edad'],
errors='coerce') # convertir Edad a numérico
df = df[df['Edad'] > 0] # eliminar filas con edad
menor o igual a 0

# guardar datos limpios en un archivo temporal


df.to_excel("datos_limpios.xlsx", index=False)

print(df)

# descargar archivo desde Colab


files.download("datos_limpios.xlsx")
En este código, se utiliza la función files.download() para descargar el
archivo generado. La función to_excel() de Pandas se utiliza para
guardar los datos limpios en un archivo temporal llamado

Dr. Edwin Gerardo Acuña Acuña 2023


"datos_limpios.xlsx" sin la columna de índice. Después de guardar los
datos limpios, la función files.download() se utiliza para descargar el
archivo en el equipo local.
Recuerda que el archivo descargado se almacenará en la carpeta de
descargas predeterminada de tu navegador. Si deseas guardarlo en una
ubicación diferente, debes mover el archivo después de la descarga.
Contar cuantos nombres apellidos y edades son iguales
Para contar cuántos nombres, apellidos y edades se repiten en los datos
limpios, puedes utilizar el mismo marco de datos que se ha creado
después de la limpieza. Puedes usar la función value_counts() de
Pandas para contar cuántas veces aparece cada valor en cada columna.
Aquí te dejo un ejemplo de cómo se podría implementar este programa:

# importar librerías necesarias


import pandas as pd

# leer archivo Excel


df = pd.read_excel("datos_limpios.xlsx")

# contar nombres repetidos


nombres_repetidos = df['Nombre'].value_counts()

# contar apellidos repetidos


apellidos_repetidos = df['Apellido'].value_counts()

# contar edades repetidas


edades_repetidas = df['Edad'].value_counts()

# imprimir resultados
print("Nombres repetidos:")
print(nombres_repetidos)
print("\nApellidos repetidos:")
print(apellidos_repetidos)
print("\nEdades repetidas:")

Dr. Edwin Gerardo Acuña Acuña 2023


print(edades_repetidas)
En este código, se lee el archivo Excel "datos_limpios.xlsx" que
contiene los datos limpios. Luego, se utiliza la función value_counts()
para contar cuántas veces aparece cada valor en las columnas de
Nombre, Apellido y Edad, respectivamente. Estos valores se almacenan
en las variables nombres_repetidos, apellidos_repetidos y
edades_repetidas.
Finalmente, se utilizan las funciones print() para imprimir los
resultados en la pantalla. Los resultados se imprimen separados por
columna y se muestran cuántas veces se repiten los nombres, apellidos
y edades.
Graficar las edades
Para graficar las edades de los datos limpios, se puede utilizar la
librería Matplotlib de Python. Aquí te dejo un ejemplo de cómo se
podría implementar este programa:
# importar librerías necesarias
import pandas as pd
import matplotlib.pyplot as plt

# leer archivo Excel


df = pd.read_excel("datos_limpios.xlsx")

# graficar edades
plt.hist(df['Edad'], bins=10)
plt.xlabel('Edad')
plt.ylabel('Frecuencia')
plt.title('Histograma de edades')
plt.show()

En este código, se lee el archivo Excel "datos_limpios.xlsx" que


contiene los datos limpios. Luego, se utiliza la función hist() de
Matplotlib para crear un histograma de las edades. La función hist()

Dr. Edwin Gerardo Acuña Acuña 2023


toma como entrada la columna de Edad y el número de intervalos (o
bins) en los que se desea dividir el rango de edades. En este ejemplo, se
ha establecido el número de bins en 10.
También se utilizan las funciones xlabel(), ylabel() y title() para agregar
etiquetas al eje x, eje y y al título del gráfico, respectivamente.
Finalmente, se utiliza la función show() para mostrar el histograma en
una ventana separada.
Resumiendo
Este tipo de programas son una buena manera de aprender sobre
minería de datos y cómo aplicarla en Python. En este caso, el programa
muestra cómo identificar registros duplicados en un conjunto de datos,
lo cual es una tarea común en minería de datos.
La biblioteca de Pandas utilizada en este programa también es una
herramienta importante en la minería de datos, ya que ofrece una
amplia gama de funciones para manipular y analizar datos en Python.
A través de programas como este, puedes aprender cómo utilizar
Pandas para preprocesar y analizar datos antes de aplicar técnicas más
avanzadas de minería de datos.
Además, al comprender los conceptos detrás de este programa, como la
agrupación de datos y la identificación de registros duplicados, puedes
aplicar estos conocimientos a otras tareas de minería de datos, como la
segmentación de clientes o la clasificación de datos.
En resumen, este tipo de programas son una excelente manera de
comenzar a aprender sobre minería de datos en Python y pueden servir
como una base para aprender técnicas más avanzadas en el futuro.

Dr. Edwin Gerardo Acuña Acuña 2023


Pandas es una biblioteca de Python para el análisis de datos y la
manipulación de datos estructurados. Esta biblioteca proporciona una
estructura de datos llamada DataFrame que permite trabajar con datos
de manera similar a una hoja de cálculo.
Pandas es una de las bibliotecas más populares y utilizadas en el
mundo del análisis de datos en Python debido a su facilidad de uso y
eficiencia. Con Pandas, puedes cargar, manipular, transformar y
analizar grandes cantidades de datos de manera eficiente.
Algunas de las principales características de Pandas son:
 Estructura de datos DataFrame para trabajar con datos tabulares
de manera eficiente.
 Funciones para leer y escribir datos desde y hacia una variedad
de formatos, incluidos archivos CSV, Excel, SQL y JSON.
 Funciones para limpiar y preprocesar datos, como la eliminación
de valores faltantes, la selección de columnas, la filtración de
datos y la agrupación de datos.
 Funciones para análisis estadísticos y cálculo, como la agregación
de datos, el cálculo de estadísticas descriptivas y la correlación de
datos.
En resumen, Pandas es una biblioteca esencial para cualquier persona
que trabaje con datos en Python, ya que facilita la manipulación y el
análisis de grandes cantidades de datos de manera eficiente y efectiva.

Dr. Edwin Gerardo Acuña Acuña 2023


Por si lo desea en JAVA este es el código
Este código utiliza la librería Apache POI para leer y escribir archivos Excel
en Java. Además, utiliza expresiones regulares para limpiar los nombres y
apellidos eliminando cualquier número presente en ellos. También elimina
filas que tengan nombres o apellidos en blanco o edades menores o iguales a
cero.
Finalmente, guarda los datos limpios en un archivo temporal y los imprime en
la consola. Por supuesto, para descargar el archivo desde el programa tendrías
que implementar alguna solución adicional.
import java.io.File;
import java.io.IOException;
import java.util.regex.Pattern;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;

public class Main {


public static void main(String[] args) throws
IOException {
// leer archivo Excel
Workbook workbook = WorkbookFactory.create(new
File("DATA.xlsx"));
Sheet sheet = workbook.getSheetAt(0);

// limpiar datos
Pattern pattern = Pattern.compile("\\d+");
for (Row row : sheet) {

Dr. Edwin Gerardo Acuña Acuña 2023


Cell nombreCell = row.getCell(0);
String nombre =
nombreCell.getStringCellValue().trim().replaceAll(pa
ttern.pattern(), "");

Cell apellidoCell = row.getCell(1);


String apellido =
apellidoCell.getStringCellValue().trim().replaceAll(
pattern.pattern(), "");

Cell edadCell = row.getCell(2);


double edad = edadCell.getNumericCellValue();

if (nombre.isEmpty() || apellido.isEmpty() ||
edad <= 0) {
sheet.removeRow(row);
} else {
nombreCell.setCellValue(nombre);
apellidoCell.setCellValue(apellido);
edadCell.setCellValue(edad);
}
}

// guardar datos limpios en un archivo temporal


workbook.write(new File("datos_limpios.xlsx"));

System.out.println("Datos limpios:");
for (Row row : sheet) {
Cell nombreCell = row.getCell(0);
String nombre =
nombreCell.getStringCellValue();

Cell apellidoCell = row.getCell(1);


String apellido =
apellidoCell.getStringCellValue();

Cell edadCell = row.getCell(2);


double edad = edadCell.getNumericCellValue();

System.out.println(nombre + " " + apellido + "


" + edad);

Dr. Edwin Gerardo Acuña Acuña 2023


}
}
}

Dr. Edwin Gerardo Acuña Acuña 2023

También podría gustarte