Введение в 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.