如何获取箱线图中每个中位数的值?
How to get the values of each median in a boxplot?
数据集来自kaggle.
此代码
melbourne_file_path = './melb_data.csv'
melbourne_data = pd.read_csv(melbourne_file_path)
filtered_melbourne_data = melbourne_data.dropna(axis=0)
ax = filtered_melbourne_data.boxplot(column = 'Price', by = 'Regionname');
给出这个箱线图
箱线图已经有很多信息,比如中位数,有没有办法让它们对应于by
s?
我尝试了改编自此
的代码
ax, bp = filtered_melbourne_data.boxplot(column = 'Price', by = 'Regionname', return_type='both');
遇到这个错误
ValueError: not enough values to unpack (expected 2, got 1)
我也尝试了改编自 post 的代码。
ax = filtered_melbourne_data.boxplot(column = 'Price', by = 'Regionname', return_type='both');
print(ax.median)
得到了
<bound method Series.median of Price (AxesSubplot(0.1,0.15;0.8x0.75), {'whiskers': ...
dtype: object>
如何获取每个 Regionname
的中位数值?
这是可能的,但需要对 post 的解决方案进行一些更改:
首先添加 ['Price']
以从一个元素中获取值 Series
:
ax, bp = filtered_melbourne_data.boxplot(column = 'Price',
by = 'Regionname',
return_type='both')['Price']
然后通过索引获取数组的第一个值 - [0]
:
medians = [median.get_ydata()[0] for median in bp["medians"]]
print (medians)
[990000.0, 670000.0, 715000.0, 590000.0, 780000.0, 1230000.0, 700000.0, 400000.0]
数据集来自kaggle.
此代码
melbourne_file_path = './melb_data.csv'
melbourne_data = pd.read_csv(melbourne_file_path)
filtered_melbourne_data = melbourne_data.dropna(axis=0)
ax = filtered_melbourne_data.boxplot(column = 'Price', by = 'Regionname');
给出这个箱线图
箱线图已经有很多信息,比如中位数,有没有办法让它们对应于by
s?
我尝试了改编自此
ax, bp = filtered_melbourne_data.boxplot(column = 'Price', by = 'Regionname', return_type='both');
遇到这个错误
ValueError: not enough values to unpack (expected 2, got 1)
我也尝试了改编自 post 的代码。
ax = filtered_melbourne_data.boxplot(column = 'Price', by = 'Regionname', return_type='both');
print(ax.median)
得到了
<bound method Series.median of Price (AxesSubplot(0.1,0.15;0.8x0.75), {'whiskers': ...
dtype: object>
如何获取每个 Regionname
的中位数值?
这是可能的,但需要对 post 的解决方案进行一些更改:
首先添加 ['Price']
以从一个元素中获取值 Series
:
ax, bp = filtered_melbourne_data.boxplot(column = 'Price',
by = 'Regionname',
return_type='both')['Price']
然后通过索引获取数组的第一个值 - [0]
:
medians = [median.get_ydata()[0] for median in bp["medians"]]
print (medians)
[990000.0, 670000.0, 715000.0, 590000.0, 780000.0, 1230000.0, 700000.0, 400000.0]