You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

不使用Pandas导入含datetime.now()的CSV并实现时间运算

解决方案

不用Pandas的话,可以通过Python内置的csv模块读取文件,结合datetime解析时间字符串,再转换为NumPy的datetime64类型(或Unix时间戳),就能满足Matplotlib绘图和NumPy时间间隔计算的需求。

步骤说明

  • 用csv.reader逐行读取CSV内容
  • 用datetime.strptime解析时间字符串(匹配datetime.now()生成的%Y-%m-%d %H:%M:%S.%f格式)
  • 将解析后的datetime对象转换为NumPy的datetime64类型(直接支持Matplotlib时间轴和NumPy时间运算),或转换为Unix时间戳(浮点数格式,同样适合计算和绘图)

完整代码示例

import csv
from datetime import datetime
import numpy as np
import matplotlib.pyplot as plt

# 初始化存储列表
time_list = []
sensor1_values = []
sensor2_values = []

# 读取并处理CSV文件
with open('sensor_records.csv', 'r', newline='') as csv_file:
    csv_reader = csv.reader(csv_file)
    for row in csv_reader:
        # 解析时间字符串为datetime对象
        dt_obj = datetime.strptime(row[0], '%Y-%m-%d %H:%M:%S.%f')
        # 转换为numpy datetime64类型(推荐,保留时间语义)
        np_dt = np.datetime64(dt_obj)
        time_list.append(np_dt)
        
        # 读取并转换传感器数据
        sensor1_values.append(float(row[1]))
        sensor2_values.append(float(row[2]))

# 转换为numpy数组,方便后续计算和绘图
times = np.array(time_list)
sensor1 = np.array(sensor1_values)
sensor2 = np.array(sensor2_values)

# 示例:计算与第一个时间点的间隔(单位:秒)
time_intervals = (times - times[0]).astype('timedelta64[s]').astype(float)
print("时间间隔(秒):", time_intervals[:5])

# Matplotlib绘图示例
plt.figure(figsize=(10, 6))
plt.plot(times, sensor1, label='Sensor Data 1', marker='.', linestyle='-')
plt.plot(times, sensor2, label='Sensor Data 2', marker='x', linestyle='--')
plt.xlabel('Time')
plt.ylabel('Sensor Reading')
plt.title('Sensor Data Over Time')
plt.legend()
plt.xticks(rotation=45)
plt.tight_layout()  # 自动调整布局,避免标签被截断
plt.show()

关键细节

  1. 时间格式匹配:%Y-%m-%d %H:%M:%S.%f完全对应datetime.now()输出的带微秒的时间格式,确保解析不会出错。
  2. NumPy datetime64优势:该类型原生支持时间运算(如直接相减得到时间差),Matplotlib也能自动识别并渲染可读的时间轴,无需额外格式化。
  3. 备选方案:Unix时间戳:如果更倾向于数值型时间表示,可以用dt_obj.timestamp()将datetime对象转换为Unix时间戳(浮点数,单位秒),同样可以用于绘图和计算时间间隔。

内容的提问来源于stack exchange,提问作者onix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 20:42:35