Как на Python прочитать CSV-файл и вывести только те строки, где значение в колонке status равно active?

Для чтения CSV-файла и фильтрации строк по значению колонки `status` в Python существует несколько подходов. Рассмотрим два наиболее популярных: встроенный модуль `csv` и библиотека `pandas`.

## Пример CSV-файла

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

id,name,email,status
1,Alice,alice@example.com,active
2,Bob,bob@example.com,inactive
3,Carol,carol@example.com,active

Сохраните этот файл как `users.csv`.

## Способ 1: Встроенный модуль csv

python
import csv

with open(‘users.csv’, newline=», encoding=’utf-8′) as f:
reader = csv.DictReader(f)
for row in reader:
if row[‘status’] == ‘active’:
print(row)

`csv.DictReader` читает каждую строку как словарь, где ключи — это названия колонок из заголовка. Условие `row[‘status’] == ‘active’` фильтрует только нужные строки.

**Вывод:**

{‘id’: ‘1’, ‘name’: ‘Alice’, ’email’: ‘alice@example.com’, ‘status’: ‘active’}
{‘id’: ‘3’, ‘name’: ‘Carol’, ’email’: ‘carol@example.com’, ‘status’: ‘active’}

## Способ 2: Библиотека pandas

python
import pandas as pd

df = pd.read_csv(‘users.csv’)
active_rows = df[df[‘status’] == ‘active’]
print(active_rows)

`pandas` загружает весь файл в DataFrame, а булева маска `df[‘status’] == ‘active’` возвращает только подходящие строки. Это удобнее при работе с большими файлами и сложными условиями.

**Вывод:**

id name email status
0 1 Alice alice@example.com active
2 3 Carol carol@example.com active

## Дополнительные советы

— **Регистр символов:** если значения могут быть `Active`, `ACTIVE` и т.д., используйте `.str.lower()` в pandas или `.lower()` в модуле csv.
— **Пробелы:** CSV-файлы иногда содержат пробелы вокруг значений. В `csv.DictReader` используйте параметр `skipinitialspace=True`.
— **Большие файлы:** модуль `csv` читает файл построчно и не загружает всё в память, что предпочтительно для очень больших файлов.
— **Запись результата:** отфильтрованные строки можно сохранить в новый CSV с помощью `csv.DictWriter` или `df.to_csv(‘output.csv’, index=False)`.

Оба подхода просты в использовании. Для небольших задач достаточно встроенного модуля `csv`, а для аналитики и сложной обработки данных лучше использовать `pandas`.


Задайте вопрос нейросети

Не нашли ответ? Спросите ИИ — он подготовит развёрнутую статью.