Как разделить каждый столбец числом и добавить значение последних столбцов за один шаг - PullRequest
0 голосов
/ 08 января 2019

Я собираю много данных с микроконтроллера, включая частоту контроллеров. Я хочу использовать эту частоту для расчета временных интервалов между измерениями. Как мне написать это на 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)

... и т. Д.

Надеюсь, вы можете помочь.

...