Вы прочитали 3 из 3 бесплатных методичек сегодня
Безлимит →
Экстракт 11 июня 2019

Мастерство визуализации данных: создавайте профессиональные гистограммы и анализируйте CSV в Matplotlib

Corey Schafer · Corey Schafer Верифицирован 34:25

Практическое руководство по созданию вертикальных и горизонтальных столбчатых диаграмм с использованием данных из CSV-файлов для анализа статистики. Идеально для дата-аналитиков и начинающих Python-разработчиков (35 минут).

⚡ Зачем читать

  • Превращайте хаос в инсайты: Научитесь преобразовывать «сырые» файлы CSV в наглядные графики, которые понятны бизнесу и коллегам.
  • Освойте профессиональные техники: Узнайте, как с помощью NumPy и Matplotlib создавать многоуровневые диаграммы, избегая наложения данных.
  • Автоматизируйте рутину: Поймите, как использовать инструменты Python (например, `Counter`) для быстрой агрегации сложных текстовых данных из опросов и логов.
8 тезисов 3 задания 2 цитаты ⏱ 17 мин чтения 🎯 8 тезисов
YouTube Транскрипт Сохранить
Поделиться: TG WA VK X

Для AI-агентов и LLM

Экстракт доступен в структурированном Markdown. Скачать .md · JSON API · Site index

💡 Ключевые тезисы (8)

1 Преобразуйте линейные графики в столбчатые #
Замените метод plt.plot() на plt.bar() для отображения категориальных данных. Это позволяет четче визуализировать сравнение величин между группами.
2 Синхронизируйте несколько наборов данных #
Используйте индексы NumPy для размещения нескольких групп столбцов рядом. Это решает проблему наложения данных друг на друга в одной координатной плоскости.
3 Настройте ширину и смещение столбцов #
Рассчитайте смещение для каждого набора данных относительно ширины столбца. Такой подход гарантирует, что визуализация будет аккуратной и читаемой при наличии множества категорий.
4 Нормализуйте подписи осей #
Примените plt.xticks() для замены числовых индексов на соответствующие текстовые метки (например, возрастные диапазоны). Это делает график понятным для конечного пользователя.
5 Импортируйте и очищайте внешние CSV-данные #
Используйте модуль CSV или библиотеку Pandas для загрузки внешних массивов. Очищайте данные (например, разделяя строки по разделителю), прежде чем передавать их в визуализатор.
6 Подсчитывайте частоту категорий через Counter #
Применяйте класс Counter из модуля collections для автоматизации подсчета популярных значений (например, языков программирования). Это самый быстрый способ агрегации данных перед отрисовкой.
7 Визуализируйте большие объемы категорий горизонтально #
Переключитесь на метод barh() для отображения длинных списков категорий. Горизонтальные гистограммы значительно эффективнее при отображении 10+ пунктов, исключая наложение текста.
8 Отсортируйте данные для наглядности #
Используйте методы reverse(), чтобы расположить наиболее популярные категории в верхней части графика. Это облегчает считывание информации по принципу «от большего к меньшему».

Мастерство визуализации данных: гистограммы и анализ CSV

🗺 Карта навыков

Уровень Задача Инструмент
Базовый Переход от линейных графиков к столбчатым plt.bar()
Средний Работа с несколькими группами данных numpy.arange()
Средний Чтение и предобработка внешних CSV csv.DictReader / pandas
Продвинутый Очистка и агрегация текстовых категорий collections.Counter
Продвинутый Оптимизация читаемости больших выборок plt.barh()

1. От линий к столбцам: основы эффективного сравнения

Когда мы говорим о визуализации данных, выбор типа графика определяет, как быстро зритель поймет суть вашего исследования. Линейные графики (plt.plot()) идеальны для демонстрации трендов во времени, но для сравнения дискретных категорий — например, медианной зарплаты разработчиков в зависимости от возраста — они могут быть обманчивы. В этом разделе мы разберем, как метод plt.bar() кардинально меняет восприятие информации, делая акцент на конкретных значениях для каждой возрастной группы.

В видео Кори Шефер демонстрирует, что переход от стандартного линейного отображения к столбчатому требует минимальных правок в коде, но дает колоссальный прирост в наглядности. Допустим, у нас есть данные: возрастные категории (например, 25, 30, 35 лет) и соответствующие им медианные доходы (скажем, 45000, 55000, 65000 долларов). При использовании plt.plot() мы видим линию, которая лишь показывает «наклон» роста зарплаты. Однако, применив plt.bar(ages_x, dev_y), мы получаем четкие вертикальные столбики. Каждый столбец — это самостоятельный контейнер данных, который позволяет глазу легко зафиксировать разницу между 25-летними и 35-летними разработчиками.

Проблема возникает, когда данных становится много. Если мы просто вызовем plt.bar() для трех разных наборов данных (общие разработчики, Python-разработчики, JS-разработчики), графики наложатся друг на друга, превратившись в нечитаемую «кашу». Кори подчеркивает: «Когда вы plotted данные для всех разработчиков, это было хорошо, но если вы хотите включить Python и JavaScript, они просто накладываются друг на друга, и это не выглядит правильно». Чтобы этого избежать, нам нужно смещать каждый набор данных по горизонтали относительно оси X. Это достигается путем использования индексации numpy.arange(), которая позволяет нам «сдвигать» каждый столбец на фиксированную ширину (например, 0.25). В результате мы получаем эстетичную и профессиональную группировку, где каждая категория представлена отдельным цветом и своей позицией на шкале.

«Если вы хотите включить эти данные в ваш график, вам нужно сместить значения по оси X каждый раз, когда вы рисуете новый набор. Это кажется немного сложным, но это единственный способ расположить их бок о бок, а не один поверх другого».

✅ Сделайте сейчас: Откройте свой Jupyter Notebook или IDE. Создайте два списка с данными о продажах за три месяца для двух разных товаров. Попробуйте вывести их на экран с помощью plt.bar() сначала без смещения (убедитесь, что они наложились), а затем примените смещение, используя numpy.arange() и переменную width, чтобы они встали рядом. Обязательно добавьте легенду plt.legend(), чтобы различать товары.

2. Обработка внешних данных: от CSV-файлов к инсайтам

В реальной работе данные редко лежат внутри Python-скрипта. Чаще всего аналитик сталкивается с CSV-файлами, содержащими десятки тысяч строк. В этом блоке мы разберем, как правильно импортировать данные и готовить их к визуализации. Кори Шефер показывает, что для анализа популярных языков программирования из опроса Stack Overflow нам нужно не просто считать файл, а эффективно агрегировать значения. Если в одной строке CSV через точку с запятой перечислено пять языков (например, «Python;Java;JavaScript»), стандартные методы чтения могут не справиться без дополнительной обработки.

Здесь на помощь приходит класс Counter из модуля collections. Это инструмент-откровение для новичка: он автоматически подсчитывает частоту вхождения элементов в список. Если у нас есть список языков из одной анкеты, мы можем «обновить» наш глобальный счетчик language_counter с помощью метода .update(). Этот процесс превращает хаотичный текстовый массив в упорядоченную структуру данных, где мы четко видим, что Python встречается 36 000 раз, а JavaScript — 59 000. Важно помнить, что при визуализации категорий, количество которых превышает 10-15, вертикальные гистограммы становятся неудобными: названия языков на оси X начинают налезать друг на друга, делая график нечитаемым.

Решение — метод plt.barh() (horizontal bar chart). Переход к горизонтальному отображению делает чтение меток оси Y естественным (сверху вниз), а сам график приобретает элегантный вид «рейтинга». Кори также советует использовать .reverse(), чтобы самые популярные категории оказались вверху. «Когда вы имеете дело с большим количеством данных, вертикальная гистограмма становится загроможденной. Горизонтальная диаграмма — гораздо лучшее решение, так как она позволяет легко прочитать все категории без наложения текста», — отмечает автор.

Работа с Pandas — это финальный этап «взросления» аналитика. Вместо того чтобы вручную открывать файл и итерироваться по строкам, библиотека pandas позволяет одной командой pd.read_csv() загрузить весь датасет в DataFrame. Это экономит время и исключает ошибки ручного парсинга. Например, получив доступ к колонке languages_worked_with, вы можете мгновенно применить метод .split(';') к каждой записи, собрав все данные в единый список для подачи в Counter. Это путь от простого кодера к специалисту по данным.

«Использование горизонтальных диаграмм значительно эффективнее при отображении большого количества категорий, так как это полностью исключает проблему наложения текста и делает ваш график профессионально читаемым для любого пользователя».

✅ Сделайте сейчас: Скачайте любой CSV-файл с данными (можно найти на Kaggle или создать вручную). Используйте pandas, чтобы считать его. Выберите колонку с текстовыми категориями, примените метод .str.split() для разделения данных, если они записаны через разделитель. С помощью collections.Counter подсчитайте топ-10 самых частых значений и постройте горизонтальную гистограмму plt.barh(), отсортировав их по убыванию.


3. Искусство визуализации долей: основы круговых диаграмм (Pie Charts)

После того как мы освоили столбчатые диаграммы для сравнения абсолютных величин, пришло время разобраться с тем, как показывать «кусочки пирога» — пропорциональное распределение данных. Круговые диаграммы (pie charts) являются классическим инструментом для демонстрации того, какую долю от общего целого занимает каждая категория. Кори Шефер в своем цикле подчеркивает, что выбор между столбчатой и круговой диаграммой зависит от вашей задачи: если вам нужно показать динамику или сравнить точные значения, используйте столбцы; если нужно показать состав целого (например, распределение голосов или долю рынка), нет ничего лучше plt.pie().

В видео наглядно показано, что для создания круговой диаграммы достаточно передать список значений в функцию plt.pie(). Если у вас есть список slices = [60, 40] и соответствующие им метки labels = ['Группа А', 'Группа Б'], библиотека Matplotlib автоматически вычислит углы секторов. Однако «сырой» график выглядит скучно. Профессиональный подход требует добавления «перчинки»: параметров wedgeprops для создания четких границ между долями и autopct для автоматического вывода процентного соотношения прямо внутри секторов. Например, указание autopct='%1.1f%%' позволяет зрителю мгновенно считать долю, не обращаясь к легенде.

Особое внимание стоит уделить эстетике и акцентам. Часто аналитику важно выделить один конкретный сегмент. Для этого используется параметр explode. Если вы хотите, чтобы первый кусок «отделился» от общего пирога (эффект «выпавшего кусочка»), создайте список explode = [0.1, 0, 0], где 0.1 — это величина смещения сегмента от центра. Это создает визуальный фокус, который направляет внимание аудитории на ключевой показатель. Кори также напоминает, что при использовании plt.pie() важно соблюдать баланс: если секторов становится слишком много (например, более 5-6), диаграмма теряет читаемость. В таких случаях лучше объединить мелкие категории в группу «Прочее» или вернуться к горизонтальной гистограмме barh(), которую мы изучили ранее.

Цветовая палитра — еще один важный рычаг управления вниманием. Стандартные цвета Matplotlib могут выглядеть «по-ученически». Используя список colors = ['#ff9999', '#66b3ff', '#99ff99'], вы можете привести график к корпоративному стандарту или выделить важные данные контрастными цветами. Использование стилей, таких как plt.style.use('fivethirtyeight'), как это делает Кори, позволяет автоматизировать настройку шрифтов и фоновых цветов, избавляя вас от ручной подгонки каждого элемента.

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

✅ Сделайте сейчас: Создайте список с долями вашего времени в течение дня (работа, сон, отдых, еда). Используйте plt.pie(), чтобы отобразить это распределение. Добавьте параметр explode, чтобы «выдвинуть» сектор с самой большой долей, и примените autopct для отображения процентов. Попробуйте изменить стиль графика на ggplot или fivethirtyeight и посмотрите, как изменится восприятие вашей визуализации.

4. Глубокое погружение в визуализацию: когда и что выбирать

На протяжении всего курса мы работали с данными, но настоящий аналитик отличается от простого пользователя тем, что он задает вопрос «почему?». Почему мы выбрали barh() вместо bar()? Почему круговая диаграмма в какой-то момент становится «шумом»? В этом заключительном блоке мы систематизируем выбор инструментов визуализации. Как показывает Кори Шефер, каждое решение должно быть продиктовано природой ваших данных. Если вы сравниваете количество языков программирования, где разрыв между лидером и аутсайдером огромен, вам критически важно отсортировать данные. Вспомните, как мы использовали languages.reverse() и popularity.reverse() — этот простой шаг превращает неорганизованный список в упорядоченную «лестницу», по которой взгляд пользователя движется сверху вниз, усваивая информацию без лишних усилий.

Частой ошибкой новичка является попытка запихнуть «невпихуемое». Визуализация — это искусство удаления лишнего. В видео мы видели, как данные из CSV-файла Stack Overflow были преобразованы из «грязных» строк в чистые списки. Этот этап очистки данных — 80% успеха. Если вы пытаетесь построить график, не обработав данные через Counter или pandas, вы получите визуальный хаос. Использование объектов Counter для агрегации частот — это стандарт индустрии для задач NLP и анализа опросов. Это позволяет превратить тысячи разрозненных ответов в четкий набор из топ-10 категорий, которые и будут «звездами» вашего графика.

Кроме того, не стоит забывать про контекст. Когда мы строим график, мы выступаем в роли рассказчика. Подписи осей (xlabel, ylabel), заголовки (title) и легенды (legend) — это не просто формальность, это навигаторы для вашей аудитории. Без них данные превращаются в абстрактные геометрические фигуры. Кори акцентирует внимание на том, что «tight_layout()` является обязательной командой, которая предотвращает обрезание меток и делает внешний вид графиков профессиональным. Это мелочь, которая отличает работу любителя от работы эксперта. Аналитик должен стремиться к тому, чтобы любой человек, взглянув на график, понял суть за 5 секунд, не переспрашивая, что означают оси.

В завершение, важно помнить о масштабируемости решений. Код, который мы написали сегодня для 15 языков программирования, будет работать и для 1500, если мы правильно настроим фильтрацию через most_common(). Это означает, что вы создаете не просто «картинку», а надежный конвейер обработки данных (pipeline). В реальной бизнес-среде данные постоянно обновляются, поэтому умение написать гибкий скрипт, который переваривает CSV, строит гистограмму и сохраняет её в файл — это навык, который напрямую конвертируется в вашу профессиональную ценность. Анализируйте, визуализируйте и всегда оставляйте место для интерпретации.


5. Искусство работы с временными рядами: графики с заполнением (Fill_between)

После того как мы научились работать с дискретными категориями и столбчатыми диаграммами, пришло время освоить один из самых мощных инструментов для визуализации динамики — fill_between. Этот метод позволяет не просто показать линию тренда, но и подчеркнуть область «между» показателями. В контексте работы с данными о зарплатах разработчиков, который разбирает Кори Шефер, fill_between становится незаменимым, если мы хотим наглядно продемонстрировать разрыв между медианной зарплатой и средним показателем или сравнить две группы, выделив цветом область их различий.

Суть метода заключается в заполнении пространства между двумя кривыми. Кори демонстрирует это на примере сравнения общей зарплаты разработчиков и зарплаты Python-разработчиков. Когда мы используем plt.fill_between(ages, py_salaries, overall_median, alpha=0.25), Matplotlib автоматически закрашивает область между двумя массивами данных. Параметр alpha здесь играет ключевую роль: он делает заливку полупрозрачной, что позволяет видеть сетку графика и пересечения линий, не перегружая визуальное восприятие. Это важно для сохранения профессионального вида графика.

Более того, fill_between обладает встроенной логикой условий. Вы можете использовать параметр where для того, чтобы закрашивать область только тогда, когда значения одной группы выше другой. Например, where=(py_salaries > overall_median) позволяет визуально выделить «зону роста», где конкретная категория обгоняет общий показатель. Это превращает обычный график в инструмент анализа, который сразу дает ответы на вопросы: «В каком возрасте Python-разработчики начинают зарабатывать больше среднего?» или «Где именно находится критический разрыв в доходах?».

Кори Шефер также акцентирует внимание на том, что выбор цветов должен быть осмысленным. Использование красного цвета для зон, где показатели падают ниже нормы, и зеленого или синего для зон роста — это стандарт языка визуализации, который считывается интуитивно. «Когда вы визуализируете временные ряды, важно дать зрителю контекст. Обычная линия показывает направление, но область между линиями показывает масштаб этого отклонения, что часто является более важным бизнес-показателем», — отмечает спикер. Это переводит работу аналитика из плоскости «показать цифры» в плоскость «объяснить влияние».

«Метод fill_between преобразует простые линейные графики в полноценные информационные панели. Он не просто рисует кривые, он подчеркивает контраст между наборами данных, позволяя зрителю мгновенно уловить ключевые моменты расхождения или сближения показателей, что критически важно для принятия решений на основе данных».

✅ Сделайте сейчас: Возьмите данные о динамике акций или погоде за неделю. Постройте линейный график с двумя линиями (например, максимум и минимум). Используйте plt.fill_between для закрашивания области между ними. Добавьте логическое условие where, чтобы область закрашивалась другим цветом, когда значения выше определенного порога. Поэкспериментируйте с alpha (от 0.1 до 0.5), чтобы найти наиболее эстетичное сочетание цветов, которое не мешает чтению осей.

6. Гистограммы: распределение данных и понимание плотности

Часто аналитику приходится отвечать не на вопрос «какова средняя зарплата?», а на вопрос «как распределяются зарплаты в популяции?». Здесь на сцену выходят гистограммы (plt.hist()). В отличие от столбчатых диаграмм, которые сравнивают категории, гистограммы показывают частотное распределение одной переменной. Кори Шефер показывает, что для понимания распределения важно правильно выбрать количество «корзин» (bins). Если корзин слишком мало, вы увидите только «общий холм», если слишком много — график превратится в хаотичный набор одиночных столбцов.

В видео наглядно показано, что для создания гистограммы достаточно одного массива данных. Matplotlib сам разобьет диапазон значений на интервалы. Однако профессионализм заключается в тонкой настройке bins. Если у вас есть данные по 1000 респондентам, использование bins=20 обычно дает достаточное разрешение для того, чтобы увидеть форму распределения (нормальное, скошенное или бимодальное). Кори также советует добавлять параметр edgecolor='black', чтобы каждый столбец гистограммы был четко очерчен. Без этого параметра столбцы сливаются в единое цветовое пятно, что сильно затрудняет визуальный анализ границ каждого интервала.

Еще один мощный прием — использование логарифмической шкалы (log=True) при работе с данными, где есть резкие выбросы. Если 90% данных лежат в диапазоне 0-100, а остальные 10% распределены до 10 000, обычная гистограмма сделает основную часть графика нечитаемой. Логарифмическая шкала «сжимает» хвосты распределения, позволяя увидеть структуру внутри основной массы данных. Это базовый навык для любого специалиста, работающего с данными реального мира, которые почти никогда не бывают идеально «нормальными».

Важным элементом является также отображение медианы или среднего на гистограмме. Кори рекомендует рисовать вертикальную линию plt.axvline() поверх гистограммы, чтобы сразу показать, где находится центр распределения. Это позволяет зрителю моментально понять, насколько данные смещены относительно среднего значения. «Гистограмма — это снимок реальности. Она показывает вам не среднее число, а характер поведения всей группы. Именно здесь часто обнаруживаются аномалии, которые невозможно заметить при использовании простых агрегатов типа mean или median», — заключает Кори.

«Гистограммы являются незаменимым инструментом для выявления паттернов распределения данных. Правильный подбор количества корзин и использование вертикальных линий для отметки медианы превращают график из простого набора столбиков в глубокий аналитический инструмент, который открывает скрытые закономерности в ваших данных».

✅ Сделайте сейчас: Сгенерируйте массив случайных чисел (например, 500 значений) с помощью numpy.random.randn(). Постройте гистограмму, используя 30 корзин. Наложите на нее красную вертикальную линию, показывающую среднее значение всей выборки (axvline). Затем попробуйте изменить количество корзин на 5 и на 100, чтобы увидеть, как меняется визуальная интерпретация данных. Попробуйте применить стиль seaborn-deep для улучшения визуального оформления.


7. Работа с внешними данными: мощь Pandas и CSV

В реальных проектах данные редко лежат в списках Python. Чаще всего они приходят в виде громоздких CSV-файлов, где строки содержат не просто числа, а сложные комбинации данных. Как показал Кори Шефер, переход от ручного парсинга (модуль csv) к библиотеке pandas — это точка невозврата для любого аналитика. Pandas позволяет загрузить файл pd.read_csv('data.csv') и мгновенно получить доступ к столбцам как к именованным сериям данных. Вместо того чтобы вручную перебирать 90 000 строк в цикле, вы работаете с высокоуровневыми структурами DataFrame, что делает код лаконичным, быстрым и защищенным от ошибок индексации.

Ключевой момент работы с CSV — это предобработка. В примере с языками программирования данные были «грязными»: значения разделены точкой с запятой. Кори демонстрирует, как с помощью метода .split(';') превратить одну строку с данными в очищенный список. Профессиональный подход заключается в том, чтобы не просто загрузить данные, а превратить их в структурированный поток для последующего анализа. Используя language_counter = Counter(), мы превращаем сотни тысяч упоминаний в отсортированный словарь частот. Это избавляет от необходимости писать сложную логику подсчета, делегируя её высокопроизводительному инструменту. Знание таких инструментов, как Counter из модуля collections, экономит часы разработки и делает код читаемым для коллег.

Более того, визуализация данных из CSV требует умения отсекать лишнее. Метод .most_common(15) — это стандарт индустрии для создания «фокусных» графиков. Пытаться отобразить 100 категорий на одном графике — ошибка новичка, ведущая к визуальному шуму. Аналитик обязан выбрать топ-15 или топ-20, чтобы донести ключевой инсайт до аудитории. Кори акцентирует внимание на том, что визуализация — это прежде всего коммуникация. Если график перегружен, он не работает. Фильтрация данных на этапе подготовки (до вызова plt.bar) — критический навык, который отделяет аналитика, понимающего бизнес-задачи, от того, кто просто строит графики ради графиков.

«Работа с внешними источниками данных требует дисциплины: вы не можете визуализировать хаос. Превращение сырых CSV-данных в осмысленные категории с помощью таких инструментов, как Counter и pandas, превращает вашу работу из простого написания кода в процесс извлечения ценных инсайтов, понятных любому стейкхолдеру бизнеса».

✅ Сделайте сейчас: Скачайте любой открытый CSV-файл (например, с Kaggle или сайтов статистики). Загрузите его через pd.read_csv(). Выберите один текстовый столбец, очистите данные (удалите пустые значения, приведите к нижнему регистру) и используйте Counter для подсчета 10 самых частых слов или категорий. Постройте горизонтальную гистограмму, чтобы визуализировать этот топ.

8. Искусство визуальной презентации: горизонтальные гистограммы и порядок данных

Почему горизонтальные гистограммы (barh) часто предпочтительнее вертикальных? Ответ кроется в человеческой физиологии восприятия текста. Когда названий категорий много (например, названия языков программирования или стран), вертикальные подписи осей X на обычном графике bar начинают накладываться друг на друга, превращаясь в нечитаемую «кашу». Кори Шефер показывает, что plt.barh() радикально меняет ситуацию: названия располагаются вдоль оси Y, что позволяет использовать длинные строки без риска потери информации. Это единственный профессиональный стандарт для отображения категорий с длинными именами.

Важнейший нюанс, который часто упускают новички — это сортировка данных. Если вы построите гистограмму с «сырым» порядком категорий (как они шли в файле), график будет выглядеть случайно. Кори подчеркивает: если вы используете barh, всегда применяйте .reverse(), чтобы самые популярные позиции (максимальные значения) оказались вверху графика. В нашей культуре чтения «сверху вниз» это позволяет зрителю моментально выделить «лидеров». Без этого приема график теряет свою «повествовательную» силу. Аналитик должен управлять вниманием зрителя, и правильная сортировка — инструмент номер один для этого.

Также стоит помнить о лаконичности подписей. Если названия языков программирования сами по себе очевидны, не стоит перегружать график лишними заголовками осей (ylabel). Кори советует задаваться вопросом: «Нужна ли эта подпись, чтобы понять график?». Если ответ «нет», удаляйте ее. Чистый, лаконичный дизайн — признак высокого уровня мастерства. Ваша цель — сделать график, который «продает» инсайт за 3 секунды, а не заставляет зрителя изучать легенды и пояснения.

Наконец, использование plt.barh открывает пространство для гибкого дизайна. Вы можете менять цвета столбцов, добавлять сетку (plt.grid()) для удобства чтения значений и экспортировать график в высоком разрешении. Когда вы освоите управление порядком и ориентацией, вы начнете проектировать информационные панели, которые выглядят не как результат работы скрипта, а как профессиональный аналитический отчет, готовый к публикации.

«Горизонтальная гистограмма — это не просто альтернатива вертикальной, это инструмент для борьбы с визуальным переполнением. Упорядочивание данных по убыванию и правильное расположение меток позволяют превратить сложную статистику в элегантное и понятное визуальное повествование, доступное каждому».

✅ Сделайте сейчас: Возьмите данные по продажам или популярности товаров. Постройте горизонтальную гистограмму (barh). Отсортируйте данные так, чтобы самый продаваемый товар был в самом верху. Добавьте сетку для оси X (axis='x'), настройте цвета столбцов через параметр color и сохраните результат в файл с помощью plt.savefig('my_plot.png') с разрешением 300 DPI.

🏋️ Практикум

  1. Синхронизация столбцов: Создайте две группы данных по 5 значений и выведите их рядом на одном графике с помощью смещения индексов NumPy.
  2. Очистка данных: Напишите функцию, которая принимает список строк с разделителем, разбивает их и возвращает плоский список всех элементов.
  3. Агрегация: Используйте Counter для подсчета частоты встречаемости каждого элемента в списке из 1000 сгенерированных слов.
  4. Топ-лист: Выделите топ-5 элементов из Counter и постройте их в виде вертикальной гистограммы.
  5. Смена ориентации: Переделайте предыдущий график в горизонтальный (barh) и отсортируйте его по убыванию.
  6. Стилизация: Добавьте на график заголовок, подписи осей и используйте встроенный стиль fivethirtyeight.
  7. Экспорт: Сохраните полученный график в PDF-файл, используя метод plt.savefig().
🔒

Бесплатный лимит исчерпан

Вы прочитали 3 методичек сегодня. Завтра лимит обновится, или подпишитесь для неограниченного доступа.

🏋️ Практикум

0 / 3 выполнено

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

⏱ 20 мин 🎯 Цель: визуализировать три потока данных рядом. Шаги: 1. Создайте индексы через np.arange. 2. Рассчитайте смещения для трех наборов данных. 3. Настройте ширину столбцов. ✅ Результат: скрипт с корректно сгруппированными столбцами.

Анализ популярности через CSV

⏱ 30 мин 🎯 Цель: построить чарт на основе внешнего файла. Шаги: 1. Загрузите CSV через pandas. 2. Очистите данные (split по разделителю). 3. Подсчитайте частоту через Counter. 4. Выведите топ-15. ✅ Результат: готовый файл `data_analysis.py`.

Перевод в горизонтальный формат

⏱ 10 мин 🎯 Цель: адаптировать вертикальный график под длинные названия. Шаги: 1. Замените bar на barh. 2. Переназначьте оси X и Y. 3. Отсортируйте порядок вывода. ✅ Результат: легко читаемый horizontal bar chart.
🎉
Все задания выполнены!
Отлично — знания превращены в навыки

💬 Цитаты (2)

«Большинство данных при работе с графиками будет поступать из внешних источников, таких как файлы CSV. Умение работать с ними — критически важный навык для аналитика.» #

Обоснование перехода от хардкодинга данных к работе с внешними файлами.

«Использование горизонтальных гистограмм оправдано, когда у вас много категорий. В вертикальном представлении они выглядят перегруженными и трудночитаемыми.» #

Совет по выбору правильного типа диаграммы для больших наборов данных.

Читать далее

Мастерство управления Python-проектами: ускоряем рабочий процесс с помощью UV

Corey Schafer

Мастерство управления Python-проектами: ускоряем рабочий процесс с помощью UV

Corey Schafer

Понравился экстракт?
Подписывайтесь — лучшие материалы каждую неделю.
Telegram Дайджест →

Поделитесь с коллегами

Telegram ВКонтакте X / Twitter
Открыть в Telegram

Экстракт Знаний в Telegram

Экстракты и дистилляты из лучших YouTube-каналов — сразу после публикации.

Подписаться

Дайджест Экстрактов

Лучшие методички за неделю — каждый понедельник