Python新手求助:从多小时文件中导入时间与频率特定数据
搞定24小时文件的时间与频率数据导入
嘿,作为Python新手处理这种批量文件确实有点挠头,我来一步步带你实现,代码都是可直接复用的,放心~
先明确前提(你可以根据实际情况调整)
我默认你的24个小时文件是这样的:
- 放在同一个文件夹里,命名比如
hour_00.json、hour_01.json...hour_23.json(如果命名不一样,后面代码改改就行) - 每个文件里的字典,包含你要的时间和频率字段,比如键名是
"time"和"frequency"(如果你的键名是别的,比如"采集时间"、"频次",记得替换代码里的对应部分)
核心代码实现
直接上代码,每一行都加了注释,你跟着改就行:
import os import json # 如果你的文件不是JSON,比如是pickle,就换成import pickle # 用来存所有提取到的数据 time_list = [] frequency_list = [] # 替换成你的文件所在文件夹路径,比如当前文件夹就写"./" folder_path = "./hourly_data_files" # 遍历0到23点的文件 for hour in range(24): # 生成文件名,保证小时是两位数(比如00、01) file_name = f"hour_{hour:02d}.json" # 拼接完整的文件路径 full_path = os.path.join(folder_path, file_name) # 先检查文件存在不,避免报错 if os.path.exists(full_path): # 打开文件加载字典 with open(full_path, "r", encoding="utf-8") as f: # 如果是pickle文件,就改成data_dict = pickle.load(f) data_dict = json.load(f) # 提取时间和频率,键名一定要和你字典里的一致! current_time = data_dict.get("time") current_freq = data_dict.get("frequency") # 确保提取到数据再添加(避免空值) if current_time is not None and current_freq is not None: time_list.append(current_time) frequency_list.append(current_freq) else: print(f"提醒:{file_name} 找不到,跳过这个文件啦") # 看看结果 print("提取到的所有时间:", time_list) print("提取到的所有频率:", frequency_list)
进阶:把数据整理成表格(用pandas)
如果之后要分析数据,把数据转成DataFrame会方便很多,加这段代码就行:
import pandas as pd # 生成DataFrame df = pd.DataFrame({ "时间": time_list, "频率": frequency_list }) # 保存成CSV文件,方便用Excel打开 df.to_csv("daily_time_frequency.csv", index=False, encoding="utf-8-sig") print("数据已经存成CSV文件啦,去文件夹里看看吧~")
常见问题调整
- 如果你的文件是txt格式,且字典是直接写在里面的(比如
{'time': 'xxx', 'frequency': xxx}),可以把json.load(f)改成eval(f.read())(注意只在你信任的文件里用eval,避免安全问题) - 如果文件名不是
hour_xx.json,比如是20240520_00.dat,就修改file_name的生成方式,比如f"20240520_{hour:02d}.dat" - 如果字典里的频率是字符串类型,记得转成数值,比如
current_freq = float(data_dict.get("frequency"))
这样应该就能完美解决你的需求啦,有问题随时调整就行~
内容的提问来源于stack exchange,提问作者Lone
相关产品推荐
相关产品推荐

