我正在运行一个循环,该循环将值附加到循环外部的空数据帧中。但是,完成此操作后,数据帧将保持为空。我不确定发生了什么。目的是找到导致残差平方和最低的幂值。
下面的示例代码:
import tweedie
power_list = np.arange(1.3, 2, .01)
mean = 353.77
std = 17298.24
size = 860310
x = tweedie.tweedie(mu = mean, p = 1.5, phi = 50).rvs(len(x))
variance = 299228898.89
sum_ssr_df = pd.DataFrame(columns = ['power', 'dispersion', 'ssr'])
for i in power_list:
power = i
phi = variance/(mean**power)
tvs = tweedie.tweedie(mu = mean, p = power, phi = phi).rvs(len(x))
sort_tvs = np.sort(tvs)
df = pd.DataFrame([x, sort_tvs]).transpose()
df.columns = ['actual', 'random']
df['residual'] = df['actual'] - df['random']
ssr = df['residual']**2
sum_ssr = np.sum(ssr)
df_i = pd.DataFrame([i, phi, sum_ssr])
df_i = df_i.transpose()
df_i.columns = ['power', 'dispersion', 'ssr']
sum_ssr_df.append(df_i)
sum_ssr_df[sum_ssr_df['ssr'] == sum_ssr_df['ssr'].min()]
我到底在做什么错?
答案 0 :(得分:0)
此代码的效率不如ALollz所指出的那样。当您追加内容时,它基本上会在内存中创建一个新的数据帧(我在这里简化了)。
您的代码中的错误是:
sum_ssr_df.append(df_i)
应为:
sum_ssr_df = sum_ssr_df.append(df_i)