季度数据缺失的pandas数据框架中的滞后值和差异[英] Lag values and differences in pandas dataframe with missing quarterly data

本文是小编为大家收集整理的关于季度数据缺失的pandas数据框架中的滞后值和差异的处理方法,想解了季度数据缺失的pandas数据框架中的滞后值和差异的问题怎么解决?季度数据缺失的pandas数据框架中的滞后值和差异问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

尽管PANDAS具有时间序列功能,但我仍在努力争夺具有不完整时间序列数据的数据范围.

请参见下面的图片,下图具有完整的数据,鞋面有空白.两张照片都显示正确的值.红色是我要使用黑色数据来计算的列. Cumm_Issd列显示了这一年中累积的已发行股票,MV是市场价值.

我想计算每季度已发行的股票(IssdQtr),市场价值的季度变化(D_MV_Q)和去年的MV(L_MV_Y).

有关基础CVS数据,请参见此 link 链接 link for Gapped数据.有两个公司1020180和1020201.

但是,当我尝试pandas shift方法时,它会在存在差距时失败,请尝试使用CSV文件和下面的代码.所有列(DiffEq, Dif1MV, Lag4MV)分别与IssdQtr, D_MV_Q, L_MV_Y分别不同.

.

是否有方法可以使用pandas处理数据差距?

import pandas as pd
import numpy as np
import os

dfg = pd.read_csv('example_soverflow_gaps.csv',low_memory=False)
dfg['date']     = pd.to_datetime(dfg['Period'], format='%Y%m%d')
dfg['Q']        = pd.DatetimeIndex(dfg['date']).to_period('Q')
dfg['year']     = dfg['date'].dt.year

dfg['DiffEq']    = dfg.sort_values(['Q']).groupby(['Firm','year'])['Cumm_Issd'].diff()
dfg['Dif1MV']    = dfg.groupby(['Firm'])['MV'].diff(1)
dfg['Lag4MV']    = dfg.groupby(['Firm'])['MV'].shift(4)

间隙数据:

在此处输入图像说明

完整数据:

在此处输入图像说明

推荐答案

使用合并解决了基本问题.首先,创建一个显示滞后日期或季度的变量.在这里,我们想要去年的MV(4个季度):

from pandas.tseries.offsets import QuarterEnd 
dfg['lagQ'] = dfg['date'] + QuarterEnd(-4)

然后使用键(公司和日期)和相关变量(此处MV)创建数据框架.

lagset=dfg[['Firm','date', 'MV']].copy()
lagset.rename(columns={'MV':'Lag_MV', 'date':'lagQ'}, inplace=True)

最后,将新框架合并到现有的框架中:

dfg=pd.merge(dfg, lagset,  on=['Firm', 'lagQ'], how='left')

本文地址:https://www.itbaoku.cn/post/1727824.html