我正在运行一个循环,它将值追加到循环外部的一个空数据帧中。但是,完成此操作后,数据框仍为空。我不知道是怎么回事。目标是找到导致残差平方和最小的幂值。
示例代码如下:
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()]我到底做错了什么?
发布于 2019-05-17 03:07:23
这段代码并不像ALollz所指出的那样高效。当你追加的时候,它基本上在内存中创建了一个新的数据帧(我在这里过于简化了)。
代码中的错误是:
sum_ssr_df.append(df_i)应该是:
sum_ssr_df = sum_ssr_df.append(df_i)https://stackoverflow.com/questions/56174289
复制相似问题