![](/img/trans.png)
[英]extract data from .txt file and convert it into row and column in .csv format
[英]Parsing this type of data in a CSV/txt format
我有一個存儲在csv / txt文件中的數據。
格式是我以前從未使用過的格式,因此我一直在尋找如何實現此目標的方向。
由於csv文件很大,大約70MB,因此我正在尋找可以提高效率的文件。
數據集看起來像這樣:
FMT, 128, 89, FMT, BBnNZ, Type,Length,Name,Format,Columns
FMT, 130, 46, GPS, QBIHBcLLefffB, TimeUS,Status,GMS,GWk,NSats,HDop,Lat,Lng,Alt,Spd,GCrs,VZ,U
FMT, 131, 46, GPS2, QBIHBcLLefffB, TimeUS,Status,GMS,GWk,NSats,HDop,Lat,Lng,Alt,Spd,GCrs,VZ,U
FMT, 196, 24, GPA, QCCCCBI, TimeUS,VDop,HAcc,VAcc,SAcc,VV,SMS
FMT, 197, 24, GPA2, QCCCCBI, TimeUS,VDop,HAcc,VAcc,SAcc,VV,SMS
FMT, 132, 49, IMU, QffffffIIfBB, TimeUS,GyrX,GyrY,GyrZ,AccX,AccY,AccZ,ErrG,ErrA,Temp,GyHlt,AcHlt
GPS, 288111438, 4, 408321800, 1919, 12, 0.81, 34.6724954, -118.3331596, 851.46, 0.07211103, 213.6901, 0.09, 1
GPA, 288111438, 1.01, 0.86, 1.51, 0.28, 1, 288111
SONR, 288111891, 0, 0, 0, 0
RFND, 288111901, 0.00, 0.00
IMU, 288132434, 0.01139331, 0.01001555, 0.0738163, 0.3783027, -1.865716, -9.70467, 0, 0, 49.00554, 1, 1
IMU2, 288132434, 0.01213987, 0.01530177, 0.06975921, 0.3055397, -1.755074, -9.364305, 0, 0, 52, 1, 1
SONR, 288132959, 0, 0, 0, 0
RFND, 288132969, 0.00, 0.00
ATT, 288133031, 0.00, 9.62, 0.00, -0.53, 0.00, 30.64, 0.02, 0.01
如您所見,它為我提供了數據的結構。 之后,根據捕獲數據的頻率,它將列出該參數及其對應的值。
大約有800個被捕獲的參數,我不會全部使用。 我只是將其中一些繪制到通常的TimeUS
。
所以我想知道是否應該為要使用的每個變量創建一個列表。 例如,對於IMU,將有6列的列表,其中包含TimeUS, Guyrx, GuyrY..etc
。
還是如果有python模塊可以幫助我呢?
編輯:這是我到目前為止:
import csv
import matplotlib.pyplot as plt
desiredData = 'IMU'
data = []
with open('data2.csv', 'r') as csvfile:
content = csv.reader(csvfile, delimiter=',')
for row in content:
if desiredData == row[0]:
data.append(row[1])
fig1 = plt.figure(figsize= (10,10))
ax = fig1.add_subplot(111)
mSec = data[:3]
Alt = data[:4]
ax.plot(mSec, Alt, label='Alt(m)', color = 'r')
plt.legend(loc='best',prop={'size':10})
plt.grid(True)
ax.set_xlabel('Time (s)')
ax.set_ylabel('Alt (m)')
但是,我收到此錯誤:ValueError:x和y必須具有相同的第一維。 運行此代碼也要花費一些時間。 這正常嗎?
這是我可以有效解析csv文件的一些方法
簡單的字符串拆分應該可以幫助您獲取所需的字段,並根據指示記錄格式的字段的值來解析它們。
盡可能多地處理計算,因此您不必保留大量的值並保持較低的內存占用。
如果可能,請使用mmap,這對於順序讀取來說更快。
盡可能主動地將內容轉儲到磁盤(數據庫?)中,以再次減少內存占用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.