Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

Aula 5 - Faça como eu fiz: DataFrames e Filtros

import pandas as pd
from groq import Groq

client = Groq()

dados_produtos = {
    'nome do produto': ['Smartphone X', 'Notebook Y', 'Fone Bluetooth', 'Cafeteira Express', 'Livro Ficção'],
    'categoria': ['eletrônicos', 'eletrônicos', 'eletrônicos', 'eletrodomésticos', 'livros'],
    'preço': [1500.00, 3500.00, 200.00, 450.00, 45.00],
    'avaliação': [4.5, 1.8, 4.2, 1.5, 4.9],
    'itens vendidos': [120, 30, 450, 60, 200]
}
df_inicial = pd.DataFrame(dados_produtos)
df_inicial.to_csv('produtos.csv', index=False, encoding='utf-8')

dados_reviews = {
    'id_produto': [1, 2, 3, 4, 5],
    'review': [
        'Excelente produto, chegou super rápido e funciona muito bem!',
        'Muito ruim, trava o tempo todo e a bateria não dura nada.',
        'O fone é bom, mas o grave deixa um pouco a desejar.',
        'Péssimo atendimento e o produto veio quebrado, odiei.',
        'História fantástica, li em dois dias!'
    ]
}
df_rev_inicial = pd.DataFrame(dados_reviews)
df_rev_inicial.to_csv('reviews.csv', index=False, encoding='utf-8')

df = pd.read_csv('produtos.csv', encoding='utf-8')

print("=== DATAFRAME COMPLETO ===")
print(df)

print("\n=== HEAD ===")
print(df.head(2))

coluna_preco = df['preço']
print("\n=== COLUNA ESPECÍFICA (PREÇO) ===")
print(coluna_preco)

categorias_unicas = df['categoria'].unique()
print("\n=== VALORES ÚNICOS (CATEGORIA) ===")
print(categorias_unicas)

filtro_eletronicos = df[df['categoria'] == 'eletrônicos']
print("\n=== FILTRO SIMPLES (ELETRÔNICOS) ===")
print(filtro_eletronicos)

filtro_avaliacao_baixa = df[df['avaliação'] < 2.0]
print("\n=== FILTRO CONDICIONAL (AVALIAÇÃO < 2.0) ===")
print(filtro_avaliacao_baixa)

filtro_combinado = df[(df['categoria'] == 'eletrônicos') & (df['preço'] > 500)]
print("\n=== FILTRO COMBINADO (ELETRÔNICOS & PREÇO > 500) ===")
print(filtro_combinado)

linha_iloc = df.iloc[2]
print("\n=== SELEÇÃO ILOC (ÍNDICE NUMÉRICO 2) ===")
print(linha_iloc)

df_textual = df.set_index('nome do produto')
linha_loc = df_textual.loc['Smartphone X']
print("\n=== SELEÇÃO LOC (ÍNDICE TEXTUAL 'Smartphone X') ===")
print(linha_loc)

print("\n=== DESAFIO: ANÁLISE DE SENTIMENTOS COM LLM ===")
df_reviews = pd.read_csv('reviews.csv', encoding='utf-8')

sentimentos = []
for review in df_reviews['review']:
    try:
        completion = client.chat.completions.create(
            model="llama3-8b-8192",
            messages=[
                {
                    "role": "system",
                    "content": "Você é um classificador de sentimentos. Responda APENAS com uma das seguintes palavras: Positivo, Negativo ou Neutro."
                },
                {
                    "role": "user",
                    "content": f"Classifique o sentimento deste feedback: {review}"
                }
            ],
            temperature=0.0,
            max_tokens=10
        )
        sentimento = completion.choices[0].message.content.strip()
        sentimentos.append(sentimento)
    except Exception as e:
        sentimentos.append("Erro")

df_reviews['sentimento'] = sentimentos
print(df_reviews)
1 resposta

ola, parabéns pela atividade!