我有一个看起来像这样的数据集。
b'\xa3\x95\x80\x80YFMT\x00BBnNZ\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00Type,Length,Name,Format,Columns\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\x95\x80\x81\x17PARMNf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00Name,Value\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\x95\x80\x82-GPS\x00BIHBcLLeeEefI\x00\x00\x00Status,TimeMS,Week,NSats,HDop,Lat,Lng,RelAlt,Alt,Spd,GCrs,VZ,T\x00\x00\xa3\x95\x80\x83\x1fIMU\x00Iffffff\x00\x00\x00\x00\x00\x00\x00\x00\x00TimeMS,GyrX,GyrY,G
我一直在阅读,试图找到如何在python中实现一个代码,这将允许我解析这些数据,以便我可以相互映射一些列(大部分时间)。
我发现的一些事情可能有助于这样做:
有一个代码可以让我将这些数据转换为CSV文件。我知道如何使用代码并将其转换为CSV文件并从那里进行绘图,但是为了获得学习体验,我希望能够在不将其转换为CSV文件的情况下执行此操作。现在我尝试阅读该代码,但我很无能,因为我对python很新。以下是代码的链接:
https://github.com/PX4/Firmware/blob/master/Tools/sdlog2/sdlog2_dump.py
此外,有人发布了这样的说法,这可能是日志格式,但我再也无法理解或运行该页面上的任何代码。
http://dev.px4.io/advanced-ulog-file-format.html
答案 0 :(得分:2)
解析二进制数据的一个很好的起点是struct module https://docs.python.org/3/library/struct.html及其unpack
函数。这就是您链接到的CSV转储例程也在做什么。如果您使用process
方法,它会执行以下操作:
您可以修改此代码,基本上将__printCSVRow
方法替换为将数据捕获到pandas数据帧(或其他方便的数据结构)中的内容,以便在主例程完成后,您可以获取所有数据从数据框中绘制出来。