slogan3

Maak een Ruby-script om CSV-gegevens te analyseren en inzichten te genereren

description

Door deze prompt te gebruiken, kun je het proces van gegevensanalyse in Ruby stroomlijnen, waardoor je waardevolle inzichten uit je CSV-bestanden kunt halen en tegelijkertijd robuuste foutafhandeling en duidelijke output garandeert.

prompt

try_prompt

Help me een Ruby-script schrijven dat een CSV-bestand leest met de volgende gegevens: {{csv_bestandspad}}. Ik wil dat het script de volgende analyses uitvoert: {{analyse_ta ... more
generate_helper
disclaimerOnPageApi image_legal_disclaimer...

ai_answers

provider: openai
model: gpt-4.1-nano
Hier is een voorbeeld van een Ruby-script dat je kunt gebruiken om het CSV-bestand te lezen, de totale verkoop per maand te berekenen en een samenvatting te genereren. Het script bevat ook eenvoudige foutafhandeling en geeft duidelijke output. ```ruby require 'csv' require 'date' # Pad naar het CSV-bestand bestandspad = '/data/verkoopgegevens.csv' # Hash om de verkoop per maand op te slaan verkoop_per_maand = Hash.new(0) begin # Controleer of het bestand bestaat unless File.exist?(bestandspad) puts "Fout: Het bestand #{bestandspad} is niet gevonden." exit end # Lees het CSV-bestand CSV.foreach(bestandspad, headers: true) do |row| # Veronderstel dat er kolommen zijn zoals 'datum' en 'verkoop' datum_str = row['datum'] verkoop_str = row['verkoop'] # Parse de datum datum = Date.parse(datum_str) # Extract jaar en maand maand = Date.new(datum.year, datum.month) # Parse de verkoopwaarde verkoop = verkoop_str.to_f # Voeg de verkoop toe aan de juiste maand verkoop_per_maand[maand] += verkoop end # Controleer of er data is if verkoop_per_maand.empty? puts "Geen gegevens gevonden in het bestand." exit end # Bereken totalen en vind de maand met hoogste verkoop totaal_verkoop = verkoop_per_maand.values.sum top_maand, top_verkoop = verkoop_per_maand.max_by { |maand, verkoop| verkoop } # Output de resultaten puts "Samenvatting verkoopgegevens:" puts "------------------------------" verkoop_per_maand.sort.each do |maand, verkoop| puts "Maand: #{maand.strftime('%B %Y')} - Totale verkoop: €#{'%.2f' % verkoop}" end puts "------------------------------" puts "Totaalverkoop over alle maanden: €#{'%.2f' % totaal_verkoop}" puts "Meest succesvolle maand: #{top_maand.strftime('%B %Y')} met €#{'%.2f' % top_verkoop}" rescue CSV::MalformedCSVError => e puts "Fout bij het lezen van het CSV-bestand: #{e.message}" rescue ArgumentError => e puts "Fout bij het verwerken van data: #{e.message}" rescue => e puts "Er is een onverwachte fout opgetreden: #{e.message}" end ``` **Gebruik:** - Zorg dat het bestand `/data/verkoopgegevens.csv` bestaat en de juiste kolomnamen heeft, bijvoorbeeld 'datum' en 'verkoop'. - Pas indien nodig de kolomnamen aan in het script. - Voer het script uit in een Ruby-omgeving. Dit script leest de gegevens, berekent de totale verkoop per maand, geeft een overzicht per maand, en toont de maand met de hoogste verkoop. Fouten worden vriendelijk afgehandeld en gemeld.
provider: deepseek
model: deepseek-chat
Zeker, ik help je graag met een Ruby-script voor deze analyse. Hier is een complete oplossing: ```ruby require 'csv' require 'date' begin # Controleer of het bestand bestaat file_path = '/data/verkoopgegevens.csv' unless File.exist?(file_path) puts "❌ Fout: Het bestand '#{file_path}' werd niet gevonden." puts " Controleer of het pad correct is en het bestand bestaat." exit end # Hash om verkoop per maand bij te houden verkoop_per_maand = Hash.new(0) totaal_verkoop = 0 aantal_records = 0 puts "📊 Verkoopgegevens analyseren..." puts "=" * 50 # CSV-bestand lezen CSV.foreach(file_path, headers: true, converters: [:numeric, :date]) do |row| aantal_records += 1 # Controleer of vereiste kolommen aanwezig zijn unless row['Datum'] && row['Bedrag'] puts "⚠️ Waarschuwing: Record #{aantal_records} heeft ontbrekende gegevens en wordt overgeslagen." next end begin datum = Date.parse(row['Datum'].to_s) bedrag = row['Bedrag'].to_f # Maand-sleutel in formaat "YYYY-MM" maand_sleutel = datum.strftime("%Y-%m") verkoop_per_maand[maand_sleutel] += bedrag totaal_verkoop += bedrag rescue ArgumentError => e puts "⚠️ Waarschuwing: Ongeldige datum in record #{aantal_records}: #{row['Datum']}" rescue => e puts "⚠️ Waarschuwing: Fout bij verwerken record #{aantal_records}: #{e.message}" end end # Controleer of er gegevens zijn verwerkt if verkoop_per_maand.empty? puts "❌ Geen geldige verkoopgegevens gevonden in het bestand." puts " Controleer de inhoud van het CSV-bestand." exit end # Sorteer de maanden chronologisch gesorteerde_maanden = verkoop_per_maand.sort_by { |maand, _| maand } # Toon resultaten puts "\n📈 TOTAALVERKOOP PER MAAND:" puts "-" * 30 gesorteerde_maanden.each do |maand, totaal| puts "#{maand}: €#{'%.2f' % totaal}" end # Samenvatting met belangrijkste bevindingen puts "\n🔍 SAMENVATTING EN BELANGRIJKSTE BEVINDINGEN:" puts "=" * 50 hoogste_maand = gesorteerde_maanden.max_by { |_, totaal| totaal } laagste_maand = gesorteerde_maanden.min_by { |_, totaal| totaal } gemiddelde_maand = totaal_verkoop / gesorteerde_maanden.size puts "• Totaal aantal verwerkte records: #{aantal_records}" puts "• Aantal maanden geanalyseerd: #{gesorteerde_maanden.size}" puts "• Totale omzet: €#{'%.2f' % totaal_verkoop}" puts "• Hoogste maandomzet: #{hoogste_maand[0]} - €#{'%.2f' % hoogste_maand[1]}" puts "• Laagste maandomzet: #{laagste_maand[0]} - €#{'%.2f' % laagste_maand[1]}" puts "• Gemiddelde maandomzet: €#{'%.2f' % gemiddelde_maand}" # Trendanalyse if gesorteerde_maanden.size > 1 eerste_maand = gesorteerde_maanden.first[1] laatste_maand = gesorteerde_maanden.last[1] trend = ((laatste_maand - eerste_maand) / eerste_maand * 100).round(2) puts "• Trend eerste vs laatste maand: #{trend}%" if trend > 0 puts "• 📈 Positieve groeitrend waargenomen" elsif trend < 0 puts "• 📉 Negatieve trend waargenomen" else puts "• ➡️ Stabiele verkoop" end end puts "\n✅ Analyse voltooid!" rescue CSV::MalformedCSVError => e puts "❌ Fout: Het CSV-bestand is ongeldig of beschadigd." puts " Details: #{e.message}" rescue => e puts "❌ Onverwachte fout: #{e.message}" puts " Neem contact op met de beheerder." end ``` **Belangrijke aannames over je CSV-bestand:** - Het bevat kolommen `Datum` en `Bedrag` - Datumformaat is herkenbaar (bijv. "2024-01-15", "15/01/2024") - Bedragen zijn numerieke waarden **Kenmerken van dit script:** - ✅ **Foutafhandeling**: Controleert bestandsexistentie, CSV-validiteit en ontbrekende gegevens - ✅ **Gebruikersvriendelijk**: Duidelijke berichten met emoji's voor betere leesbaarheid - ✅ **Betekenisvolle output**: Toont niet alleen cijfers maar ook trends en inzichten - ✅ **Flexibel**: Werkt met verschillende datumformaten - ✅ **Robuust**: Slaat corrupte records over en gaat verder met analyse **Voorbeeld van verwachte output:** ``` 📊 Verkoopgegevens analyseren... ================================================== 📈 TOTAALVERKOOP PER MAAND: ------------------------------ 2024-01: €12500.00 2024-02: €14200.00 2024-03: €11800.00 🔍 SAMENVATTING EN BELANGRIJKSTE BEVINDINGEN: ================================================== • Totaal aantal verwerkte records: 285 • Aantal maanden geanalyseerd: 3 • Totale omzet: €38500.00 • Hoogste maandomzet: 2024-02 - €14200.00 • Laagste maandomzet: 2024-03 - €11800.00 • Gemiddelde maandomzet: €12833.33 • Trend eerste vs laatste maand: -5.6% • 📉 Negatieve trend waargenomen ✅ Analyse voltooid! ``` Het script is klaar voor gebruik! Pas eventueel het bestandspad aan als nodig.