按天分组一堆文件

3
我有一堆包含大气测量值的文件,存储在一个目录中。文件格式为NetCDF。每个文件都有一个时间戳(变量“basetime”)。我可以读取所有文件并绘制单个测量事件(温度 vs 高度)的图形。 接下来我需要做的是“按天分组”,并将在同一天拍摄的所有测量值放在一个图中一起绘制。不幸的是,我不知道该怎么做。 其中一个想法是使用下面代码中定义的“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(data [measurement_day])== 0: KeyError:'2009/05/28'

什么是“数据集”?它来自哪里? - Ethan Furman
在回答Ethan Furman的问题之前,我们无法确定数据的结构,但您是否尝试使用measurement_day作为键构建字典?您可以将每个值设置为变量列表,或者可能是另一个字典(键=高度、温度等,值=适当值的列表)。 - Kyle Hannon
Dataset 是 Python 模块 NetCDF4 中的一个类。它在之前已经被导入了 (from NetCDF4 import Dataset)。很抱歉我忘记添加那行代码了。 - paulchen
那么你每天都有四个不同的文件?这些文件中是否只包含当天的数据?如果是这样,你可以使用MFDataset()打开所有四个文件,并绘制你的数据。 - desired login
1个回答

0
请问有人可以帮我吗?
我会尽力而为,但我不是完全清楚你已经拥有什么。
我能够读取所有文件并绘制单个测量事件(温度 vs. 高度)。接下来我需要做的是“按天分组”,并将在同一天采取的所有测量值绘制在一个图中。
从这里,我假设您知道如何在给定数据集列表的情况下绘制信息。要获取该数据集列表,请尝试以下操作。
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为键的字典。我不确定你是如何绘制数据图表的,所以这就是我能帮到你的地方了。希望能对你有所帮助,祝你好运。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接