Pandas и CSV
CSV (comma-separated values) — самый распространённый формат для логов датчиков
и таблиц. Pandas умеет читать и писать CSV одной функцией: pd.read_csv /
df.to_csv. У них десятки параметров, но в 90% случаев достаточно
4–5 ключевых.
Когда использовать
Загрузка лога с Arduino, сохранённого через
Serial.print(",").Экспорт результата анализа для отчёта/Excel.
Промежуточное хранение между шагами пайплайна.
Пример 1. Минимальное чтение
log.csv:
time,temp,hum
0,22.1,55
1,22.3,54
import pandas as pd
df = pd.read_csv("log.csv")
print(df)
Output:
time temp hum
0 0 22.1 55
1 1 22.3 54
Пример 2. Разделитель и кодировка
CSV из Excel в русской локали часто использует ;:
import pandas as pd
df = pd.read_csv("data.csv", sep=";", encoding="utf-8")
Если файл из старого Windows-софта, может потребоваться encoding="cp1251".
Пример 3. Парсинг дат
import pandas as pd
df = pd.read_csv("events.csv", parse_dates=["timestamp"])
print(df.dtypes)
Output:
timestamp datetime64[ns]
event object
dtype: object
Без parse_dates столбец остался бы строковым.
Пример 4. Свои названия столбцов
Если в CSV нет заголовка:
import pandas as pd
df = pd.read_csv("raw.csv", header=None, names=["t", "x", "y"])
print(df.head(2))
Пример 5. Запись CSV
import pandas as pd
df = pd.DataFrame({"a": [1, 2, 3], "b": [4, 5, 6]})
df.to_csv("out.csv", index=False)
Содержимое out.csv:
a,b
1,4
2,5
3,6
Без index=False в файл попадёт «лишний» первый столбец с индексами.
Пример 6. Чтение по частям
Для больших файлов:
import pandas as pd
total = 0
for chunk in pd.read_csv("big.csv", chunksize=100_000):
total += chunk["value"].sum()
print("Сумма:", total)
chunksize возвращает итератор по кускам DataFrame — память не
переполняется.
Пример 7. Только нужные столбцы
import pandas as pd
df = pd.read_csv("log.csv", usecols=["time", "temp"])
print(df.head())
Полезно, если в файле сотни столбцов, а нужно 2.
Подводные камни
Запятая в десятичных числах ломает чтение — используйте
decimal=",".По умолчанию
read_csvпытается угадать типы; для критичных колонок задавайтеdtype={"id": str}.Файл может начинаться с BOM — Pandas обычно справляется, но иногда нужен
encoding="utf-8-sig".
См. также
Примечание
Лицензия и источники
Техническое описание адаптировано из официальной документации Pandas (https://pandas.pydata.org/docs/), BSD-3-Clause License. Перевод на русский, примеры и пояснения — © AlashEd Wiki.