Spaces:
Sleeping
Sleeping
| import pandas as pd | |
| import gradio as gr | |
| # Load dataset | |
| df = pd.read_csv("hf_app_data.csv") | |
| # Make sure product_name is text | |
| df["product_name"] = df["product_name"].astype(str) | |
| # Function to analyze product | |
| def analyze_product(product_query): | |
| product_query = str(product_query).strip() | |
| if not product_query: | |
| return "Please enter a product ID or keyword." | |
| results = df[df["product_name"].str.contains(product_query, case=False, na=False)] | |
| if results.empty: | |
| return "Product not found. Try another ID or keyword." | |
| top = results.sort_values(by="popularity_score", ascending=False).head(3) | |
| output = f"Found {len(results)} match(es). Showing top 3:\n\n" | |
| for _, row in top.iterrows(): | |
| output += ( | |
| f"Product: {row['product_name']}\n" | |
| f"Popularity Score: {row['popularity_score']} ({row['popularity_class']})\n" | |
| f"Rating: {row['avg_rating']}\n" | |
| f"Sentiment: {row['avg_sentiment']}\n" | |
| f"Monthly Sales: {row['avg_monthly_sales']}\n" | |
| f"Price: EUR {row['avg_price']}\n" | |
| f"Recommendation: {row['recommendation']}\n" | |
| f"{'-'*40}\n" | |
| ) | |
| return output | |
| # Gradio UI | |
| iface = gr.Interface( | |
| fn=analyze_product, | |
| inputs=gr.Textbox( | |
| label="Enter Product ID (e.g. B003U925C4)", | |
| placeholder="Example: B003U925C4" | |
| ), | |
| outputs=gr.Textbox( | |
| label="Analysis", | |
| lines=18 | |
| ), | |
| title="Product Popularity Analyzer", | |
| description="Analyze product popularity based on sentiment, ratings, and sales data." | |
| ) | |
| iface.launch() |