首页 > 解决方案 > Matplotlib 从 CSV 中读取时间值

问题描述

我是 python 编码的新手,但是已经玩了一段时间了

我正在尝试使用 matplotlib 从 CSV 文件中绘制日期。我正在阅读这样的 CSV 文件:(这是我每分钟阅读的一个小样本)

03:59:01,1,0.000,2,0.000,3,0.000,4,0.622,
04:00:01,1,12.000,2,0.000,3,0.000,4,0.627,

我只查看第 0 列(时间)和第 3 列(值)我知道时间不是 INT,所以它不会导入它 IE:我明白了

ValueError: invalid literal for int() with base 10: '03:59:55'

当它读入时如何转换它以便我可以?

import matplotlib.pyplot as plt
import numpy as np
import csv
x = []
y = []
# read in file  columns 0 and 2
with open('bob1.csv','r') as csvfile:
    plots = csv.reader(csvfile, delimiter=',')
    next(plots)
    for row in plots:
        x.append(int(row[0]))
        y.append(float(row[2]))

plt.plot(x,y, label='Loaded from file!')
plt.savefig('test7.png',dpi=720)

我已经进行了一些基本的谷歌搜索,但没有任何内容可以帮助我完成我正在做的事情。我知道有很多为什么要这样做。因此,如果有人有时间并愿意帮助我更好地获取此代码,我将不胜感激。

谢谢

标签: pythonnumpymatplotlibtime

解决方案


您可以尝试以下代码:

import matplotlib.pyplot as plt
import pandas as pd

csv_data = pd.read_csv('bob1.csv', index_col= 'Time')
data = pd.DataFrame(csv_data)

plt.xlabel('Time')
wathever = plt.plot(data['Unnamed: 1'], 'k', label='')
plt.title('')
plt.legend(title='')
plt.show(block=True)

添加带有一些文本的行,这将是您的索引。然后,index_col= 'Time'Time 是我在时间序列中添加为标签的文本。如果您不在其余列中添加名称,熊猫将自动考虑Unnamed: number. 您还可以为列添加名称,然后'Unnamed:1'添加列的名称而不是 。

例如,如果您创建以下 df:

在此处输入图像描述

这是:

Time,A,B,C,D,E,F,G,H
03:59:01,1,0,2,0,3,0,4,0.62
04:00:01,1,12,2,0,3,0,4,0.63

然后,'Unnamed: 1'您需要键入'A'


推荐阅读