slogan3

Genereer aangepaste NumPy data-analyse scripts

description

Helpt gebruikers snel kant-en-klare NumPy-scripts te genereren die zijn aangepast aan hun unieke data-analysebehoeften, wat tijd bespaart bij handmatig coderen en efficiënte verwerking van datasets mogelijk maakt met duidelijke en bruikbare resultaten.

prompt

Maak een NumPy-script voor de volgende data-analysetaak: <beschrijf je data-analyse doel> met de dataset: <geef een korte beschri ...

try_prompt

generate_helper
disclaimerOnPageApi

ai_answers

provider: openai
model: gpt-4.1-nano
Hier is een voorbeeld van een NumPy-script dat het voortschrijdend gemiddelde van dagelijkse aandelenkoersen over de laatste 30 dagen berekent, gebaseerd op een CSV-bestand met kolommen "Datum" en "Prijs". Het script leest de data in, voert de nodige array-bewerkingen uit en visualiseert de resultaten met Matplotlib. ```python import numpy as np import matplotlib.pyplot as plt import csv from datetime import datetime # Stap 1: Data inlezen uit CSV-bestand filename = 'aandelenkoersen.csv' # Vervang dit door jouw bestandsnaam datums = [] prijzen = [] with open(filename, 'r', newline='') as csvfile: reader = csv.DictReader(csvfile) for row in reader: datums.append(datetime.strptime(row['Datum'], '%Y-%m-%d')) prijzen.append(float(row['Prijs'])) # Convert prijzen naar numpy array prijzen_array = np.array(prijzen) # Stap 2: Sorteren op datum (indien nodig) # Als data niet gesorteerd is sort_indices = np.argsort(datums) datums = np.array(datums)[sort_indices] prijzen_array = prijzen_array[sort_indices] # Stap 3: Berekenen van het voortschrijdend gemiddelde over 30 dagen # Gebruik np.convolve met een venster van 30 window_size = 30 venster = np.ones(window_size) / window_size # 'valid' geeft alleen de volledig overlappende delen gemiddelden = np.convolve(prijzen_array, venster, mode='valid') # Omdat 'valid' korter is, moeten we de datums aanpassen datums_gemiddeld = datums[window_size - 1:] # Stap 4: Visualisatie plt.figure(figsize=(12, 6)) plt.plot(datums, prijzen_array, label='Dagelijkse Slotkoersen', alpha=0.5) plt.plot(datums_gemiddeld, gemiddelden, label='Voortschrijdend Gemiddelde (30 dagen)', color='orange', linewidth=2) plt.xlabel('Datum') plt.ylabel('Prijs') plt.title('Aandelenkoersen en Voortschrijdend Gemiddelde') plt.legend() plt.grid(True) plt.show() ``` **Uitleg:** - Het script leest de data in en converteert datums naar `datetime`-objecten. - Data wordt gesorteerd op datum. - Het voortschrijdend gemiddelde wordt berekend met `np.convolve` en een venster van 30 dagen. - De visualisatie toont zowel de dagelijkse slotkoersen als het voortschrijdend gemiddelde. Pas de bestandsnaam aan en zorg dat het CSV-bestand correct is opgemaakt.
provider: deepseek
model: deepseek-chat
Hier is een volledig NumPy-script voor uw taak: ```python import numpy as np import pandas as pd import matplotlib.pyplot as plt from datetime import datetime, timedelta # Laad de dataset data = pd.read_csv('aandelenkoersen.csv') # Zet Datum kolom om naar datetime object data['Datum'] = pd.to_datetime(data['Datum']) # Sorteer op datum (voor het geval dat niet gesorteerd is) data = data.sort_values('Datum') # Converteer naar NumPy arrays datums = data['Datum'].values prijzen = data['Prijs'].values.astype(float) # Bereken voortschrijdend gemiddelde over 30 dagen voortschrijdend_gemiddelde = np.zeros_like(prijzen) voortschrijdend_gemiddelde[:] = np.nan # Eerste 29 dagen zijn niet gedefinieerd for i in range(29, len(prijzen)): voortschrijdend_gemiddelde[i] = np.mean(prijzen[i-29:i+1]) # Alternatieve methode met NumPy convolutie (efficiënter) window_size = 30 window = np.ones(window_size) / window_size voortschrijdend_conv = np.convolve(prijzen, window, mode='valid') # Voeg NaN waarden toe aan het begin voor alignment voortschrijdend_conv_full = np.concatenate([np.full(window_size-1, np.nan), voortschrijdend_conv]) # Visualisatie plt.figure(figsize=(12, 6)) plt.plot(datums, prijzen, label='Dagelijkse slotkoersen', alpha=0.7, linewidth=1) plt.plot(datums, voortschrijdend_gemiddelde, label='30-dagen voortschrijdend gemiddelde', color='red', linewidth=2) plt.title('Voortschrijdend gemiddelde van aandelenkoersen (30 dagen)') plt.xlabel('Datum') plt.ylabel('Prijs (€)') plt.legend() plt.grid(True, alpha=0.3) plt.xticks(rotation=45) plt.tight_layout() plt.show() # Toon statistieken print("Dataset statistieken:") print(f"Aantal dagen: {len(prijzen)}") print(f"Gemiddelde prijs: €{np.mean(prijzen):.2f}") print(f"Hoogste prijs: €{np.max(prijzen):.2f}") print(f"Laagste prijs: €{np.min(prijzen):.2f}") print(f"Standaarddeviatie: €{np.std(prijzen):.2f}") # Toon laatste 10 waarden van het voortschrijdend gemiddelde print("\nLaatste 10 voortschrijdende gemiddelden:") recente_data = data.tail(10).copy() recente_data['Voortschrijdend_gem'] = voortschrijdend_gemiddelde[-10:] print(recente_data[['Datum', 'Prijs', 'Voortschrijdend_gem']].to_string(index=False)) ``` **Extra functionaliteiten die u kunt toevoegen:** ```python # Bereken afwijking van het voortschrijdend gemiddelde afwijking = prijzen - voortschrijdend_gemiddelde # Signalen voor koop/verkoop (eenvoudige strategie) koop_signaal = np.where(prijzen > voortschrijdend_gemiddelde * 1.02, 1, 0) verkoop_signaal = np.where(prijzen < voortschrijdend_gemiddelde * 0.98, -1, 0) # Exporteer resultaten naar CSV resultaat_df = pd.DataFrame({ 'Datum': datums, 'Prijs': prijzen, 'Voortschrijdend_gemiddelde_30d': voortschrijdend_gemiddelde, 'Afwijking': afwijking }) resultaat_df.to_csv('voortschrijdend_gemiddelde_resultaten.csv', index=False) ``` **Belangrijke aantekeningen:** - Zorg dat uw CSV-bestand de kolommen 'Datum' en 'Prijs' bevat - Het script verwerkt automatisch ontbrekende handelsdagen (weekenden) - De eerste 29 dagen hebben geen voortschrijdend gemiddelde (NaN waarden) - De visualisatie toont zowel de ruwe data als het gladgestreken gemiddelde Dit script biedt een complete oplossing voor uw technische analyse van aandelenkoersen.