Funciones esenciales en Python para visualización de datos y operaciones de archivos

Clases y métodos especiales en Python


__all__ = ["Hijo", "Padre"]  # Controla las importaciones con from modulo import *

class Hijo(Padre):
    def __init__(self):
        super().__init__()
    
    def __call__(self, param):  # Permite invocar el objeto como una función
        pass

    def __len__(self):  # Habilita el uso de len(objeto)
        pass

    def __iter__(self):  # Facilita la iteración con for elemento in objeto
        pass

    def __getitem__(self, idx):  # Permite el acceso mediante objeto[indice]
        pass

    def __str__(self):  # Define la representación con str(objeto)
        pass

    def __repr__(self):
        pass

Manipulación de cadenas de texto


"CONTIENE" in "texto_contiene_subcadena"  # Devuelve True

cadena.lstrip().rstrip()  # Elimina espacios en blanco al inicio y final
lista_partes = texto.split(separador)  # Divide la cadena en una lista

Variables de entorno con os


import os

os.environ["mi_variable"] = "valor_personalizado"  # Establece una variable de entorno

Operaciones con archivos y directorios


import os, shutil, glob

ruta_completa = os.path.join(directorio1, directorio2, archivo)
archivos = glob.glob(patron_ruta)  # Retorna lista de archivos que coinciden, sin recursión
archivos.sort()

nombre_archivo = os.path.basename(ruta_completa)  # Extrae el nombre del archivo
lista_contenido = os.listdir(ruta_directorio)  # Lista archivos y carpetas en un directorio

shutil.copy(origen, destino)  # Copia un archivo
shutil.rmtree(ruta_directorio)  # Elimina un directorio recursivamente
os.remove(ruta_archivo)  # Elimina un archivo específico
os.rename(nombre_antiguo, nombre_nuevo)  # Renombra archivo o directorio
shutil.move(origen, destino)  # Mueve un archivo o directorio

Visualización con Matplotlib


import matplotlib.pyplot as plt
import numpy as np

# Mostrar una imagen desde un arreglo NumPy
plt.imshow(datos_imagen)
plt.axis('off')  # Oculta los ejes para una visualización limpia
plt.show()

# Gráfico de dispersión
x_vals = np.linspace(0, 10, 50)
y_vals = np.sin(x_vals)
plt.scatter(x_vals, y_vals, color='green', marker='o', size=10)
plt.title("Gráfico de Dispersión")
plt.show()

# Gráfico de líneas
plt.plot(x_vals, y_vals, label='Función seno', color='orange', linewidth=2)
plt.xlabel("Eje X")
plt.ylabel("Eje Y")
plt.legend(loc='best')
plt.savefig("grafico_lineas.pdf", format='pdf')
plt.show()

# Gráfico circular
proporciones = [40, 30, 20, 10]
plt.pie(proporciones, labels=['A', 'B', 'C', 'D'])
plt.show()

# Histograma para distribución de datos
datos_histograma = np.random.normal(0, 1, 1000)
plt.hist(datos_histograma, bins=30, edgecolor='black')
plt.show()

Serialización con JSON


import json

diccionario = {
    "clave": "valor",
    "lista": [1, 2, 3]
}
cadena_json = json.dumps(diccionario, indent=2)  # Convierte objeto a cadena JSON

objeto_original = json.loads(cadena_json)  # Parsea cadena JSON a objeto Python

Gestión del tiempo


import time
from datetime import datetime

marca_temporal = time.time()  # Obtiene el tiempo actual en segundos desde época
ahora = datetime.now()  # Retorna fecha y hora actual como objeto datetime

DataFrames con Pandas y Polars


import pandas as pd

# Configuración de visualización
pd.set_option('display.width', None)
pd.set_option('display.max_rows', 100)
pd.set_option('display.max_columns', 50)

# Lectura y escritura de datos
df = pd.read_csv("datos.csv")  # Desde CSV
df = pd.read_excel("datos.xlsx")  # Desde Excel
df.to_parquet("salida.parquet", index=False)  # Guardar en formato Parquet

# Selección de datos
subset_columnas = df[['col1', 'col2']]
fila_especifica = df.at[0, 'col1']  # Acceso rápido a un valor escalar

# Exploración básica
primeras_filas = df.head(5)
ultimas_filas = df.tail(3)
total_filas = len(df)

# Eliminación de duplicados
df_unique = df.drop_duplicates(subset=['campo_clave'])

# Creación de nuevas columnas
df['nueva_col'] = df['col_a'] * df['col_b']

# Iteración (no recomendado para grandes datasets)
for _, fila in df.iterrows():
    proceso = fila['columna']

# Filtrado de datos
filtro_simple = df[df['estado'].isin(['activo', 'pendiente'])]
filtro_compuesto = df[(df['valor'] > 100) & (df['categoria'] == 'A')]

# Agrupación y agregación
grupo = df.groupby(['grupo1', 'grupo2'])
conteo_grupo = grupo.size().reset_index(name='conteo')

# Unión de DataFrames
df_merged = pd.merge(
    df1,
    df2[['col_relevante']],
    left_on='id_comun',
    right_on='id',
    how='left',
    suffixes=('_original', '_nueva')
)

# Copia profunda
df_copia = df.copy()

# Reinicio de índice
df_reiniciado = df.reset_index(drop=True)

import polars as pl  # Alternativa moderna para manipulación de datos

Patrón Singleton con hilos


import threading

class Singleton:
    _bloqueo = threading.Lock()
    _instancia = None

    def __new__(cls, *args, **kwargs):
        if cls._instancia is None:
            with cls._bloqueo:
                if cls._instancia is None:
                    cls._instancia = super().__new__(cls)
        return cls._instancia

Consumo de APIs con requests


import requests
from time import sleep

url_api = "https://api.ejemplo.com/datos"
cabeceras = {"Autorización": "token_ejemplo"}
parametros = {"pagina": 1}

respuesta = requests.get(
    url=url_api,
    headers=cabeceras,
    params=parametros,
    proxies={"http": "http://proxy.local:8080"},
    timeout=30
)
if respuesta.status_code == 200:
    datos_json = respuesta.json()
    sleep(1)  # Espera para evitar sobrecarga

Conexión a bases de datos MySQL


# Requiere instalar mysql-connector-python
import mysql.connector

conexion = mysql.connector.connect(
    host="localhost",
    usuario="admin",
    contraseña="secreto",
    base_datos="mi_bd"
)
cursor = conexion.cursor()
cursor.execute("SELECT * FROM tabla_ejemplo")
resultados = cursor.fetchall()
conexion.close()

Cálculos numéricos con NumPy


import numpy as np

matriz_a = np.array([[1, 2], [3, 4]])
matriz_b = np.array([[5], [6]])

# Multiplicación de matrices
producto = np.dot(matriz_a, matriz_b)  # También: producto = matriz_a @ matriz_b
print(producto)

Etiquetas: Python Matplotlib pandas NumPy json

Publicado el 6-18 19:32