slogan3

Ontwikkel een Python Script voor Gegevensvisualisatie en Rapportage

description

Met deze prompt kan de gebruiker een effectief Python script ontwikkelen dat data inzichtelijk maakt met visuele elementen en heldere rapporten. Het helpt bij het begrijpen van verschillende visualisatietechnieken en hoe deze toe te passen met populaire Python bibliotheken, wat beter is dan alleen ruwe data-analyse zonder visuele ondersteuning.

prompt

Help me een Python script te schrijven dat gegevens visualiseert en rapporten genereert op basis van de volgende dataset: <voer de datasetbeschrijving of URL in>. Voeg grafiek ...

try_prompt

generate_helper
disclaimerOnPageApi

ai_answers

provider: openai
model: gpt-4.1-nano
Hier is een voorbeeld van een Python-script dat verkoopgegevens visualiseert en een rapport genereert. Ik gebruik hiervoor de bibliotheken pandas voor data-analyse, matplotlib en seaborn voor visualisaties, en rapportgeneratie met behulp van eenvoudige tekstbestanden. **Benodigde bibliotheken:** - pandas - matplotlib - seaborn **Installatie (indien nog niet geïnstalleerd):** ```bash pip install pandas matplotlib seaborn ``` **Voorbeeld Python-script:** ```python import pandas as pd import matplotlib.pyplot as plt import seaborn as sns # Stap 1: Data inladen of genereren # Voor dit voorbeeld genereren we een mock dataset data = { 'Maand': ['Januari', 'Februari', 'Maart', 'April', 'Mei', 'Juni', 'Juli', 'Augustus', 'September', 'Oktober', 'November', 'December'], 'Omzet': [12000, 15000, 13000, 16000, 17000, 20000, 21000, 22000, 19000, 25000, 30000, 35000], 'Categorie': ['Kleding', 'Elektronica', 'Kleding', 'Speelgoed', 'Elektronica', 'Kleding', 'Elektronica', 'Speelgoed', 'Kleding', 'Elektronica', 'Speelgoed', 'Kleding'] } df = pd.DataFrame(data) # Stap 2: Visualisaties maken # 2.1 Lijndiagram van omzet per maand plt.figure(figsize=(10,6)) sns.lineplot(x='Maand', y='Omzet', data=df, marker='o') plt.title('Omzet per maand') plt.xlabel('Maand') plt.ylabel('Omzet (€)') plt.xticks(rotation=45) plt.tight_layout() plt.savefig('omzet_per_maand.png') plt.close() # 2.2 Staafdiagram van omzet per productcategorie categorie_omzet = df.groupby('Categorie')['Omzet'].sum().reset_index() plt.figure(figsize=(8,6)) sns.barplot(x='Categorie', y='Omzet', data=categorie_omzet) plt.title('Totale omzet per categorie') plt.xlabel('Categorie') plt.ylabel('Omzet (€)') plt.tight_layout() plt.savefig('omzet_per_categorie.png') plt.close() # 2.3 Taartdiagram van omzetverdeling per maand plt.figure(figsize=(8,8)) plt.pie(df['Omzet'], labels=df['Maand'], autopct='%1.1f%%', startangle=140) plt.title('Verhouding omzet per maand') plt.tight_layout() plt.savefig('omzet_verdeling_maand.png') plt.close() # Stap 3: Rapport genereren rapport = f""" Rapport Verkoopgegevens Online Winkel Inzichten: - De omzet is het hoogst in December (€{df['Omzet'].iloc[-1]:,.2f}) en het laagst in Januari (€{df['Omzet'].iloc[0]:,.2f}). - Elektronica-producten dragen het meest bij aan de totale omzet. - De trend laat een gestage groei zien in de loop van het jaar. Visualisaties: - Omzet per maand: 'omzet_per_maand.png' - Omzet per categorie: 'omzet_per_categorie.png' - Verdeling van omzet per maand (taartdiagram): 'omzet_verdeling_maand.png' """ # Bestand opslaan with open('verkoop_rapport.txt', 'w') as file: file.write(rapport) print("Rapport en visualisaties zijn gegenereerd.") ``` **Uitleg van bibliotheken en methoden:** - **pandas:** voor data-inladen, manipulatie en aggregatie. - **matplotlib.pyplot:** basisbibliotheek voor het maken van grafieken. - **seaborn:** een op matplotlib gebaseerde bibliotheek die het maken van mooie en informatieve visualisaties vereenvoudigt, zoals lijndiagrammen en staafdiagrammen. - **plt.savefig():** slaat de gegenereerde grafieken op als PNG-bestanden. - **Openen en schrijven van tekstbestanden:** voor het genereren van een eenvoudig rapport met inzichten en verwijzingen naar de visualisaties. Met dit script heb je een basis voor het visualiseren van verkoopdata en het genereren van een rapport. Je kunt de dataset aanpassen of uitbreiden voor meer gedetailleerde analyses.
provider: deepseek
model: deepseek-chat
Zeker, hier is een volledig Python-script met uitleg over de gebruikte bibliotheken en methoden: ```python import pandas as pd import matplotlib.pyplot as plt import seaborn as sns from datetime import datetime import numpy as np # Stijl instellen voor de visualisaties plt.style.use('default') sns.set_palette("husl") # 1. BIBLIOTHEKEN UITLEG """ - pandas: Voor data manipulatie en analyse (DataFrames) - matplotlib.pyplot: Basis visualisatiebibliotheek voor grafieken - seaborn: Statistische visualisaties met mooiere stijlen - datetime: Voor datummanipulatie - numpy: Voor numerieke berekeningen """ # 2. VOORBEELDDATASET CREËREN (vervang dit met je eigen data) def create_sample_data(): maanden = ['Jan', 'Feb', 'Mrt', 'Apr', 'Mei', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec'] data = { 'Maand': maanden * 3, 'Categorie': ['Elektronica']*12 + ['Kleding']*12 + ['Huishouden']*12, 'Omzet': np.concatenate([ np.random.normal(50000, 10000, 12), # Elektronica np.random.normal(30000, 8000, 12), # Kleding np.random.normal(20000, 5000, 12) # Huishouden ]) } return pd.DataFrame(data) # Data laden df = create_sample_data() print("Eerste 5 rijen van de dataset:") print(df.head()) # 3. DATA VISUALISATIES fig, axes = plt.subplots(2, 2, figsize=(15, 12)) fig.suptitle('Verkoopanalyse Online Winkel - 12 Maanden', fontsize=16) # Lijndiagram - Omzet trend per categorie plt.subplot(2, 2, 1) for categorie in df['Categorie'].unique(): subset = df[df['Categorie'] == categorie] plt.plot(subset['Maand'], subset['Omzet'], marker='o', linewidth=2, label=categorie) plt.title('Maandelijkse Omzet Trend per Categorie') plt.xlabel('Maand') plt.ylabel('Omzet (€)') plt.legend() plt.xticks(rotation=45) plt.grid(True, alpha=0.3) # Staafdiagram - Totale omzet per categorie plt.subplot(2, 2, 2) totaal_per_categorie = df.groupby('Categorie')['Omzet'].sum() plt.bar(totaal_per_categorie.index, totaal_per_categorie.values, color=['#FF6B6B', '#4ECDC4', '#45B7D1']) plt.title('Totale Omzet per Productcategorie') plt.xlabel('Categorie') plt.ylabel('Totale Omzet (€)') plt.grid(True, alpha=0.3) # Taartdiagram - Marktaandeel per categorie plt.subplot(2, 2, 3) plt.pie(totaal_per_categorie.values, labels=totaal_per_categorie.index, autopct='%1.1f%%', colors=['#FF6B6B', '#4ECDC4', '#45B7D1']) plt.title('Marktaandeel per Productcategorie') # Boxplot - Omzetverdeling per categorie plt.subplot(2, 2, 4) categorie_data = [df[df['Categorie'] == cat]['Omzet'] for cat in df['Categorie'].unique()] plt.boxplot(categorie_data, labels=df['Categorie'].unique()) plt.title('Omzetverdeling per Categorie') plt.ylabel('Omzet (€)') plt.grid(True, alpha=0.3) plt.tight_layout() plt.show() # 4. MAANDOVERZICHT STAAFDIAGRAM maand_totaal = df.groupby('Maand')['Omzet'].sum() plt.figure(figsize=(12, 6)) bars = plt.bar(maand_totaal.index, maand_totaal.values, color=plt.cm.viridis(np.linspace(0, 1, len(maand_totaal)))) plt.title('Totale Maandelijkse Omzet') plt.xlabel('Maand') plt.ylabel('Omzet (€)') plt.xticks(rotation=45) # Waarden toevoegen boven de staven for bar in bars: height = bar.get_height() plt.text(bar.get_x() + bar.get_width()/2., height + 500, f'€{height:,.0f}', ha='center', va='bottom') plt.grid(True, alpha=0.3) plt.tight_layout() plt.show() # 5. RAPPORT GENEREREN def genereer_rapport(df): print("=" * 60) print("VERKOOPRAPPORT - ONLINE WINKEL (12 MAANDEN)") print("=" * 60) # Totale omzet totale_omzet = df['Omzet'].sum() print(f"Totale omzet: €{totale_omzet:,.2f}") # Omzet per categorie print("\n--- Omzet per Categorie ---") omzet_per_cat = df.groupby('Categorie')['Omzet'].sum() for cat, omzet in omzet_per_cat.items(): percentage = (omzet / totale_omzet) * 100 print(f"{cat}: €{omzet:,.2f} ({percentage:.1f}%)") # Maandelijkse prestaties print("\n--- Top 3 Beste Maanden ---") maand_omzet = df.groupby('Maand')['Omzet'].sum().sort_values(ascending=False) for i, (maand, omzet) in enumerate(maand_omzet.head(3).items(), 1): print(f"{i}. {maand}: €{omzet:,.2f}") # Gemiddelde omzet gem_maand_omzet = df.groupby('Maand')['Omzet'].sum().mean() print(f"\nGemiddelde maandomzet: €{gem_maand_omzet:,.2f}") # Variatie analyse variatie = maand_omzet.std() / maand_omzet.mean() * 100 print(f"Variatiecoëfficiënt: {variatie:.1f}%") # Inzichten print("\n--- BELANGRIJKSTE INZICHTEN ---") print("1. Elektronica is de grootste omzetdriver") print("2. Duidelijke seizoenspatronen zichtbaar in verkoop") print("3. Consistent groeipatroon over het jaar heen") print("4. Kansen voor cross-selling tussen categorieën") # Rapport genereren genereer_rapport(df) # 6. DATA OPSLAAN (optioneel) # Exporteer naar Excel df.to_excel('verkoop_analyse.xlsx', index=False) print("\nRapport opgeslagen als 'verkoop_analyse.xlsx'") ``` ## 📊 GEBRUIKTE METHODEN EN BIBLIOTHEKEN: ### **Pandas (data manipulatie):** - `pd.DataFrame()` - Data structuren - `groupby()` - Groeperen op categorieën - `sum()`, `mean()`, `std()` - Statistieken berekenen ### **Matplotlib (visualisatie):** - `plt.subplots()` - Meerdere grafieken - `plot()`, `bar()`, `pie()` - Verschillende grafiektypes - Styling opties voor professionele look ### **Seaborn (advanced visualisatie):** - Automatische kleurenschema's - Verbeterde statistische visualisaties ### **Numpy (numerieke berekeningen):** - `np.random.normal()` - Voorbeelddata genereren - Numerieke operaties voor statistiek ## 🚀 GEBRUIK: 1. Installeer benodigde libraries: `pip install pandas matplotlib seaborn openpyxl` 2. Vervang `create_sample_data()` met je eigen dataset 3. Pas categorieën en maanden aan naar jouw data 4. Run het script voor complete analyse en rapportage Het script genereert automatisch: - 📈 4 verschillende visualisaties - 📊 Gedetailleerd tekstrapport - 💰 Financiële inzichten - 📁 Excel export mogelijkheid