slogan3

Ontwikkel een Python-script voor het genereren van rapporten met data-analyse

description

Met deze prompt kan de gebruiker een krachtig Python-script ontwikkelen dat niet alleen data verwerkt, maar ook automatisch rapporten maakt die makkelijk te delen zijn. Dit bespaart tijd, verbetert de datakwaliteit en maakt complexe analyses toegankelijk zonder handmatige rapportage.

prompt

Help me een Python-script te schrijven dat data importeert uit <voer het type of de bron van gegevens in>, de gegevens analyseert volgens de volgende criteria: <beschrijf de analysetaken>, en een overzichte ...

try_prompt

generate_helper
disclaimerOnPageApi

ai_answers

provider: openai
model: gpt-4.1-nano
Hier is een voorbeeld van een Python-script dat data uit een CSV-bestand importeert, analyseert en een overzichtelijk PDF-rapport genereert. Ik leg ook uit hoe je bibliotheken zoals pandas, matplotlib en reportlab kunt gebruiken. Stap 1: Installeer de benodigde bibliotheken Gebruik pip om ze te installeren: ```bash pip install pandas matplotlib reportlab ``` Stap 2: Python-script ```python import pandas as pd import matplotlib.pyplot as plt from reportlab.lib.pagesizes import A4 from reportlab.pdfgen import canvas from reportlab.lib.utils import ImageReader import io # Stap 1: Data importeren # Vervang 'klanten.csv' door het pad naar jouw CSV-bestand data = pd.read_csv('klanten.csv') # Controleer de eerste rijen print(data.head()) # Veronderstel dat de verkoopcijfers in een kolom genaamd 'verkoop' verkoop = data['verkoop'] # Stap 2: Data-analyse gemiddelde = verkoop.mean() mediaan = verkoop.median() std_deviatie = verkoop.std() # Stap 3: Grafieken maken plt.figure(figsize=(8, 4)) plt.hist(verkoop, bins=20, color='skyblue', edgecolor='black') plt.title('Verkoopcijfers Histogram') plt.xlabel('Verkoop') plt.ylabel('Frequentie') # Sla de afbeelding op in een geheugenbuffer img_buffer = io.BytesIO() plt.savefig(img_buffer, format='png') plt.close() # Stap 4: PDF rapport genereren pdf_path = 'rapport_klanten.pdf' c = canvas.Canvas(pdf_path, pagesize=A4) # Titel toevoegen c.setFont("Helvetica-Bold", 16) c.drawString(50, 800, "Klantgegevens Rapport") # Samenvatting statistieken c.setFont("Helvetica", 12) tekst = f""" Gemiddelde verkoop: {gemiddelde:.2f} Mediaan verkoop: {mediaan:.2f} Standaarddeviatie: {std_deviatie:.2f} """ text_object = c.beginText(50, 760) for line in tekst.strip().split('\n'): text_object.textLine(line) c.drawText(text_object) # Voeg de grafiek toe img_buffer.seek(0) img = ImageReader(img_buffer) c.drawImage(img, 50, 400, width=500, height=300) # Afronden en opslaan c.showPage() c.save() print("Rapport succesvol gegenereerd: rapport_klanten.pdf") ``` ### Uitleg van gebruikte bibliotheken: - **pandas**: Hiermee kun je gemakkelijk CSV-bestanden inlezen en dataframes manipuleren. Je kunt eenvoudige statistieken zoals gemiddelde, mediaan en standaarddeviatie berekenen met `.mean()`, `.median()`, en `.std()`. - **matplotlib**: Gebruikt voor het maken van grafieken. In dit voorbeeld een histogram van verkoopcijfers. De grafiek wordt opgeslagen in een geheugenbuffer zodat deze later in de PDF kan worden ingevoegd. - **reportlab**: Hiermee kun je PDF-bestanden genereren. Je kunt tekst toevoegen, grafieken invoegen en het rapport naar wens opmaken. Met deze aanpak krijg je een overzichtelijk rapport met belangrijke statistieken en visualisaties. Pas het script aan op basis van je specifieke kolomnamen en wensen.
provider: deepseek
model: deepseek-chat
Zeker, ik help je graag met het schrijven van een Python-script voor deze taak. Hier is een complete oplossing: ## Vereiste bibliotheken installeren ```bash pip install pandas matplotlib reportlab numpy ``` ## Python Script (klanten_analyse.py) ```python import pandas as pd import matplotlib.pyplot as plt import numpy as np from reportlab.lib.pagesizes import A4 from reportlab.pdfgen import canvas from reportlab.lib.utils import ImageReader import os def analyseer_klantgegevens(): try: # Stap 1: Data importeren met pandas print("Data importeren uit klanten.csv...") df = pd.read_csv('klanten.csv') # Controleren of de vereiste kolom bestaat if 'verkoopcijfers' not in df.columns: raise ValueError("Kolom 'verkoopcijfers' niet gevonden in het CSV-bestand") # Stap 2: Data analyseren verkoopcijfers = df['verkoopcijfers'] # Basisstatistieken berekenen gemiddelde = np.mean(verkoopcijfers) mediaan = np.median(verkoopcijfers) standaarddeviatie = np.std(verkoopcijfers) minimum = np.min(verkoopcijfers) maximum = np.max(verkoopcijfers) print("Analyse voltooid!") print(f"Gemiddelde: {gemiddelde:.2f}") print(f"Mediaan: {mediaan:.2f}") print(f"Standaarddeviatie: {standaarddeviatie:.2f}") # Stap 3: Grafieken maken met matplotlib print("Grafieken genereren...") # Histogram plt.figure(figsize=(10, 6)) plt.hist(verkoopcijfers, bins=15, alpha=0.7, color='blue', edgecolor='black') plt.axvline(gemiddelde, color='red', linestyle='dashed', linewidth=2, label=f'Gemiddelde: {gemiddelde:.2f}') plt.axvline(mediaan, color='green', linestyle='dashed', linewidth=2, label=f'Mediaan: {mediaan:.2f}') plt.title('Verdeling van verkoopcijfers') plt.xlabel('Verkoopcijfers') plt.ylabel('Frequentie') plt.legend() plt.grid(True, alpha=0.3) plt.savefig('verkoop_histogram.png', dpi=300, bbox_inches='tight') plt.close() # Boxplot plt.figure(figsize=(8, 6)) plt.boxplot(verkoopcijfers, vert=False) plt.title('Boxplot van verkoopcijfers') plt.xlabel('Verkoopcijfers') plt.savefig('verkoop_boxplot.png', dpi=300, bbox_inches='tight') plt.close() # Stap 4: PDF rapport genereren met reportlab print("PDF rapport genereren...") maak_pdf_rapport(gemiddelde, mediaan, standaarddeviatie, minimum, maximum, len(verkoopcijfers)) print("Rapport succesvol gegenereerd: 'klanten_analyse_rapport.pdf'") except FileNotFoundError: print("Fout: klanten.csv niet gevonden. Zorg dat het bestand in dezelfde map staat.") except Exception as e: print(f"Fout opgetreden: {str(e)}") def maak_pdf_rapport(gemiddelde, mediaan, std_dev, minimum, maximum, aantal_klanten): # PDF aanmaken c = canvas.Canvas("klanten_analyse_rapport.pdf", pagesize=A4) width, height = A4 # Titel c.setFont("Helvetica-Bold", 16) c.drawString(50, height - 50, "Klantgegevens Analyse Rapport") c.setFont("Helvetica", 12) c.drawString(50, height - 80, f"Aantal geanalyseerde klanten: {aantal_klanten}") # Statistieken y_pos = height - 120 c.drawString(50, y_pos, f"Gemiddelde verkoopcijfers: {gemiddelde:.2f}") y_pos -= 25 c.drawString(50, y_pos, f"Mediaan verkoopcijfers: {mediaan:.2f}") y_pos -= 25 c.drawString(50, y_pos, f"Standaarddeviatie: {std_dev:.2f}") y_pos -= 25 c.drawString(50, y_pos, f"Minimum waarde: {minimum:.2f}") y_pos -= 25 c.drawString(50, y_pos, f"Maximum waarde: {maximum:.2f}") # Grafieken toevoegen if os.path.exists('verkoop_histogram.png'): c.drawImage('verkoop_histogram.png', 50, height - 400, width=400, height=250) c.showPage() # Nieuwe pagina voor volgende grafiek if os.path.exists('verkoop_boxplot.png'): c.drawImage('verkoop_boxplot.png', 50, height - 350, width=400, height=200) # Samenvatting c.setFont("Helvetica-Bold", 12) c.drawString(50, 100, "Samenvatting:") c.setFont("Helvetica", 10) c.drawString(50, 80, "De analyse toont de distributie en statistieken van de verkoopcijfers.") c.drawString(50, 60, "Gebruik deze inzichten voor betere besluitvorming en strategie.") c.save() if __name__ == "__main__": analyseer_klantgegevens() ``` ## Voorbeeld klanten.csv formaat: ```csv klant_id,naam,verkoopcijfers 1,Jan Jansen,12500 2,Piet Peters,18750 3,Marie de Vries,15200 4,Klaas van Dijk,21000 5,Lisa Bakker,14300 ``` ## Uitleg van de gebruikte bibliotheken: ### 1. Pandas - Data manipulatie en analyse ```python import pandas as pd # Data inlezen df = pd.read_csv('klanten.csv') # Kolom selecteren verkoopcijfers = df['verkoopcijfers'] # Basis operaties df.head() # Eerste rijen tonen df.describe() # Samenvattende statistieken df.info() # Info over dataframe ``` ### 2. Matplotlib - Visualisatie ```python import matplotlib.pyplot as plt # Verschillende plot types: plt.plot() # Lijndiagram plt.bar() # Staafdiagram plt.hist() # Histogram plt.scatter() # Spreidingsdiagram plt.boxplot() # Boxplot # Opmaak: plt.title('Titel') plt.xlabel('X-as label') plt.ylabel('Y-as label') plt.legend() plt.grid(True) plt.savefig('bestandsnaam.png') ``` ### 3. ReportLab - PDF generatie ```python from reportlab.pdfgen import canvas # PDF aanmaken c = canvas.Canvas("rapport.pdf") # Tekst toevoegen c.setFont("Helvetica", 12) c.drawString(x, y, "Tekst") # Afbeeldingen toevoegen c.drawImage('afbeelding.png', x, y, width, height) # Pagina opslaan c.save() ``` ## Hoe het script te gebruiken: 1. Zorg dat `klanten.csv` in dezelfde map staat 2. Run het script: `python klanten_analyse.py` 3. Het genereert: - Console output met statistieken - PNG bestanden met grafieken - PDF rapport met complete analyse ## Extra tips: - Zorg dat je CSV de kolom 'verkoopcijfers' bevat - Pas de bin grootte in het histogram aan naar wens - Customize de PDF layout met ReportLab's styling opties - Voeg meer statistieken toe zoals percentielen of modus Dit script geeft je een complete oplossing voor data-import, analyse, visualisatie en rapportage!