2013-11-05 57 views
3

我在一個目錄中有一堆包含大氣測量值的文件。 Fileformat是NetCDF。每個文件都有一個時間戳(變量'basetime')。我可以讀取所有文件並繪製各個測量事件(溫度與高度)。 接下來我需要做的是「將文件按日分組」,並將所有測量結果在一天內一起繪製在一張圖中。不幸的是我不知道該怎麼做。 一個想法是使用下面代碼中定義的變量'measurement_day'。 對於每一天我通常有四個不同的文件包含溫度。和高度。 理想情況下,這四個不同文件的數據應該分組(例如繪圖) 我希望我的問題很清楚。誰能幫幫我嗎。按天分組一堆文件

編輯:我現在嘗試使用字典,但我無法確定一個測量日是否已存在一個條目。請參考下面

from netCDF4 import Dataset 

data ={} # was edited 

for f in listdir(path): 
    if isfile(join(path,f)): 
     full_path = join(path,f) 
     f = Dataset(full_path, 'r') 
     basetime = f.variables['base_time'][:] 
     altitude = f.variables['alt'][:] 
     temp = f.variables['tdry'][:] 
     actual_date = strftime("%Y-%m-%d %H:%M:%S", gmtime(basetime)) 
     measurement_day = strftime("%Y-%m-%d", gmtime(basetime)) 
     # check if dict entries for day already exist, if not create empty dict 
     # and lists inside 
     if len(data[measurement_day]) == 0: 
      data[measurement_day] = {} 
     else: pass 
     if len(data[measurement_day]['temp']) == 0: 
      data[measurement_day]['temp'] = [] 
      data[measurement_day]['altitude'] = [] 
     else: pass 

編輯的代碼,我得到了以下錯誤消息: 回溯(最近通話最後一個):...如果LEN(數據[measurement_day])== 0: KeyError異常:「2009/05/28'

+0

什麼是'數據集'?它從何而來? –

+0

在回答Ethan Furman的問題之前,我們無法真正瞭解數據是如何構建的,但是您是否嘗試過使用'measurement_day'作爲關鍵字來構建字典?你可以讓每個值都是一個變量列表,或者可能是另一個字典(keys = altitude,temp,...),values =適當值列表 –

+0

'Dataset'是Python模塊NetCDF4中的類。它是在(從NetCDF4導入數據集'中導入的)之前導入的。抱歉忘記添加該行代碼。 – paulchen

回答

0

Can anyone please help me.

我會盡力的。雖然我不完全清楚你已經擁有了什麼。

I can read all files and plot individual measurement events (temperature vs. altitude). What I need to do next is "group the files by day" and plot all measurements taken at one single day together in one plot.

由此,我假設您知道如何繪製給定數據集列表的信息。要獲得數據集列表,請嘗試類似這樣的操作。

from netCDF4 import Dataset 

# a dictionary of lists that hold all the datasets from a given day 
grouped_datasets = {} 

for f in listdir(path): 
    if isfile(join(path,f)): 
     full_path = join(path,f) 
     f = Dataset(full_path, 'r') 
     basetime = f.variables['base_time'][:] 
     altitude = f.variables['alt'][:] 
     temp = f.variables['tdry'][:] 
     actual_date = strftime("%Y-%m-%d %H:%M:%S", gmtime(basetime)) 
     measurement_day = strftime("%Y-%m-%d", gmtime(basetime)) 

     # if we haven't encountered any datasets from this day yet... 
     if measurement_day not in grouped_datasets: 
      # add that day to our dict 
      grouped_datasets[measurement_day] = [] 

     # now append our dataset to the correct day (list) 
     grouped_datasets[measurement_day].append(f) 

現在你有一個關於measurement_day鍵的字典。我不確定你是如何繪製你的數據的,所以這是盡我所能。希望它有幫助,祝你好運。