Как создать гистограмму в Python с помощью библиотеки Matplotlib?

Что такое гистограмма и для чего она используется?

Гистограмма – это графическое представление распределения числовых данных. Она разбивает данные на «корзины» (bins) и показывает, сколько значений попадает в каждую из них. Гистограммы используются для:

  • Визуализации формы распределения (нормальное, экспоненциальное, и т.д.)
  • Оценки центральной тенденции и разброса данных
  • Выявления аномалий и выбросов
  • Сравнения распределений различных наборов данных

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

Краткий обзор библиотеки Matplotlib

Matplotlib – это мощная и гибкая библиотека Python для создания статических, анимированных и интерактивных визуализаций. Она предоставляет широкий набор инструментов для построения различных типов графиков, включая гистограммы.

Установка Matplotlib (если необходимо)

Если у вас еще не установлена Matplotlib, вы можете установить ее с помощью pip:

pip install matplotlib

Создание простой гистограммы с использованием Matplotlib

Импорт библиотеки Matplotlib

Для начала работы необходимо импортировать библиотеку matplotlib.pyplot:

import matplotlib.pyplot as plt

Подготовка данных для гистограммы

Для примера создадим простой список случайных чисел:

import numpy as np
import matplotlib.pyplot as plt
from typing import List

# Generate 100 random numbers from a normal distribution
data: List[float] = np.random.randn(100)

В контексте анализа данных, это могут быть, например, данные о количестве показов рекламного объявления за день.

Функция hist(): основные параметры и использование

Основная функция для создания гистограммы – plt.hist(). Она принимает данные в качестве аргумента и создает гистограмму по умолчанию.

import numpy as np
import matplotlib.pyplot as plt
from typing import List

# Generate 100 random numbers from a normal distribution
data: List[float] = np.random.randn(100)

# Create a histogram
plt.hist(data)

Отображение гистограммы с помощью plt.show()

Чтобы отобразить гистограмму, используйте функцию plt.show():

import numpy as np
import matplotlib.pyplot as plt
from typing import List

# Generate 100 random numbers from a normal distribution
data: List[float] = np.random.randn(100)

# Create a histogram
plt.hist(data)

# Show the histogram
plt.show()

Настройка внешнего вида гистограммы

Изменение количества столбцов (параметр bins)

Параметр bins определяет количество столбцов (корзин) в гистограмме. Чем больше bins, тем детальнее будет отображено распределение.

import numpy as np
import matplotlib.pyplot as plt
from typing import List

# Generate 100 random numbers from a normal distribution
data: List[float] = np.random.randn(100)

# Create a histogram with 30 bins
plt.hist(data, bins=30)

# Show the histogram
plt.show()

Настройка цвета столбцов (параметры color, edgecolor)

Параметр color определяет цвет столбцов, а edgecolor – цвет границ столбцов.

import numpy as np
import matplotlib.pyplot as plt
from typing import List

# Generate 100 random numbers from a normal distribution
data: List[float] = np.random.randn(100)

# Create a histogram with color and edgecolor
plt.hist(data, bins=30, color='skyblue', edgecolor='black')

# Show the histogram
plt.show()

Добавление заголовка и подписей к осям (title, xlabel, ylabel)

Для добавления заголовка и подписей к осям используйте функции plt.title(), plt.xlabel() и plt.ylabel().

import numpy as np
import matplotlib.pyplot as plt
from typing import List

# Generate 100 random numbers from a normal distribution
data: List[float] = np.random.randn(100)

# Create a histogram with title and labels
plt.hist(data, bins=30, color='skyblue', edgecolor='black')
plt.title('Распределение случайных чисел')
plt.xlabel('Значение')
plt.ylabel('Частота')

# Show the histogram
plt.show()

Изменение прозрачности столбцов (параметр alpha)

Параметр alpha определяет прозрачность столбцов (от 0 до 1). Это полезно при отображении нескольких гистограмм на одном графике.

import numpy as np
import matplotlib.pyplot as plt
from typing import List

# Generate 100 random numbers from a normal distribution
data: List[float] = np.random.randn(100)

# Create a histogram with alpha
plt.hist(data, bins=30, color='skyblue', edgecolor='black', alpha=0.7)
plt.title('Распределение случайных чисел')
plt.xlabel('Значение')
plt.ylabel('Частота')

# Show the histogram
plt.show()

Продвинутые возможности гистограмм в Matplotlib

Создание нескольких гистограмм на одном графике

Можно отобразить несколько гистограмм на одном графике, чтобы сравнить распределения.

import numpy as np
import matplotlib.pyplot as plt
from typing import List

# Generate two sets of random numbers
data1: List[float] = np.random.randn(1000)
data2: List[float] = np.random.normal(loc=2.0, scale=1.5, size=1000)

# Create two histograms on the same plot
plt.hist(data1, bins=30, color='skyblue', alpha=0.5, label='Группа 1')
plt.hist(data2, bins=30, color='orange', alpha=0.5, label='Группа 2')
plt.legend(loc='upper right')
plt.title('Сравнение распределений')
plt.xlabel('Значение')
plt.ylabel('Частота')

# Show the histogram
plt.show()

Использование различных типов гистограмм (например, ступенчатые)

Параметр histtype позволяет выбрать тип гистограммы, например, 'step' для ступенчатой гистограммы.

import numpy as np
import matplotlib.pyplot as plt
from typing import List

# Generate 100 random numbers from a normal distribution
data: List[float] = np.random.randn(100)

# Create a step histogram
plt.hist(data, bins=30, histtype='step', color='blue', linewidth=2)

# Show the histogram
plt.show()

Нормировка гистограммы (параметр density=True)

Параметр density=True нормализует гистограмму, так что площадь под гистограммой равна 1. Это позволяет сравнивать распределения с разным количеством данных.

import numpy as np
import matplotlib.pyplot as plt
from typing import List

# Generate 100 random numbers from a normal distribution
data: List[float] = np.random.randn(100)

# Create a normalized histogram
plt.hist(data, bins=30, density=True, color='green', alpha=0.7)

# Show the histogram
plt.show()

Работа с накопленными гистограммами (cumulative=True)

Параметр cumulative=True создает накопленную гистограмму, которая показывает, сколько значений меньше или равно данному значению.

import numpy as np
import matplotlib.pyplot as plt
from typing import List

# Generate 100 random numbers from a normal distribution
data: List[float] = np.random.randn(100)

# Create a cumulative histogram
plt.hist(data, bins=30, cumulative=True, color='purple', alpha=0.7)

# Show the histogram
plt.show()

Примеры использования гистограмм в анализе данных

Визуализация распределения данных (например, возраста, доходов)

Гистограммы идеально подходят для визуализации распределения числовых данных, таких как возраст пользователей веб-сайта или доходы клиентов. В контексте интернет-маркетинга, можно построить гистограмму распределения времени, которое пользователи проводят на определенной странице сайта, чтобы понять, насколько контент релевантен.

Сравнение распределений различных групп данных

С помощью гистограмм можно сравнивать распределения различных групп данных, например, эффективности различных рекламных кампаний. Можно визуализировать CTR (click-through rate) для разных объявлений и сравнить их распределения.

Обнаружение аномалий и выбросов

Гистограммы помогают выявлять аномалии и выбросы в данных. Например, если в данных о количестве кликов по рекламному объявлению есть значения, которые значительно отличаются от остальных, они будут видны на гистограмме как отдельные столбцы вдали от основного распределения.


Добавить комментарий