首页 > 解决方案 > 从 pandas 数据框中过滤“坏”数据并绘制“好”结果

问题描述

我正在使用一个函数来绘制来自两个熊猫数据帧的各种来源的光曲线。我想编写一个循环来循环遍历数据框中的每条光曲线,从而绘制出良好的光曲线。该函数通过在同一图上绘制两条曲线来工作,一条来自每个数据帧。我需要循环来计算其中一条曲线(LSST 曲线)的数据点,并消除少于 5 个点的图。所有的 HiTS 图都有足够的数据点,但 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

标签: pythonpandasmatplotlib

解决方案


推荐阅读