Построение центральных тенденций (среднее, медиана, мода) в подграфики SeabornPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Построение центральных тенденций (среднее, медиана, мода) в подграфики Seaborn

Сообщение Anonymous »

При попытке запустить этот код возникает ошибка

Код: Выделить всё

import pandas as pd
import numpy as np
import seaborn as sns
%matplotlib inline
import matplotlib.pyplot as plt
from matplotlib.cm import ScalarMappable

import warnings
warnings.simplefilter(action='ignore', category=FutureWarning)
sns.set_theme()
sns.set_style('white')

df_train = pd.read_csv('https://github.com/lokalhangatt/stackoverlow/raw/refs/heads/main/train.csv')

df_train = df_train.dropna(axis=1)

null_info = df_train.isnull().sum().sort_values(ascending=False).reset_index().head(20)
null_info.columns = ["Variable", "NullValue"]

list_soal = ['SalePrice', 'GrLivArea', 'GarageArea']

# fig,ax = plt.subplots(1, 3, sharey=True, figsize=(14,4))
def function1(ax):
ax[1].set_title('Histogram for Non-Transfomed Data', fontsize=16)
for i in range(len(list_soal)):
sns.histplot(df_train[list_soal[i]], kde=False, stat='density', bins = 30, ax=ax[i])
sns.kdeplot(df_train[list_soal[i]], ax=ax[i])
for j in range (len(list_soal)):
line1 = plt.axvline(df_train[list_soal].mean(), color="k", linestyle="--", label = "mean")
line2 = plt.axvline(np.median(df_train[list_soal]), color="r", linestyle="--", label = "median")
first_legend = plt.legend(handles=[line1,line2], loc=1)

# fig,ax = plt.subplots(1, 3, sharey=True, figsize=(14,4))
def function2(ax):
ax[1].set_title('Histogram for Transfomed Data', fontsize=16)
for i in range(len(list_soal)):
sns.histplot(np.log10(df_train[list_soal[i]]), kde=False, stat='density', bins = 30, ax=ax[i])
sns.kdeplot(np.log10(df_train[list_soal[i]]), ax=ax[i])

fig,ax = plt.subplots(2, 3, figsize=(14,9), sharey='row')
fig.subplots_adjust(hspace=0.4)

function1(ax[0])
function2(ax[1])

plt.show()
Я хочу отобразить основные тенденции в каждом подсюжете, который я запускаю. Вот мои подсюжеты:
Изображение
Так и должно быть покажите центральную тенденцию каждого блока на подсюжетах. Но когда я пытаюсь запустить приведенный выше код, я получаю сообщение об ошибке:

Код: Выделить всё

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
~\AppData\Local\Temp\ipykernel_4812\2093474016.py in ?()
40 fig,ax = plt.subplots(2, 3, figsize=(14,9), sharey='row')
41 fig.subplots_adjust(hspace=0.4)
42
43
---> 44 function1(ax[0])
45 function2(ax[1])
46
47 plt.show()

~\AppData\Local\Temp\ipykernel_4812\2093474016.py in ?(ax)
25     for i in range(len(list_soal)):
26         sns.histplot(df_train[list_soal[i]], kde=False, stat='density', bins = 30, ax=ax[i])
27         sns.kdeplot(df_train[list_soal[i]], ax=ax[i])
28     for j in range (len(list_soal)):
---> 29         line1 = plt.axvline(df_train[list_soal].mean(), color="k", linestyle="--", label = "mean")
30         line2 = plt.axvline(np.median(df_train[list_soal]), color="r", linestyle="--", label = "median")
31         first_legend = plt.legend(handles=[line1,line2], loc=1)

c:\ProgramData\anaconda3\Lib\site-packages\matplotlib\pyplot.py in ?(x, ymin, ymax, **kwargs)
2423 @_copy_docstring_and_deprecators(Axes.axvline)
2424 def axvline(x=0, ymin=0, ymax=1, **kwargs):
-> 2425     return gca().axvline(x=x, ymin=ymin, ymax=ymax, **kwargs)

c:\ProgramData\anaconda3\Lib\site-packages\matplotlib\axes\_axes.py in ?(self, x, ymin, ymax, **kwargs)
833         xmin, xmax = self.get_xbound()
834
835         # Strip away the units for comparison with non-unitized bounds.
836         xx, = self._process_unit_info([("x", x)], kwargs)
--> 837         scalex = (xx < xmin) or (xx > xmax)
838
839         trans = self.get_xaxis_transform(which='grid')
840         l = mlines.Line2D([x, x], [ymin, ymax], transform=trans, **kwargs)

c:\ProgramData\anaconda3\Lib\site-packages\pandas\core\generic.py in ?(self)
1464     @final
1465     def __nonzero__(self) -> NoReturn:
-> 1466         raise ValueError(
1467             f"The truth value of a {type(self).__name__} is ambiguous.  "
1468             "Use a.empty, a.bool(), a.item(), a.any() or a.all()."
1469         )

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
Как я могу показать эти центральные тенденции на каждом подсюжете?

Подробнее здесь: https://stackoverflow.com/questions/790 ... n-subplots
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»