April 16, 2022

Визуализация без наложений

Рассмотрим простой способ визуализации зависимости двух переменных, когда точек на графике слишком много и они накладываются друг на друга, что значительно осложняет интерпретацию результатов. Для демонстрации используем набор данных о стоимости калифорнийской недвижимости:

from sklearn.datasets import fetch_california_housing

df, y = fetch_california_housing(return_X_y=True, as_frame=True)
df['price'] = y
df.head()

Отобразим связь между медианным доходом и ценой:

df.plot(kind='scatter', x = 'MedInc', y='price', figsize=(20,7))

В целом тенденция прослеживается, однако график "перенасыщенный". Самое простое - разбить одну из величин на группы и смотреть среднее/медианное значение другой для каждой группы:

df['MedInc_gr'] =  (df['MedInc']/1).round()
df.groupby('MedInc_gr')['price'].median().plot(figsize=(20,7))

Кроме округления для разбиения можно использовать функции qcut, cut библиотеки Pandas:

import pandas as pd
df['MedInc_gr'] =  pd.cut(df['MedInc'],10)
df.groupby('MedInc_gr')['price'].median().plot(figsize=(20,7))