首页 > 解决方案 > 如何计算通量差异并计算python中的出现次数

问题描述

我的数据由时间和流量组成(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)

标签: pythonpandasmatplotlib

解决方案


我认为您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()

现在得到一个带有 diff_flux 和出现次数的 DF:

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

推荐阅读