Durante 5 años ayudamos a las empresas a alcanzar sus objetivos de mercado y de marca. Millennial es una empresa especializada en tecnología.

Galleria

Contactos

Enrique Palacios 360, Oficina 313, Miraflores - Lima

+51-975-113-510

 

MySQL con Python imprescindibles para los analistas de datos

1*1jTEdq45os7h9il8C8bvXA

Imagen de IOTA Academy

La integración de MySQL con Python

proporciona una solución robusta para administrar bases de datos dentro de aplicaciones de Python. MySQL, un sistema de gestión de bases de datos relacionales ampliamente utilizado, se puede conectar sin problemas a Python. Esta integración permite un almacenamiento, recuperación y manipulación eficientes de datos dentro de Python, lo que la convierte en una opción ideal para varios proyectos de desarrollo de aplicaciones.

Trabajaremos con el conjunto de datos “Datos diarios de coronavirus” de Data.world sitio, cuando presentaremos una guía detallada y secuencial para un proyecto de datos que comprende los siguientes pasos:

  • Establezca una conexión de base de datos MySQL.
  • Cargue datos CSV en una tabla de base de datos designada a través de Python.
  • Conéctese a la base de datos y utilice SQL para recuperar los datos con el fin de desarrollar un dashboard con el software Tableau.

En primer lugar, aunque puedo importar una fuente de datos CSV directamente a Tableau sin pasar por una base de datos, me gustaría explicar la necesidad de una base de datos para almacenar nuestros datos.

Planteamiento del problema:

Imagina que tienes más de 20 archivos csv y cada archivo contiene más de 100k de filas, el total será de 2 millones de filas de datos, ¿cuál debería ser la solución para centralizar todos los datos en un solo lugar?

Archivo CSV descargado de data.world

Solución:

Por lo tanto, como analistas de datos, siempre estamos pensando en una solución optimizada y una plantilla para casos futuros.

En nuestro caso, la base de datos MySQL almacenará todos los datos, pero ¿qué pasa con la solución optimizada de la que he estado hablando?

Por lo tanto, estamos interesados en desarrollar una solución para almacenar automáticamente datos en la tabla de la base de datos MySQL con un solo clic. Para ilustrar nuestra solución, aquí hay un proceso de ejecución que proporcioné.

1*N2J6adcMEluhq3now6wf A
Imagen del autor

Paso 1: Importar las bibliotecas necesarias

  • pandas: Biblioteca de Python utilizada para trabajar con conjuntos de datos. Tiene funciones para analizar, limpiar, explorar y manipular datos.
  • mysql.connector: API de base de datos Python que le permite conectarse e interactuar con bases de datos MySQL.
  • glob: en Python se utiliza para buscar archivos que coincidan con un patrón o nombre específico.
import pandas as pd
import mysql.connector
import glob

Paso 2: Conéctese a la base de datos agregando los parámetros necesarios y cree un objeto de cursor para ejecutar consultas SQL.

conn = mysql.connector.connect(
host='localhost',
user='root',
password='',
database='test')
cursor = conn.cursor()

Paso 3: Cree una función de lectura para leer las filas csv de todos los archivos csv que comiencen por full_data.

Como consejo, es fundamental crear funciones modulares a la hora de desarrollar scripts de Python, sobre todo cuando se trabaja con tareas de procesamiento de datos y machine learning, nos permite reutilizar fragmentos de código en diferentes partes de nuestro script y reducir la duplicación de código.

Paso 4: Inserte datos en la tabla mediante la creación de una función de inserción mediante la consulta INSERT.

def insert_line_into_table(table, db, values):
Q_test = f"INSERT INTO {db}.{table} VALUES {values};"
try:
cursor.execute(Q_test)
conn.commit()
except Exception as e:
print(f"Error: {str(e)}")

Si se produce una excepción, no se preocupe, se le informará mediante un mensaje de error, que se muestra como advertencia.

Paso 5: En términos de redundancia, tenemos que crear una tabla temporal para almacenar datos temporalmente, se puede eliminar o reemplazar una vez que se completen las operaciones.

def copy_data_from_table1_to_table2(table1, table2):
try:
query = f"INSERT INTO {table2} SELECT * FROM {table1};"
cursor.execute(query)
conn.commit()
print(f"Data from {table1} inserted into {table2} successfully.")
except Exception as e:
print(f"Error: {str(e)}")

Paso 6: Usaremos todas las funciones que hemos creado iterando sobre cada archivo e insertando sus datos en la base de datos, copiando los datos de la tabla1 en la tabla temporal.

for file_path in file_paths:
df = Read_file_lines(file_path)
df = df.fillna(0)
#df.fillna(0) used to fill missing or NaN (Not a Number) values in a DataFrame with 0.

for index, row in df.iterrows():
values = tuple(row)
insert_line_into_table(‘data’, ‘test’, values)

copy_data_from_table1_to_table2(‘data’, ‘temp’)

conn.close()

Como se muestra aquí, todos los datos se insertan en la tabla “data”.

1*rGZDOv5QW Y2dbtXTsiZEw
Captura de pantalla de SQLyog por autor

Paso 7: Introduzca los parámetros necesarios para conectarse a la base de datos MySQL en Tableau Software.

1*mfZyuVJpIjOPQ 9XZw6bRQ
Captura de pantalla por el autor

Paso 8: Edite la consulta SQL personalizada para mostrar el total de “Nuevas muertes” y “Nuevos casos” por ubicación.

1*L0gtlLWdZzYO9OZrBnqqQQ
Captura de pantalla de la consulta SQL por autor
Captura de pantalla del resultado de la consulta por autor

Paso 9: Crear un gráfico

Finalmente, creamos un gráfico simple que muestra algunas medidas como el número total de muertes en comparación con el número total de casos.

Enlace de Google Drive

Conclusión

Python sigue siendo el lenguaje dominante para el análisis de datos en muchos proyectos. Su simplicidad, su amplio soporte de biblioteca y su naturaleza de código abierto lo convierten en una opción ideal para tareas de análisis de datos.

 
MySQL
Pitón
Pandas