pandas 使用stats.boxcox - ValueError:数据必须是一维的

ffscu2ro  于 2023-11-15  发布在  其他
关注(0)|答案(1)|浏览(147)

我目前正在使用来自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,)

zi8p0yeb

zi8p0yeb1#

好吧,这就是我是怎么做的:

df = pd.read_csv("Pakistan_Largest_Ecommerce_Dataset.csv")

price = df['price']  // You can replace price with your column name
price_normalized = stats.boxcox(price)

字符串
就这样

相关问题