在 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)
问题
如何为缺失的 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)