Как построить матрицу распределений Seaborn для всех столбцов в кадре данных - PullRequest
0 голосов
/ 28 марта 2019

Представьте, что у меня есть датафрейм с 9 столбцами.Я хочу иметь возможность добиться того же эффекта, что и df.hist (), но с помощью sns.distplot ().

Другими словами, я хочу иметь возможность отображать sns.distplot () для каждого столбца в кадре данных в визуализации из 3 строк и 3 столбцов, где каждый вспомогательный рисунок представляет уникальный sns.distplot ()каждого столбца для общего количества столбцов в кадре данных.

Я немного поэкспериментировал с использованием цикла for для осей и столбцов для фрейма данных, но я могу добиться только результатов для указания столбцов.Я не уверен, как представить код для работы со строками и столбцами.

Я также изучил sns.FacetGrid, но я не уверен, как решить эту проблему с помощью FacetGrid.

Я нахожу функцию df.hist () именно тем, что мне нужно, но я хочу иметь возможность сделать это с sns.distplot для всех столбцов в том же представлении, что и выходные данные df.hist().

Если это поможет определить контекст фрейма данных, я в основном читаю учебные и тестовые наборы Google Colab для набора данных California Housing, который содержит все столбцы, кроме ocean_proximity.Если вы хотите помочь мне разобраться в этой проблеме с помощью этого набора данных, пожалуйста, получите его от Kaggle и опустите столбец ocean_proximity.

Мой подход к 9 столбцам:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

df = pd.read_csv('housing.csv')
df.drop('ocean_proximity', axis=1, inplace=True)
fig, axes = plt.subplots(ncols=len(df.columns), figsize=(30,15))
for ax, col in zip(axes, df.columns):
  sns.distplot(df[col], ax=ax)
  plt.tight_layout() 
plt.show()

1 Ответ

1 голос
/ 28 марта 2019

Вы можете создать несколько фигурок с помощью matplotlib, используя такие сюжеты, как этот

import matplotlib.pyplot as plt
fig, axes = plt.subplots(nrows=3, ncols=3)

Затем вы можете построить каждый столбец на отдельном участке с аргументом ax, используя ax = axes [nrow, ncol], чтобы указать участок, на котором вы хотите напечатать:

for i, column in enumerate(df.columns):
    sns.distplot(df[column],ax=axes[i//3,i%3])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...