PANDAS ДЛЯ ТАБЛИЦЬ
Курс: Python для аналітиків з нуля
1. ЩО НАВЧИМОСЯ РОБИТИ
Аналізувати журнал перехоплень: топ-10 частот, активність по годинах, відфільтрувати сильні сигнали.
Pandas — це Excel на стероїдах. Все що ти робив формулами, тут робиться кодом. Але швидше, масштабніше, воспроизводимо.
2. ТЕРМІНОЛОГІЯ
DataFrame
Таблиця даних. Рядки та колонки з індексами. Основний об'єкт pandas.
Series
Одна колонка DataFrame. Вектор даних.
df['column']Доступ до колонки. Повертає Series.
df[df['signal'] > -50]Фільтрація рядків за умовою. Булева індексація.
groupby()Групування. Аналог SUMIF, AVERAGEIF в Excel.
agg()Агрегація: сума, середнє, мінімум, максимум, кількість.
3. ТЕОРІЯ
3.1 Створення DataFrame
import pandas as pd3.2 Базові операції
# Інформація про таблицю3.3 Фільтрація
Як WHERE у SQL або фільтр у Excel:
# Сильні сигнали (більше -50 dBm)
Важливо: кожну умову в дужки! (df['a'] > 5) & (df['b'] < 10)3.4 Групування та агрегація
Аналог зведених таблиць Excel:
# Кількість перехоплень на кожній частоті3.5 Сортування
# За однією колонкою4. КОД З КОМЕНТАРЯМИ
Повний аналіз журналу перехоплень:
import pandas as pd5. РОЗБІР ПО РЯДКАХ
df['freq'].value_counts() — порахувати скільки разів кожне значення зустрічається. Повертає Series, відсортований за кількістю.
.items() — ітерація по Series як по словнику: (ключ, значення)
df.groupby('freq')['signal'] — групувати по freq, взяти колонку signal
.mean() — середнє арифметичне. Можна .sum(), .min(), .max(), .count().reset_index() — перетворити індекс у звичайну колонку. Потрібно для збереження у файл.
6. ЗАВДАННЯ 1: ЗНАЙТИ ПОМИЛКУ
Код має фільтрувати частоту 145.5 та сигнал сильніше -50:
filtered = df[df['freq'] == 145.5 & df['signal'] > -50]Відповідь:
Помилка: немає дужок навколо умов. Python спочатку виконає 145.5 & df['signal'], що помилка.Виправлено:
filtered = df[(df['freq'] == 145.5) & (df['signal'] > -50)]7. ЗАВДАННЯ 2: ПРОМПТ ДЛЯ AI
Задача: знайти аномальну активність (відхилення >3σ)Є CSV з колонками: timestamp, freq, signal. Потрібно знайти години де кількість перехоплень аномально велика (статистичний викид).
Приклад промпту:
Завантаж CSV з pandas. Додай колонку hour (витяг з timestamp). Групуй по hour, порахуй кількість. Обчисли середнє та стандартне відхилення. Знайди години де count > mean + 3*std. Виведи ці години та їх кількість. Використай df['timestamp'].dt.hour для витягу години.8. ЗАВДАННЯ 3 (ОПЦІОНАЛЬНО)
Побудувати таблицю: частота × година дня (heatmap даних)Рядки — частоти, колонки — години (0-23), значення — кількість перехоплень.
Підказка:
# Створити колонку hour
.unstack() — перетворити індекс у колонки (з довгого формату у широкий)9. ЗАВДАННЯ 4: ВИПРАВИТИ РЕАЛЬНИЙ КОД
Код працює, але повільно та незручно:
import pandas as pdЩо не так:
- Ручний цикл замість pandas методів
- iloc у циклі — дуже повільно
- Ручне сортування словника
Виправлено (pandas way):
import pandas as pdШвидше у 100+ разів, код у 1 рядок замість 10.
10. РЕФЛЕКСІЯ
Я розумію DataFrame та Series
Я вмію фільтрувати рядки за умовою
Я знаю groupby() та агрегації
Я вмію сортувати та брати топ-N
Я можу зберегти результати у Excel
Я пишу код "pandas way" а не циклами
11. ЩО ДАЛІ
Модуль 2.4: Requests та API — завантажити дані з інтернету
Головна думка: Pandas = Excel + програмування. Все що Excel робить кліками, pandas робить кодом. Але швидше, масштабніше, повторюваніше.