Skip to content

RubenGavidia/Pandas_Portfolio.py

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 

Repository files navigation

Pandas_Portfolio.py

Last work done with Pandas

import fitz  # PyMuPDF
import pandas as pd
import nltk
from collections import Counter
import string
import matplotlib.pyplot as plt  # Importar matplotlib para graficar
import numpy as np  # Importar numpy para cálculos

# Asegurarse de tener los recursos necesarios de nltk
nltk.download('stopwords')
nltk.download('punkt')
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize

# Cargar stopwords en español
stop_words = set(stopwords.words('spanish'))

# Función para leer texto desde un PDF
def leer_pdf(ruta_pdf):
    doc = fitz.open(ruta_pdf)
    texto = ""
    for pagina in doc:
        texto += pagina.get_text()
    return texto

# Procesar el texto
def procesar_texto(texto):
    texto = texto.lower()
    texto = texto.translate(str.maketrans('', '', string.punctuation))
    palabras = word_tokenize(texto, language='spanish')
    palabras_limpias = [palabra for palabra in palabras if palabra not in stop_words and palabra.isalpha()]
    return palabras_limpias

# Leer el PDF (reemplaza con la ruta a tu archivo)
ruta = "Cien años de soledad - Gabriel Garcia Marquez1.pdf"
texto_pdf = leer_pdf(ruta)
palabras = procesar_texto(texto_pdf)

# Contar y mostrar las 12 palabras más comunes
conteo = Counter(palabras)
top_12 = conteo.most_common(12)

# Convertir a DataFrame y mostrar
df_top = pd.DataFrame(top_12, columns=["Palabra", "Frecuencia"])
print(df_top)

# Crear el gráfico de tipo Pie Chart con mejoras visuales
plt.figure(figsize=(10, 7))
# Colores personalizados para el pie chart
colores = plt.cm.Paired(range(len(df_top)))

# Crear el gráfico de pie
wedges, texts, autotexts = plt.pie(df_top['Frecuencia'], labels=df_top['Palabra'], startangle=90, 
                                   colors=colores, wedgeprops={'edgecolor': 'black'}, autopct='%1.1f%%')

# Asegurar que el gráfico sea circular
plt.axis('equal')

# Añadir las frecuencias fuera del gráfico (calculando las posiciones)
for i, p in enumerate(wedges):
    angle = (p.theta2 - p.theta1) / 2. + p.theta1
    x = np.cos(np.radians(angle)) * 1.4  # Ajuste de la distancia de las frecuencias
    y = np.sin(np.radians(angle)) * 1.4  # Ajuste de la distancia de las frecuencias
    plt.text(x, y, f'{df_top["Frecuencia"][i]}', ha='center', va='center', fontweight='bold', fontsize=12)

# Título y estilos mejorados
plt.title('100 years of solitude', fontsize=16, fontweight='bold', color='navy')

# Mostrar el gráfico
plt.show()

2025-04-29 03_56_36-Untitled

Before:

nutrition-dataset

After:

nutrition-dataset1

plotting with pandas) plotting with pandas1 ![plotting with pandas2](https://user-images.githubusercontent.com/35381213/146656951-3056f065-2c52-4ed6-8763-bbe3f8488090.jpg plotting with pandas3 plotting with pandas4 plotting with pandas5 plotting with pandas6

Binning Numerical Data with pd cut: Binning Numerical Data with pd cut

df pivot(index = 'Region', columns='Team', values = 'Revenue'): df pivot(index = 'Region', columns='Team', values = 'Revenue')

The Process of cleaning a Dataset: nutrition-dataset nutrition-dataset_1 nutrition-dataset_2 nutrition-dataset_3 nutrition-dataset_4 nutrition-dataset_6 nutrition-dataset_7 nutrition-dataset_8 nutrition-dataset_9 nutrition-dataset_10

About

Last work done with Pandas

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages