从数据框中过滤“坏”数据并绘制“好”结果

2024-06-06 16:53:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用一个函数来绘制来自两个数据帧的各种光源的光照曲线。我想写一个循环,通过数据帧中的每条光照曲线,绘制出好的光照曲线。该函数的工作原理是在同一绘图上绘制两条曲线,每个数据帧绘制一条曲线。我需要循环来计算其中一条曲线(LSST曲线)的数据点,并消除少于5个点的绘图。所有的命中图都有足够的数据点,但是LSST图已经应用了过滤器。我对Python还比较陌生,所以我对如何进行这项工作感到非常困惑。所讨论的功能如下:

def plotLsstHitsLightCurve(obj, srcTable, row, lcPath='random file path'):
    plt.figure(figsize=(10,8))

    # Plot LSST curve
    srcRowFilter = (srcTable['diaObjectId'] == obj)
    srcRow = srcTable.loc[srcRowFilter]
    plt.errorbar(srcRow['midPointTai'], srcRow['magCol'],yerr=srcRow['magErrCol'],ls=':', marker='o', label='LSST')

    # PLot HiTS Curve
    tok = row['internalID'].split('_')
    field = '_'.join([tok[0],tok[1]])
    ccd = tok[2]
    lightcurveFile = field + '_' + ccd + '_LC_50.tar.gz'
    tarball = tarfile.open(os.path.join(lcPath,field,ccd,lightcurveFile))
    data = tarball.extractfile(str(row['internalID'])+ '_g.dat')
    dfl = pd.read_csv(data,sep='\t') # lead a file with a light curve data into a pandas dataframe
    plt.errorbar(dfl.MJD,dfl.MAG_AP1,dfl.MAGERR_AP1, marker='o',linestyle=':', label='HiTS')
obj = goodObj.iloc[idx[2]]['diaObjectId']
row = hitsDf.iloc[2]
enter code here
enter code here

Tags: 数据objfielddata绘制pltlsst曲线