在 Python 中插入具有估算值的缺失行

Inserting missing rows with imputed values in Python

问题

如何为缺失的 YEARS 插入行,并估算年度 SALES.

进度

以下代码计算销售额差异。但是,它是一年,使用显式 iloc 指针技术。

import pandas as pd

data = {"YEAR": [1990, 1995, 2000, 1990, 1995, 2000], 
        "COUNTRY": ["USA", "USA", "USA", "USA", "USA", "USA"],
        "STATE": ["AZ", "AZ", "AZ", "AZ", "AZ", "AZ"],
        "BRANCH":["Bed", "Bed", "Bed", "Kitchen", "Kitchen", "Kitchen"], 
        "SALES": [50, 80, 100, 10, 20, 50]}

df = pd.DataFrame(data)

value_first = df.iloc[0][4]
value_second = df.iloc[1][4]

delta_step = (value_second - value_first) / 5 # because 5 years between

for x in range(0, 6): 
    print((x * delta_step) + value_first)

原始数据

目标

目标是插入黄色突出显示的行,其中销售额是使用 1990 年和 2000 年销售数字之间的直线步长估算的。

首先对每组缺失的年份进行罚款,并将其制成 merge df

idx=df.groupby(['COUNTRY','STATE','BRANCH'])['YEAR'].\
       apply(lambda x : pd.Series(range(min(x),max(x)+1))).\
         reset_index(level=[0,1,2])

然后合并

yourdf=idx.merge(df,how='left')

然后使用 interpolate 估算缺失值

yourdf['SALES']=yourdf.groupby(['COUNTRY','STATE','BRANCH'])['SALES'].apply(pd.Series.interpolate)