我目前正在使用来自Weather Conditions in World War Two的数据集进行规范化。
我试图规范化的列的值是“Precip”(降水量/mm)。
看起来我把ndarray作为参数给了stats.boxcox()
,但是我不明白我使用的数组是如何变成ndarray的。
Precip的dtype是object,它的str值是'T'。所以我做了一些预处理,以便在归一化之前将T替换为min值。代码如下:
weatherww2_data = pd.read_csv("../input/weatherww2/Summary of Weather.csv")
precip_data = pd.DataFrame(weatherww2_data.Precip)
# select rows whose column value is not T or 0
except_list = ['T', '0', 0]
excluded_precip_data = precip_data[~precip_data['Precip'].isin(except_list)]
# get min
min_precip_except_zero = excluded_precip_data.min(axis=0)
# replace T with minimum value
replaced_precip_data = precip_data.replace(to_replace='T', value=min_precip_except_zero)
字符串
下面是标准化的代码:
normalized_precip = pd.Series(stats.boxcox(replaced_precip_data)[0], name='Precip', index=replaced_precip_data.index)
型
这一行给出了错误消息:
/opt/conda/lib/python3.7/site-packages/scipy/stats/morestats.py in boxcox(x, lmbda, alpha, optimizer)
1053 x = np.asarray(x)
1054 if x.ndim != 1:
-> 1055 raise ValueError("Data must be 1-dimensional.")
1056
1057 if x.size == 0:
ValueError: Data must be 1-dimensional.
型
有什么问题吗?
我检查了replaced_precip_data['Precip']
的形状,它不是“一维”吗?我想我误解了数组维度的概念。
print(replaced_precip_data['Precip'].shape)
output> (119040,)
型
1条答案
按热度按时间zi8p0yeb1#
好吧,这就是我是怎么做的:
字符串
就这样