2016-06-22 4 views
0

Ich muss einige stündliche Wetterdaten aus CSV-Dateien mit 8.760 Werten pro Spalte verarbeiten. Zum Beispiel muss ich ein Histogramm mit der längsten kohärenten Ruhe der Windgeschwindigkeit zeichnen, was weniger als 3 m/s bedeutet. Ich habe bereits ein Histogramm mit der Windgeschwindigkeitsverteilung erstellt, aber dieses ist viel schwieriger. Also brauche ich eine Art von String, die die seriellen Stunden von weniger als 3 m/s zählt und sie zusammen zählt und am Ende plottet.Wie kann ich kohärente Werte zählen, die unter einer bestimmten Zahl liegen?

Meine Idee ist es, eine Zeichenfolge anzuwenden, die jeden Wert "weniger als 3?" Fragt, wenn ja, muss eine neue Ruhe erstellt werden und fortfahren, bis die Antwort nein ist, dann die Ruhe beenden und so weiter. Am Ende sollte es viel Ruhe von einer Stunde bis ca. 48 Stunden. Die Ausgabe ist ein Histogramm dieser Calms, sortiert nach Häufigkeit.

+0

Sie in [Anaconda] aussehen sollten (https://www.continuum.io/why-anaconda) und speziell [ matplotlib] (http://matplotlib.org/) –

+0

Alternativ dazu ['itertools.groupby'] (https://docs.python.org/2/library/itertools.html#itertools.groupby). Aber auf jeden Fall müssen Sie sich etwas mehr anstrengen, bevor Sie eine Frage zu SO stellen. – jonrsharpe

+1

Willkommen bei StackOverflow. Haben Sie Code, der nicht funktioniert? Wenn ja, kannst du es zeigen? (Normalerweise schreiben wir keine Programme für Sie ... das würde Ihnen die Freude am Programmieren nehmen.) – rajah9

Antwort

0

Ich habe nicht erwartet, dass jemand den Code für mich schreiben würde, tut mir leid, wenn es so scheint. Ich habe nur nach einer Idee gefragt, aber ich glaube, ich hätte es fast verstanden. Hier ist mein Code so weit, es sollte einen Vektor für jede Ruhe erstellen und in ein Wörterbuch einfügen. Es funktioniert, aber jeder Schlüssel ist mit demselben Vektor gefüllt und ich bin mir nicht sicher, wie ich das beheben soll? (Der Vektor selbst in Ordnung ist, beginnt bei = < 3 und zählt bis => 3)

#read column v_wind 
saved_column = df.v_wind 
fig, ax = plt.subplots() 

#collecting vectors in empty dictionary 
# array range 100 
vector_coll = {} 
a = np.array(range(100)) 

#for loop create vector 
#set calm to zero 
#i = calm vectors 
#b = empty array 
calm = 0 
i = -1 
b = [] 

for t in range(0, 8760, 1): 
    if df.v_wind[t] <= 3: 
     if calm == 0: 
     b = [] 
     b = np.append(b, [df.v_wind[t]]) 
     calm = 1 
    else: 
     b = np.append(b, [df.v_wind[t]]) 
else: 
    calm = False 
    calm = 0 
    i = i + 1 
    for i in np.array(range(100)): 
     vector_coll[str(a[i])] = b 

#print(vector_coll.keys()) 
#print(vector_coll['1']) 

for i in vector_coll.keys(): 
if vector_coll[i] == []: 
    print('empty') 
else: 
    print('full')  
Verwandte Themen