首页 > 解决方案 > 使用 DataFrames 每天将数据记录到 Excel 中

问题描述

早上好,现在我正在做一个 RPi 项目,该项目每秒捕获一些数据并将其转换为数字。我希望 RPi 将此数字/时间数据保存到一个 excel 文件中,并且我还希望该文件可以访问,数据可以根据用户输入“图形化”(即用户想要过去 3 天的数据>输出过去 3 天的数据图表)。我知道这可以分为两部分:读取和保存数据(1)和拉取和绘制数据(2)。对于这个问题,我想重点关注(1)。

为了从传感器读取数据并将其保存到充当数据库的 excel 文件中,我正在考虑使用 pandas 的 DataFrame。为什么,你可能会问。我的代码基于前任留下的先前代码,并且它已经具有类似的读/写代码。然而,规模有很大不同(约 50 个条目与约 38000 个条目)。

我正在考虑将数据记录为:

Excel 中的基本文本示例数据

如您所见,如果每一秒都有数据,那么一天我会得到 86400 个条目。

现在写,我保存这些数据的代码如下。我为要保存的数据创建了一个类,其中包含变量:

class ShiftDataSet:

def __init__(self):
    self.effDataList = []
    self.timeDataList = []
    self.dateTimeToday = datetime.datetime.now()
    self.date = self.dateTimeToday.strftime("%y%b%d")#str
    #%y is year without century, %b is month abbv, %d is day of month

然后(尝试)将此数据记录到数据框中,然后记录到 excel 文件中,如下所示:

def saveToDf(self):
    dataToSave = {self.date : self.effDataList}
    #dictionary of data to save. effDataList is the list of 1's and 0's as read by the second.

    dfToSave = pd.DataFrame(dataToSave, index=self.timeDataList)
    #create DataFrame to save as Excel, using timeDataList as index. timeDataList is a str list of the second the recording is taken

    print("Attempting to save data")

    #code to combine dfToSave with old df record
    oldDf = pd.read_excel("/home/pi/Sensor/FS Days/Shift Record Template.xlsx")
    #oldDf is the database template, structured the same way like the "Data in Excel" image above

    result = dfToSave.combine_first(oldDf)
    #combine new dataframe of new data with template database

    writer = pd.ExcelWriter("/home/pi/Sensor/FS Days/Shift Record Template.xlsx")
    result.to_excel(writer, 'Sheet 1')

    writer.save()
    print("Save Complete")

    return

我根据我前任的小规模录音代码对该代码进行了建模。但是,运行此代码时,我遇到了数据未正确写入 excel 文件的问题,结果如下: Messed Data

所以我的问题是:
1)如何将每秒获取的数据记录到正确的“秒”索引中?
2)每秒记录和保存数据会更好,还是将其汇集到更大的列表中然后在一天中保存一两次?
3) pandas DataFrame 是我想做的最好的解决方案,还是有更好的方法?

非常感谢你的帮助。

标签: exceldatabasepandasdataframepython-3.5

解决方案


1)就像您为 定义索引一样dfToSave,您必须在read_excel().

2)我猜这主要取决于您的硬件;没有任何背景信息很难做出这个判断。

3)我也会使用熊猫,但这并不意味着它是最好的方法。我猜你可以看看 Python 的其他 excel 库......


推荐阅读