2016-06-22 50 views
0

我需要處理來自CSV文件的每小時天氣數據,每列8,760個值。例如,我需要繪製最長連貫的風速平均值的直方圖,這意味着小於3米/秒。 我已經創建了一個風速分佈的直方圖,但這個方法更難。所以我需要一些字符串來計算小於3米/秒的連續小時數,並將它們統計在一起並最終進行繪圖。如何計算小於特定數字的相關值?

我的想法是應用一個字符串,要求每個值「小於3」,如果是,則需要創建一個新的冷靜並繼續,直到答案爲否,然後完成冷靜等等。最後它應該有一個小時左右的平靜時間。 48小時。輸出是按頻率排序的這些平靜的直方圖。

+0

你應該看看[阿納康達](https://www.continuum.io/why-anaconda)和特異性[ matplotlib](http://matplotlib.org/) –

+0

或者,['itertools.groupby'](https://docs.python.org/2/library/itertools.html#itertools.groupby)。但無論哪種方式,在對SO提出問題之前,您都需要花更多精力。 – jonrsharpe

+1

歡迎來到StackOverflow。你有沒有工作的代碼?如果是這樣,你可以展示它嗎? (我們通常不會爲您編寫程序......這會消除學習如何編程的所有樂趣。) – rajah9

回答

0

我沒想到有人會爲我寫代碼,對不起,如果它看起來像。我只是想要一個主意,但我想我幾乎可以得到它。 這是我的代碼到目前爲止,它應該爲每一個冷靜創建一個載體並將其放入字典中。它的作品,但每個關鍵是由同一個向量填充,我不知道如何解決這個問題? (載體本身是好的,開始於= < 3和計數直到=> 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')