Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
0
respuestas

Haz como yo hice: DataFrames y Filtros

import pandas as pd
import random


nombres_productos_posibles = [
    'Laptop', 'Smartphone', 'Tablet', 'Smartwatch', 'Auriculares', 'Teclado', 'Mouse', 'Monitor', 'Impresora', 'Altavoz',
    'Cámara', 'Disco Duro', 'Router', 'Webcam', 'Micrófono', 'Gafas VR', 'Consola', 'Control Remoto', 'Proyector', 'Batería Externa'
]
categorias_posibles = ['Electrónica', 'Hogar', 'Oficina', 'Entretenimiento', 'Accesorios']


productos_elegidos = random.sample(nombres_productos_posibles, 10)

data = {
    'Nombre del producto': productos_elegidos,
    'Categoría': [random.choice(categorias_posibles) for _ in range(10)],
    'Precio': [round(random.uniform(50, 1500), 2) for _ in range(10)],
    'Evaluación': [round(random.uniform(1.0, 5.0), 1) for _ in range(10)],      
    'Ítems vendidos': [random.randint(5, 500) for _ in range(10)]               
}


df_productos = pd.DataFrame(data)

df_productos

df_reviews=pd.read_csv("/content/reviews - reviews.csv")
display(df_reviews)
df_reviews.head()
df_reviews["asin"]
df_reviews["asin"].unique()
df_reviews[df_reviews["asin"] == "B007WTAJTO"]



lista_reviews=[]
with open("reviews - reviews.csv", "r", encoding="utf-8") as archivo:
  for review in archivo:
    lista_reviews.append(review.strip())

lista_reviews



import pandas as pd
import json
import os
from google.colab import userdata
from google import genai

# Configuración del cliente
os.environ["Alura"] = userdata.get('alura')
client = genai.Client(api_key=userdata.get('alura'))

def clasificar_reviews(lista_reviews_csv):
    # Definimos el prompt estricto pasándole el CSV completo
    prompt = f"""
    Actúa como un modelo de análisis de sentimiento experto y estructurador de datos JSON.

    Tu única tarea es analizar el sentimiento de la siguiente lista de reviews en formato CSV y clasificar cada una estrictamente en una de estas tres categorías: "Positivo", "Negativo" o "Neutro".

    CSV de entrada:
    {lista_reviews_csv}

    REGLAS CRÍTICAS DE SALIDA:
    1. Devuelve ÚNICAMENTE un objeto JSON válido con la siguiente estructura exacta:
    {{
      "Sentimientos": ["Clasificación1", "Clasificación2", "Clasificación3", ...]
    }}
    2. El orden de la lista "Sentimientos" debe coincidir perfectamente con el orden de las reviews del CSV de entrada.
    3. NO utilices bloques de código Markdown (prohibido usar ```json o ```).
    4. NO escribas texto introductorio, ni saludos, ni notas explicativas. Solo el JSON crudo.
    """
    
    # Llamada a Gemini usando el modelo rápido 2.5-flash
    respuesta = client.models.generate_content(
        model="gemini-2.5-flash", 
        contents=prompt
    )
    
    try:
        # Convertimos el texto JSON puro del modelo en un diccionario real de Python
        diccionario_sentimientos = json.loads(respuesta.text.strip())
        return diccionario_sentimientos
    except json.JSONDecodeError:
        print("Error: El modelo no devolvió un JSON limpio. Respuesta obtenida:")
        print(respuesta.text)
        return None

    

clasificar_reviews(lista_reviews)


import io

resultado_dict = clasificar_reviews(lista_reviews)

df = pd.read_csv(io.StringIO("\n".join(lista_reviews)))
df['Sentimiento'] = resultado_dict['Sentimientos']
display(df)