基于Python的NASA锂电池数据集提取和分析
一、数据准备
上一篇文章通过Matlab代码实现 NASA锂电池数据集分析_nasa电池数据集在哪里-CSDN博客
这篇文章通过Python代码来实现提取NASA数据集中任意参数,数据链接参考上面这篇文章↑
二、代码实现
# %%
# 提取数据创建csv
# 提取数据创建csv
import csv
import os
import scipy.io as sio
from itertools import zip_longest
def loaddata(Battery_path,status,datatype):
dic = sio.loadmat(Battery_path)
Battery = os.path.splitext(os.path.basename(Battery_path))[0]
cycle = dic[Battery][0][0][0][0]
num_cycles = cycle.shape[0]
# 索引字典
index_map = {
'V': 0,
'C': 1,
'T': 2,
'time':5,
'P': 6 }
index = index_map.get(datatype)
# 打开CSV文件用于写入,如果文件不存在则创建
csv_filename = f"{Battery}_{status}_{datatype}.csv"
# data_folder = 'csv_data'
# csv_path = os.path.join(data_folder,csv_filename)
# os.makedirs(data_folder, exist_ok=True)
csv_path = os.path.join('.',csv_filename)
# with open(csv_path, 'w', newline='') as csvfile:
# writer = csv.writer(csvfile)
# for i in range(num_cycles):
# if str(cycle[i][0][0]) == status:
# data = cycle[i][3][0][0][index][0]
# writer.writerow(data[j]for j in range(len(data)))
#### 按列存储
# 创建一个空列表存储所有数据行
all_rows = []
for i in range(num_cycles):
if str(cycle[i][0][0]) == status:
# 获取指定的数组数据
data = cycle[i][3][0][0][index][0]
all_rows.append(data) # 将每个数据行加入到 all_rows 列表中
# 将数据转置,使得不同循环的数据按照列排列
all_rows = list(zip_longest(*all_rows,fillvalue=''))
# 写入 CSV 文件
with open(csv_path, 'w', newline='') as csvfile:
writer = csv.writer(csvfile)
for row in all_rows:
writer.writerow(row)
# 循环读取数据
# charge_datatype_list = ['V','C','T','time']
# charge_datatype_list = ['V']
discharge_datatype_list = ['V','C','T','time','P']
Battery_list = ['B0033']
base_path = 'F:/***/学习资料/电池学习/个人训练文件/电池数据/'
for name in Battery_list:
print('Load Data'+ name + '.mat...')
Battery_path = base_path + name +'.mat'
# 提取充电各项数据
# for datatype in charge_datatype_list:
# print(f'Load charge {name} {datatype}')
# loaddata(Battery_path=Battery_path,status='charge',datatype=datatype)
# 提取放电各项数据
for datatype in discharge_datatype_list:
print(f'Load discharge {name} {datatype}')
loaddata(Battery_path=Battery_path,status='discharge',datatype=datatype)
# %%
三、提取结果
最后就可以利用这些文件进行深度学习训练啦,然后就能做些算法验证发发文章咯
先随便贴个一篇论文的预测结果图~下期出训练代码
作者:SimpLee666