【问题标题】:Matplotlib Read in time as value from CSVMatplotlib 从 CSV 中读取时间值
【发布时间】:2020-03-22 14:35:01
【问题描述】:

我是 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)

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

谢谢

【问题讨论】:

标签: python numpy matplotlib time


【解决方案1】:

你可以试试下面的代码:

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',时间是我在时间序列中添加为标签的文本。如果您不在其余列中添加名称,熊猫将自动考虑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

然后,您需要输入'A',而不是'Unnamed: 1'

【讨论】:

  • 所以 CSV_Data 正在读取文件并设置和索引。然后 Data = 正在接受它并让 Panda 从中构建一个数据。无论如何,我有点迷失了。未命名应该等于其他列标题之一,“k”在做什么标签是标签。但是无论何时何地都不会插手任何事情来做任何事情,我们是否在定义 x 和 y 轴
  • 我已经将'Time' 列设置为索引,因此您无需再指定xy,因为'Time' 已经是您的x。只需在数据框中绘制所需的列。如果不加名字,就是'Unnamed: number',其中number对应列号(0 == A,1 == B),...
  • 谢谢大家成功了!下一步格式化 X 刻度线以显示许多值,需要将其限制为每个小时
猜你喜欢
  • 2020-05-01
  • 2016-06-18
  • 2018-03-26
  • 1970-01-01
  • 2016-11-03
  • 2018-04-23
  • 1970-01-01
  • 2020-05-19
  • 2015-05-10
相关资源
最近更新 更多