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
tags
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!