Я собираю много данных с микроконтроллера, включая частоту контроллеров. Я хочу использовать эту частоту для расчета временных интервалов между измерениями. Как мне написать это на python?
Я пытался использовать cumsum и другие функции, но они не работают в моем случае. Поэтому я думаю об использовании цикла for, но не могу понять логику кода. Вот как я импортирую свои данные:
import pandas as pd
from sqlalchemy import create_engine
import datetime as dt
from IPython.display import display
csvfile = 'datafile.csv'
disk_engine = create_engine('sqlite:///sql_data_server.db')
start = dt.datetime.now()
chunksize = 20000
j = 0
index_start = 1
for df in pd.read_csv(csvfile, chunksize=chunksize, iterator=True, encoding='utf-8-sig'):
df.index += index_start
j += 1
print('{} seconds: completed {} rows'.format((dt.datetime.now() - start).seconds, j * chunksize))
df.to_sql('data', disk_engine, if_exists='append')
index_start = df.index[-1] + 1
# SELECTED DATA
df = pd.read_sql_query('SELECT Frequency FROM data ', disk_engine)
Frequency = df.Frequency
Выход:
Sample Ax Ay Az Gx ... q1 q2 q3 Temp Frequency
0 0 -0.04 -0.0 -1.01 -0.03 ... -0.16 0.99 0.0 23.74 330.80
1 1 -0.03 -0.0 -1.01 0.08 ... -0.16 0.99 0.0 23.73 328.52
[2 rows x 13 columns]
0 seconds: completed 20000 rows
1 seconds: completed 40000 rows
2 seconds: completed 60000 rows
2 seconds: completed 80000 rows
3 seconds: completed 100000 rows
4 seconds: completed 120000 rows
5 seconds: completed 140000 rows
6 seconds: completed 160000 rows
6 seconds: completed 180000 rows
7 seconds: completed 200000 rows
8 seconds: completed 220000 rows
9 seconds: completed 240000 rows
9 seconds: completed 260000 rows
10 seconds: completed 280000 rows
11 seconds: completed 300000 rows
12 seconds: completed 320000 rows
13 seconds: completed 340000 rows
14 seconds: completed 360000 rows
14 seconds: completed 380000 rows
15 seconds: completed 400000 rows
16 seconds: completed 420000 rows
17 seconds: completed 440000 rows
17 seconds: completed 460000 rows
У меня есть измерения частоты (df.Frequency) в столбце как int64, и я хочу использовать эти данные для вычисления временных шагов между измерениями. Я думаю, что это легче понять, если я просто покажу вам свой мыслительный процесс. Я провел расчеты в Excel следующим образом:
Timestep
Строка 1: 1 / 330,8
Строка 2: Строка 1 + (1 / 328,52)
Строка 3: Строка 2 + (1 / 329,49)
... и т. Д.
Надеюсь, вы можете помочь.