Библиотека Pandas: DataFrame, Series, импорт/экспорт данных - Антифрод-исследователь: От основ к продвинутым инструментам - Qpel.AI

Библиотека Pandas: DataFrame, Series, импорт/экспорт данных

Данный материал носит информационно-обучающий характер и не является юридической или финансовой консультацией. Применение полученных знаний на практике требует соблюдения законодательства и этических норм. Ответственность за любые действия, предпринятые на основе информации из курса, лежит на вас.

Pandas — ваш главный инструмент для работы с данными в Python. С ним вы быстро обработаете огромные объёмы информации, что критично для антифрода.

DataFrame: ваш рабочий стол аналитика

Представьте, что вы работаете с таблицей в Excel или базе данных. В Pandas такая таблица называется DataFrame. Это двумерная структура данных: строки и столбцы имеют свои метки.

import pandas as pd

# Создадим простой DataFrame
data = {
    'Имя': ['Иван', 'Мария', 'Петр', 'Анна'],
    'Возраст': [25, 30, 35, 28],
    'Город': ['Москва', 'Санкт-Петербург', 'Казань', 'Москва']
}
df = pd.DataFrame(data)
print(df)

Вывод:

      Имя  Возраст            Город
0    Иван       25           Москва
1   Мария       30  Санкт-Петербург
2    Петр       35           Казань
3    Анна       28           Москва

DataFrame — это не просто таблица. Это мощный объект, который позволяет эффективно выполнять множество операций с данными.

Series: один столбец данных

Series — это одномерная структура данных, по сути, один столбец DataFrame. Думайте о нём как о списке значений с индексом.

# Извлечем столбец 'Возраст' из нашего DataFrame
ages = df['Возраст']
print(ages)
print(type(ages))

Вывод:

0    25
1    30
2    35
3    28
Name: Возраст, dtype: int64
<class 'pandas.core.series.Series'>

Вы можете создать Series и независимо:

s = pd.Series([10, 20, 30, 40], name='Мои_числа')
print(s)

Импорт данных: загружаем информацию

В реальной работе данные редко бывают прямо в коде. Чаще всего они хранятся в файлах. Pandas умеет читать данные из множества источников.

Читаем из CSV

CSV (Comma Separated Values) — один из самых распространённых форматов.

# Создадим фиктивный CSV-файл для примера
csv_content = """id,amount,currency,is_fraud
1,1500,RUB,False
2,25000,USD,True
3,500,RUB,False
4,12000,RUB,True
"""
with open('transactions.csv', 'w', encoding='utf-8') as f:
    f.write(csv_content)

# Читаем данные из CSV
transactions_df = pd.read_csv('transactions.csv')
print(transactions_df.head()) # Выведем первые 5 строк

Вывод:

   id  amount currency  is_fraud
0   1    1500      RUB     False
1   2   25000      USD      True
2   3     500      RUB     False
3   4   12000      RUB      True

💡 Кодировка файлов: Если при работе с русскими символами видите "кракозябры", попробуйте указать encoding='cp1251' или encoding='utf-8' при чтении файла.

Читаем из Excel

Pandas легко работает с файлами Excel (XLSX, XLS).

# Для работы с Excel-файлами может потребоваться установить библиотеку openpyxl:
# pip install openpyxl

# Создадим фиктивный Excel-файл
excel_data = pd.DataFrame({
    'Дата': ['2024-01-01', '2024-01-02'],
    'Сумма': [1000, 2000],
    'Статус': ['Одобрено', 'Отклонено']
})
excel_data.to_excel('reports.xlsx', index=False) # index=False чтобы не записывать индекс в файл

# Читаем данные из Excel
reports_df = pd.read_excel('reports.xlsx')
print(reports_df.head())

Вывод:

         Дата  Сумма    Статус
0  2024-01-01   1000  Одобрено
1  2024-01-02   2000  Отклонено

Экспорт данных: сохраняем результаты

Обработали и проанализировали данные? Сохраните результаты!

Экспорт в CSV

# Сохраним наш DataFrame transactions_df в новый CSV-файл
transactions_df.to_csv('processed_transactions.csv', index=False)
# index=False предотвращает запись индекса DataFrame как отдельного столбца в CSV
print("Данные сохранены в processed_transactions.csv")

Экспорт в Excel

# Сохраним DataFrame reports_df в новый Excel-файл
reports_df.to_excel('processed_reports.xlsx', index=False)
print("Данные сохранены в processed_reports.xlsx")

Практическое задание

  1. Создайте DataFrame с информацией о нескольких подозрительных транзакциях. Включите столбцы: transaction_id, user_id, amount, currency, timestamp (время транзакции), fraud_score (оценка подозрительности от 0 до 100).
  2. Сохраните этот DataFrame в CSV-файл под названием suspicious_transactions.csv.
  3. Прочитайте этот же файл обратно в новый DataFrame, чтобы убедиться, что данные сохранились корректно.

Pandas значительно упрощает и ускоряет работу с данными. В следующем разделе мы углубимся в очистку и трансформацию данных — ключевой навык для любого антифрод-исследователя.