【问题标题】:Getting date/time and data out of csv into matplotlib将日期/时间和数据从 csv 获取到 matplotlib
【发布时间】:2018-04-23 02:20:35
【问题描述】:

我的最终目标是从 csv 日志文件中获取 matplotlib 绘制的日期/时间和临时数据,数据格式如下:

date/time,temp1,temp2,temp3,temp4,ect
8/25/2017 14:55:49,20.851,20.953,21.025,21.055,ect
8/25/2017 14:56:49,20.799,20.944,20.99,21.029,ect

我试图将我的数据集硬塞到这个示例中作为起点: https://matplotlib.org/gallery/api/date.html

由于我仍然熟悉 matplotlib,我不确定首选输入是什么,上面的示例使用数组,所以如果这是最好的选择,那么我的问题是什么是获取这些数据的有效方法一个格式正确的数组?这是我在读取一行数据并弄清楚如何解析日期/时间并将其放入日期时间容器中的代码:

import datetime
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import matplotlib.cbook as cbook

f = open(r'Sample Data.csv')

#Burn off top crap of logfile
for x in range(38):
    f.readline()

#Headers
pantsHeaders = f.readline()
#Start of data
pants1 = f.readline().replace('\x00','').strip('\n').split(',')


pantsDate = datetime.date(int(pants1[0].split(' ')[0].split('/')[2]),int(pants1[0].split(' ')[0].split('/')[0]),int(pants1[0].split(' ')[0].split('/')[1]))
pantsTime = datetime.time(int(pants1[0].split(' ')[1].split(':')[0]),int(pants1[0].split(' ')[1].split(':')[1]),int(pants1[0].split(' ')[1].split(':')[2]))

date = datetime.datetime.combine(pantsDate, pantsTime)

必须有一种更好的方法来解析日期/时间信息,而不是我这样做的方法,而且我愿意接受任何方法来获得 matplotlib 友好格式(数组或其他)。

【问题讨论】:

    标签: python csv matplotlib


    【解决方案1】:

    Pandas 擅长处理日期时间格式,并且与 Matplotlib 很好地集成。

    例如,使用您的示例数据:

    datetime,temp1,temp2,temp3,temp4
    8/25/2017 14:55:49,20.851,20.953,21.025,21.055
    8/25/2017 14:56:49,20.799,20.944,20.99,21.029
    

    如果保存为example.csv,你可以这样做:

    import pandas as pd
    df = pd.read_csv("example.csv", parse_dates=['datetime'], index_col="datetime")
    df.plot()
    

    【讨论】:

      【解决方案2】:

      拆分 CSV 的日期时间字符串后,您可以使用 strptime,如下例所示:

      from datetime import datetime
      parsed_value = '8/25/2017 14:55:49'
      date = datetime.strptime(parsed_value, "%m/%d/%Y %H:%M:%S")
      print(type(date))
      print(date)
      

      返回:

      class 'datetime.datetime'>
      2017-08-25 14:55:49
      
      Process finished with exit code 0
      

      【讨论】:

        猜你喜欢
        • 2017-01-30
        • 2017-07-08
        • 1970-01-01
        • 2016-11-03
        • 2013-07-03
        • 1970-01-01
        • 1970-01-01
        • 2017-11-25
        • 2015-11-19
        相关资源
        最近更新 更多