Seaborn distplot возвращает только один столбец при попытке построить каждый столбец Pandas с помощью цикла для

#python #pandas #seaborn

#python #pandas #seaborn

Вопрос:

У меня возникает проблема при попытке отобразить столбцы Pandas, используя для каждого цикла, когда я использую displot вместо distplot этого, он работает хорошо, кроме того, он показывает распределение только по всему миру, а не на основе его группы. Допустим, у меня есть список имен вызываемых столбцов columns и фрейм данных Pandas n , который имеет имя столбца class . Цель состоит в том, чтобы показать график распределения на основе столбца для каждого класса:

 for w in columns:
    if w!=<discarded column> or w!=<discarded column>:
        sns.displot(n[w],kde=True
  

но когда я использую distplot, он возвращает только первый столбец:

 for w in columns:
    if w!=<discarded column> or w!=<discarded column>:
        sns.distplot(n[w],kde=True
  

Я все еще новичок в использовании Seaborn, поскольку я никогда не использую визуализацию и полагаюсь на численный анализ, такой как p-значение и корреляция. Любая помощь приветствуется.

Ответ №1:

Вероятно, вы получаете только цифру, соответствующую последнему циклу.
Поэтому вы должны явно запрашивать отображение изображения в каждом цикле.

 import matplotlib.pyplot as plt

for w in columns:
    if w not in discarded_columns:
        sns.distplot(n[w], kde=True)
        plt.show()
  

или вы можете сделать subplots :

 # Keep only target-columns
target_columns = list(filter(lambda x: x not in discarded_columns, columns))

# Plot with subplots
fig, axes = plt.subplots(len(target_columns)) # see the parameters, like: nrows, ncols ... figsize=(16,12)
for i,w in enumerate(target_columns):
    sns.distplot(n[w], kde=True, ax=axes[i])