Введение в Pandas

Pandas — это библиотека Python с открытым исходным кодом для работы с табличными и временными данными. Она построена поверх NumPy и предоставляет два главных объекта: Series (одномерный массив с подписями) и DataFrame (двумерная таблица со строками и столбцами). На практике Pandas — это «Excel внутри Python»: вы можете читать CSV/JSON, фильтровать строки, агрегировать значения, объединять таблицы, строить графики и сохранять результат обратно на диск.

Для AlashEd библиотека удобна тем, что мы часто работаем с логами датчиков Arduino/ESP32 — температурой, расстоянием от ультразвукового модуля, показаниями линейных сенсоров. Pandas позволяет загрузить такой лог одной строкой и сразу получить статистику, выявить выбросы и построить график.

Когда использовать

  • Анализ CSV/JSON логов с датчиков (температура, влажность, ток).

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

  • Объединение нескольких таблиц по ключу (например, лог + калибровка).

  • Группировка и агрегация — средние, максимумы, частоты событий.

  • Построение быстрых графиков для отчётов и презентаций.

Установка

pip install pandas

После установки импортируют по соглашению как pd:

import pandas as pd
print(pd.__version__)

Output:

2.2.2

Пример 1. Первый DataFrame

import pandas as pd

data = {
    "sensor": ["temp", "humidity", "pressure"],
    "value": [23.5, 56.0, 1013.2],
}
df = pd.DataFrame(data)
print(df)

Output:

     sensor   value
0      temp    23.5
1  humidity    56.0
2  pressure  1013.2

Каждый ключ словаря стал столбцом, а индекс строк создан автоматически (0, 1, 2).

Пример 2. Series — одномерный «столбец»

import pandas as pd

distances = pd.Series([12, 18, 25, 30, 27], name="distance_cm")
print(distances)
print("Среднее:", distances.mean())

Output:

0    12
1    18
2    25
3    30
4    27
Name: distance_cm, dtype: int64
Среднее: 22.4

Пример 3. Чтение CSV

import pandas as pd

df = pd.read_csv("sensor_log.csv")
print(df.head(3))

Метод head(n) возвращает первые n строк — удобно для быстрой проверки структуры файла.

Пример 4. Базовая статистика

import pandas as pd

df = pd.DataFrame({"temp": [22.1, 22.5, 23.0, 22.8, 23.2]})
print(df.describe())

Output:

            temp
count   5.000000
mean   22.720000
std     0.421900
min    22.100000
25%    22.500000
50%    22.800000
75%    23.000000
max    23.200000

Пример 5. Фильтрация

import pandas as pd

df = pd.DataFrame({
    "sensor": ["A", "B", "C", "D"],
    "temp":   [22.1, 35.4, 19.8, 41.0],
})
hot = df[df["temp"] > 30]
print(hot)

Output:

  sensor  temp
1      B  35.4
3      D  41.0

Пример 6. Группировка

import pandas as pd

df = pd.DataFrame({
    "device": ["bot1", "bot1", "bot2", "bot2"],
    "battery": [3.7, 3.6, 4.0, 3.9],
})
print(df.groupby("device")["battery"].mean())

Output:

device
bot1    3.65
bot2    3.95
Name: battery, dtype: float64

Подводные камни

  • Pandas копирует данные неявно — большие датасеты (десятки гигабайт) лучше обрабатывать чанками через chunksize.

  • По умолчанию read_csv пытается сам определить типы; для надёжности задавайте dtype явно.

  • Срезы df[a:b] и df.loc[a:b] ведут себя по-разному: первый — по позициям, второй — по меткам. Подробнее в Индексация и срезы в Pandas.

См. также

Примечание

Лицензия и источники

Техническое описание адаптировано из официальной документации Pandas (https://pandas.pydata.org/docs/), BSD-3-Clause License. Перевод на русский, примеры и пояснения — © AlashEd Wiki.