Ich möchte ein Skript schreiben, das die 30-Minuten-Mittelwerte für direkte und diffuse Strahlung berechnet (d. H. 12:00, 12:30, 1:00 ...). Nachdem die 30-Minuten-Durchschnittswerte berechnet wurden, müsste ich die Daten in Jahreszeiten (DJF) (MAM) (JJA) (SON) trennen. Werte, die gleich = -99999 sind, sollten weggelassen werden.Berechnen Sie 30-Minuten-Durchschnittswerte und saisonale Durchschnittswerte in Python?
Hier sind die ersten Zeilen von Daten. Dies ist eine sehr große Datei mit vielen Jahren.
DATE month day year EST Direct NIP Diffuse PSP (sband corr) 4/1/2004 4 1 2004 5:55 0.01967 1.5687 4/1/2004 4 1 2004 6:00 0.2295 5.3946 4/1/2004 4 1 2004 6:05 0.59015 13.0295 4/1/2004 4 1 2004 6:10 0.78686 23.0043 4/1/2004 4 1 2004 6:15 0.60982 20.827 4/1/2004 4 1 2004 6:20 0.80655 23.199 4/1/2004 4 1 2004 6:25 0.81309 26.951 4/1/2004 4 1 2004 6:30 0.77375 31.0062 4/1/2004 4 1 2004 6:35 0.55081 35.04 4/1/2004 4 1 2004 6:40 0.24262 41.1042 4/1/2004 4 1 2004 6:45 0.39999 46.6218 4/1/2004 4 1 2004 6:50 0.26229 52.7591 4/1/2004 4 1 2004 6:55 0.26885 67.9498
Jede Idee, wie ich über diese gehen? Danke für Ihre Unterstützung.
edit: Hier ist mein Code so weit. Es berechnete alle Strahlung und zu jeder Zeit. Bitte beachten Sie, dass es Amateur ist, da ich mir selbst beibringe, wie man programmiert. Danke
import csv
import openpyxl
import matplotlib as mpl
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import pandas as pd
from datetime import datetime
x = [datetime(year = 2004, month = 4, day = 1),
datetime(year = 2014, month = 11, day = 18)]
y = []
x2 = []
y2 = []
with open('tenyeardata.csv', 'r') as csvfile:
data = csv.reader(csvfile)
firstline = True
for row in data:
if firstline: #skip first line
firstline = False
continue
x.append(int(row[1]))
y.append(float(row[5]))
x2.append(int(row[3]))
y2.append(float(row[6]))
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.set_title("North Carolina Radiation (Direct and Diffuse)")
ax1.set_xlabel('time (hours)')
ax1.set_ylabel('SW (W m-2)')
print x[:10]
print y[:10]
ax1.plot(y, c='r', label='Direct')
ax1.plot(y2, c='b', label = 'Diffuse')
ax1.axis([-1, 568217, 0, 1100])
leg = ax1.legend()
plt.axis([-1, 568217, 0, 1100])
plt.show()
Haben Sie Code haben uns zu zeigen, so dass wir einen Blick darauf werfen können? –
Ich habe meinen Code gerade in die ursprüngliche Frage gestellt. Ich hoffe es verwirrt dich nicht! –
Ich versuche nur herauszufinden, was du plotten willst. Du füllst 'x' und' x2', aber verwendest sie niemals. Möchten Sie die Daten "Direct" und "Diffuse" in Abhängigkeit von der Zeit in jeder Zeile darstellen (z. B. ein y-Wert von 0,01967 für einen x-Wert von 4/1/2004 um 5:55 Uhr)? –