Как рассчитать разницу потоков и посчитать количество вхождений в python - PullRequest
0 голосов
/ 29 мая 2018

У меня есть данные, состоящие из времени и потока (4116 строк × 2 столбца).Я хочу найти распределение изменения яркости, рассчитав разницу потоков между двумя последовательными точками и посчитав количество вхождений.Сначала я попытался нормализовать данные (mydata_nor), затем взял разницу (d), но не смог подсчитать количество вхождений.Кроме того, я не уверен, что этот код правильный.Я пытаюсь построить график между «разницей потоков» и «количеством». Вот несколько строк, показывающих, как выглядят mydata:

352.3771366  20458.564
352.3975695  20458.295
352.4384352  20454.715
352.4588681  20468.422
352.4793010  20460.531
352.4997339  20465.701
352.5201667  20463.215
352.5405995  20463.814
352.5610325  20463.986

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

mydata = pd.read_csv('kplr31.txt')
mydata_nor = (mydata - mydata.mean()) / (mydata.max() - mydata.min())
d = np.diff(mydata_nor)

1 Ответ

0 голосов
/ 29 мая 2018

Я думаю, что ваш d пропустит параметр axis=0, иначе он не сделает это вдоль правой оси.

d = np.diff(mydata_nor,axis=0)

Но сделать это немного по-другому, вы можете:

mydata_nor = (mydata - mydata.mean()) / (mydata.max() - mydata.min())
# create the column diff_flux with diff()
mydata_nor['diff_flux'] = mydata_nor['flux'].diff()

Теперь, чтобы получить DF с diff_flux и номером вхождения:

df_output = (mydata_nor.groupby('diff_flux') #groupby diff_flux value
                       .count()  # count the occurence for each diff_flux
                       .rename(columns = {'time':'count'}) #rename time by count
                       .drop('flux',1) #drop the column flux as it's not necessary
                       .reset_index()) # reset_index to have diff_flux as a column

с данными, которые вы получаете, он дает:

   diff_flux  count
0  -0.575691      1
1  -0.261180      1
2  -0.181367      1
3  -0.019625      1
4   0.012548      1
5   0.043700      1
6   0.377180      1
7   1.000000      1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...