前提
あるデータフレームをboxcox変換し、そちらの歪度を出力、さらにヒストグラムを作成しようと考えています。
発生している問題・エラーメッセージ
歪度を出力しようとしてもエラーが出て先に進めません
boxcox(price) 0 [319.84933671496566, 380.5543061285084, 156.87... 1 0.547037 --------------------------------------------------------------------------- ValueError Traceback (most recent call last) Input In [51], in <cell line: 9>() 7 print(prices, '\n') 8 #pricesの歪度を出力 ----> 9 print('prices skew:', skew(prices)) 10 # 変換後の購入金額をヒストグラムにする 11 #プロット図のサイズを設定 12 plt.rcParams['figure.figsize'] = (12.0, 6.0) File ~\anaconda3\lib\site-packages\scipy\stats\stats.py:1101, in skew(a, axis, bias, nan_policy) 1098 a, axis = _chk_asarray(a, axis) 1099 n = a.shape[axis] -> 1101 contains_nan, nan_policy = _contains_nan(a, nan_policy) 1103 if contains_nan and nan_policy == 'omit': 1104 a = ma.masked_invalid(a) File ~\anaconda3\lib\site-packages\scipy\stats\stats.py:103, in _contains_nan(a, nan_policy) 98 nan_policy = 'omit' 99 warnings.warn("The input array could not be properly " 100 "checked for nan values. nan values " 101 "will be ignored.", RuntimeWarning) --> 103 if contains_nan and nan_policy == 'raise': 104 raise ValueError("The input contains nan values") 106 return contains_nan, nan_policy ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
該当のソースコード
python3
1import pandas as pd 2import matplotlib.pyplot as plt 3from scipy.stats import boxcox 4#購入金額についてboxcox変換し、pricesというデータフレームに登録 5prices = pd.DataFrame({'boxcox(price)':boxcox(df['購入金額(円)'])}) 6 7print(prices, '\n') 8#pricesの歪度を出力 9print('prices skew:', skew(prices)) 10# 変換後の購入金額をヒストグラムにする 11#プロット図のサイズを設定 12plt.rcParams['figure.figsize'] = (12.0, 6.0) 13prices.hist()
試したこと
下記のリンクを読み、確かに複数列でpricesを作成していることが原因なのはわかったのですが、flatten()で1次元配列に変換してもエラーは直りません
https://ja.stackoverflow.com/questions/52075/valueerror-the-truth-value-of-an-array-with-more-than-one-element-is-ambiguous
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/11/01 11:20
2022/11/01 13:44
2022/11/02 21:34