hu18738640003 2024-06-18 21:20 采纳率: 20.9%
浏览 179
已结题

如何用python读取nasa电池数据集?

如何读取.mat文件里面的数据?
这是nasa的18650电池数据:

img

在matlab里面点击数据 B0006.mat,会显示在工作区:

img

工作区点击名称B0006以后,会显示字段:

img

再点击字段一列的cycle后,会显示以下内容:

img

然后在第一个charge同行的data那一列,点击进去:

img

可以看到有电压电流的测量数据:

img

然后打开Voltage_measured这个数据,这是电压数据,电流和时间也是行向量:

img

我的要求是,希望通过python读取这个文件里面某一次charge或者discharge中的电压电流时间等参数,生成一个dataframe存放电压电流时间最好,把电压电流时间分别生成几个列表读取也行

我想想怎么让回答的获取B0006这个文件,方便进行后续的测试
这有一个链接,好像可以下载nasa的电池数据
https://blog.csdn.net/weixin_70125213/article/details/137174335

重点是我需要用python来读取这个文件进行后续操作,不能用matlab,但是这个数据集是mat文件的,我也尝试用GPT3.5,但是给的方法不对,读取不出来

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-06-18 21:24
    关注

    引自免费微信小程序:皆我百晓生

    要使用Python读取NASA的18650电池数据集中的.mat文件,我们可以利用scipy.io库中的loadmat函数。下面是一个详细的步骤和代码示例,展示如何读取并处理这些数据。

    首先,确保你已经安装了numpyscipy库。如果没有安装,可以通过pip安装它们:

    pip install numpy scipy
    

    接下来,使用以下Python代码读取.mat文件,并将数据转换为Pandas DataFrame,以便于进一步分析:

    import scipy.io
    import pandas as pd
    import numpy as np
    
    # 加载.mat文件
    mat_data = scipy.io.loadmat('path_to_your_file/B0006.mat')  # 替换为你的文件路径
    
    # 获取电池数据结构
    battery_data = mat_data['B0006']
    
    # 提取cycle信息
    cycles = battery_data[0][0]['cycle']
    num_cycles = len(cycles)
    
    # 遍历每个cycle,提取charge或discharge的数据
    for i in range(num_cycles):
        cycle = cycles[i][0]
        cycle_type = cycle['type'][0]
        if cycle_type == 'charge' or cycle_type == 'discharge':
            data = cycle['data'][0][0]
    
            # 解析数据字段
            voltage_measured = data['Voltage_measured'][0]
            current_measured = data['Current_measured'][0]
            temperature_measured = data['Temperature_measured'][0]
            current_charge = data['Current_charge'][0]
            voltage_charge = data['Voltage_charge'][0]
            time = data['Time'][0]
    
            # 创建DataFrame
            df = pd.DataFrame({
                'Voltage': voltage_measured,
                'Current': current_measured,
                'Temperature': temperature_measured,
                'Charge_Current': current_charge,
                'Charge_Voltage': voltage_charge,
                'Time': time
            })
    
            print(df.head())  # 打印前几行数据
    

    这段代码将加载.mat文件,遍历其中的每一个cycle,检查cycle类型(充电或放电),并从相应的data结构中提取电压、电流、温度等数据。然后,它将这些数据放入一个Pandas DataFrame中,这样你就可以轻松地进行数据分析和可视化。

    请注意,你需要将 'path_to_your_file/B0006.mat' 替换为实际的文件路径。此外,由于.mat文件可能有多种不同的数据结构,你可能需要根据具体文件的结构调整代码中的字段名。

    这个过程可能需要一些调试,特别是如果你遇到的数据结构与上述代码预期的不同。但这是一个很好的起点,可以帮助你开始使用Python处理这些数据。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 6月26日
  • 已采纳回答 6月18日
  • 创建了问题 6月18日