我在一个目录中有一堆包含大气测量值的文件。 Fileformat是NetCDF。每个文件都有一个时间戳(变量'basetime')。我可以读取所有文件并绘制单个测量事件(温度与高度)。 接下来我需要做的是“按天分组文件”,并将在一天内完成的所有测量结果绘制在一个图中。不幸的是,我不知道如何做到这一点。 一个想法是使用变量'measurement_day',因为它在下面的代码中定义。 对于每天我通常都有四个包含temp的不同文件。和海拔。 理想情况下,应将这四个不同文件的数据分组(例如用于绘图) 我希望我的问题很明确。谁能帮帮我吗。
编辑:我现在尝试使用字典,但我无法确定一个测量日是否已存在一个条目。请参阅下面的编辑代码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(data [measurement_day])== 0: KeyError:'2009/05/28'
答案 0 :(得分:0)
任何人都可以帮助我。
我会试试。虽然我对你已经拥有的东西并不完全清楚。
我可以阅读所有文件并绘制单个测量事件 (温度与海拔高度)。接下来我需要做的是“对文件进行分组 白天“并将所有测量结果绘制在一起 一个情节。
由此,我假设您知道如何在给定数据集列表的情况下绘制信息。要获取数据集列表,请尝试这样的操作。
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上键入的词典。我不确定你是如何绘制数据的,所以这就是我能得到你的。希望它有所帮助,祝你好运。