Руководство по эффективной визуализации данных: выбор правильного графика
Руководство по эффективной визуализации данных: выбор правильного графика
Когда я впервые начал работать с визуализацией данных, я обнаружил, что мне трудно выбрать правильный тип диаграммы для точного представления данных. Было неприятно тратить часы на создание визуализации только для того, чтобы понять, что она неэффективно передаёт задуманный смысл. Вскоре я понял, что был не одинок в своей проблеме. Многие новички сталкивались с подобным при работе с визуализацией данных, вот почему я пишу эту статью (чтобы сэкономить ваше время и лучше разобраться в графиках). Я также приведу вам примеры кода.
Прежде чем мы углубимся в различные типы диаграмм и графиков, важно понять, с какими типами статистических переменных мы можем столкнуться в данных. Статистические переменные можно разделить на две широкие категории: количественные и категориальные. Количественные переменные являются числовыми и могут быть дополнительно классифицированы как дискретные или непрерывные. Дискретные переменные – это отдельные значения, такие как целые числа, которые не могут быть дополнительно разделены. Непрерывные переменные – это значения, которые можно разделить на все более мелкие единицы, такие как десятичные дроби. Категориальные переменные, с другой стороны, не являются числовыми и могут быть дополнительно классифицированы как номинальные или порядковые. Номинальные переменные не имеют присущего им порядка, такого как пол или цвет волос, в то время как порядковые переменные имеют естественный порядок, такой как уровень образования (кандидат наук, выпускник, студент).
Когда дело доходит до визуализации категориальных данных, двумя наиболее часто используемыми типами диаграмм являются столбчатые и круговые. Столбчатые диаграммы идеально подходят для сравнения частот или пропорций различных категорий, поскольку они обеспечивают чёткое визуальное представление данных. Они особенно хорошо работают для номинальных переменных, где отсутствует присущий им порядок категорий. С другой стороны, круговые диаграммы полезны для отображения относительных пропорций различных категорий. Они лучше всего подходят для переменных, где категории представляют части целого, таких как доля рынка или бюджетные ассигнования. Однако важно иметь в виду, что круговые диаграммы могут быть трудны для точного чтения, особенно когда категорий много или различия между ними невелики. В целом, столбчатые и круговые диаграммы являются отличными вариантами визуализации категориальных данных, но выбор между ними в конечном счёте зависит от смысла, который вы хотите донести.
Столбчатая диаграмма
Столбчатая диаграмма – это тип графика, который представляет данные с использованием прямоугольных полос разной длины или высоты, причём длина или высота каждой полосы соответствует значению определённой категории или группы. Они используются для сравнения и отображения относительного размера или частоты различных категорий или групп в понятной форме.
import seaborn as sns
# Load the tips dataset
tips = sns.load_dataset("tips")
# Create a bar chart of the count of total bill by day of the week and sex
sns.catplot(x="day", y="total_bill", hue="sex", data=tips, kind="bar",
height=4,
aspect=1.5)
# Set the plot title and axes labels
plt.title("Total Bill by Day of Week and Sex")
plt.xlabel("Day of Week")
plt.ylabel("Total Bill")
# Show the plot
plt.show()
Ящик с усами
График, использующийся в описательной статистике, компактно изображающий одномерное распределение вероятностей. Ниже приведён код, работающий, если вы имеете дело с категориально-числовыми переменными:
import matplotlib.pyplot as plt
import seaborn as sns
# Load the tips dataset from Seaborn
tips = sns.load_dataset("tips")
# Create a box plot of total_bill for each sex category
sns.boxplot(x="sex", y="total_bill", data=tips)
# Set the title and axis labels
plt.title("Distribution of Total Bill by Gender")
plt.xlabel("Gender")
plt.ylabel("Total Bill ($)")
# Show the gridlines and labels for each box
plt.grid(axis="y")
plt.xticks([0, 1], ["Female", "Male"])
# Show the plot
plt.show()
Точечный график
Точечный график – это один из типов представления данных, где каждая точка является результатом пересечения линии от оси x и оси y. Есть два примера: один – простая точечная диаграмма, другой – точечная диаграмма с одной категориальной переменной.
import seaborn as sns
# Load the tips dataset
tips = sns.load_dataset("tips")
# Create a scatter plot of total bill vs. tip
sns.scatterplot(x="total_bill", y="tip", data=tips)
# Set the plot title and axes labels
plt.title("Total Bill vs. Tip")
plt.xlabel("Total Bill -------->")
plt.ylabel("Tip --------->")
# Show the plot
plt.show()
#######################################################################
import seaborn as sns
# Load the tips dataset
tips = sns.load_dataset("tips")
# Create a scatter plot of total bill vs. tip
sns.scatterplot(x="total_bill", y="tip",hue='sex', data=tips)
# Set the plot title and axes labels
plt.title("Total Bill vs. Tip")
plt.xlabel("Total Bill -------->")
plt.ylabel("Tip --------->")
# Show the plot
plt.show()
Линейный график
Линейный график, также известный как линейная диаграмма или линия построения графика, – это тип диаграммы, который отображает данные в виде ряда точек, соединённых линией. Линейные графики обычно используются для представления взаимосвязи между двумя числовыми переменными, причём одна переменная отображается по горизонтальной оси (x), а другая переменная – по вертикальной оси (y). Линия, соединяющая точки, обеспечивает визуальное представление тренда или паттерна в данных.
import seaborn as sns
# Load the tips dataset
tips = sns.load_dataset("tips")
# Create a line plot of total bill vs. tip
sns.lineplot(x="total_bill", y="tip", data=tips)
# Set the plot title and axes labels
plt.title("Total Bill vs. Tip")
plt.xlabel("Total Bill")
plt.ylabel("Tip")
# Show the plot
plt.show()
Столбчатая диаграмма
Также вы можете использовать столбчатую диаграмму для отображения категориальных данных и построения диаграммы, показывающей частоту.
import seaborn as sns
tips = sns.load_dataset("tips")
import matplotlib.pyplot as plt
import pandas as pd
# Calculate value counts
value_counts = tips['smoker'].value_counts()
#apply style for matplot lib other options are seabron,black_background
#plt.style.use("ggplot")
# Create a bar plot
plt.bar(value_counts.index, value_counts.values)
# Set axis labels and title
plt.xlabel('SMOKER ----------->')
plt.ylabel('Count ------------->')
plt.title('Value Counts')
# Show the plot
plt.show()
Результат приведённого выше кода, который показывает частоту курения и количество людей (курящих или не курящих).
Круговая диаграмма
Круговые диаграммы полезны для отображения пропорций или процентов категориальной переменной. Они особенно эффективны, когда существует всего несколько категорий и пропорции существенно отличаются друг от друга.
import seaborn as sns
tips = sns.load_dataset("tips")
import matplotlib.pyplot as plt
import pandas as pd
# explode is use to make style that seprate disk from other
explode=[0,0.06]
# labels yes and no shadow will make a grey background
plt.pie(
tips['smoker'].value_counts(),
labels=['No','Yes'],
shadow=True,
explode=explode,
autopct='%1.1f%%'
)
plt.title('smoke')
plt.show()
Мы создаём круговую диаграмму над функцией smoker
и представляем все оба значения с помощью круга, как показано ниже:
Ниже приведены таблицы для справки, которые могут быть полезны вам при составлении диаграмм.
Таблица № 1: (категориальный и числовой показатели)
Таблица № 2: (категориальный против категорического)
Таблица № 3: (Числовое значение против числового значения)
Визуализация данных является важным инструментом для эффективной передачи информации, и крайне важно выбрать правильный график, который соответствует вашим данным и смыслу, который вы хотите донести.
В заключение, я надеюсь, что это руководство дало вам лучшее представление о различных типах графиков и их использовании. Помните, что эффективная визуализация данных заключается не только в том, чтобы ваши графики выглядели визуально привлекательно, но и в том, чтобы данные были точно представлены и легко понятны аудитории.