Как создать и фильтровать датафрейм в pandas

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Введение в pandas и датафреймы

Pandas — это мощная библиотека для анализа данных в Python, разработанная для упрощения работы с данными. Она предоставляет удобные структуры данных и функции для работы с данными, что делает её незаменимым инструментом для анализа данных. Одной из ключевых структур данных в pandas является DataFrame. DataFrame можно представить как таблицу данных, аналогичную таблицам в базах данных или электронных таблицах, с метками строк и столбцов.

DataFrame позволяет легко манипулировать данными: добавлять и удалять столбцы, фильтровать строки по условиям, выполнять группировку и агрегацию данных, а также выполнять множество других операций. Это делает pandas особенно полезной для задач анализа данных, машинного обучения и научных исследований. В этой статье мы рассмотрим основные методы создания и фильтрации DataFrame, а также приведем примеры, которые помогут вам лучше понять эти процессы.

Кинга Идем в IT: пошаговый план для смены профессии

Создание датафрейма: основные методы

Создание датафрейма из словаря

Самый простой способ создать DataFrame — использовать словарь. Ключи словаря станут именами столбцов, а значения — данными. Этот метод удобен, когда у вас есть небольшие наборы данных, которые можно легко организовать в виде словаря.

Python
Скопировать код
import pandas as pd

data = {
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Age': [25, 30, 35],
    'City': ['New York', 'Los Angeles', 'Chicago']
}

df = pd.DataFrame(data)
print(df)

В этом примере мы создаем DataFrame из словаря, где ключи — это имена столбцов, а значения — списки данных. DataFrame автоматически присваивает метки строк (индексы), начиная с 0.

Создание датафрейма из списка списков

Другой способ создания DataFrame — использовать список списков и передать его в конструктор DataFrame вместе с именами столбцов. Этот метод полезен, когда данные уже организованы в виде списков.

Python
Скопировать код
data = [
    ['Alice', 25, 'New York'],
    ['Bob', 30, 'Los Angeles'],
    ['Charlie', 35, 'Chicago']
]

df = pd.DataFrame(data, columns=['Name', 'Age', 'City'])
print(df)

Здесь мы создаем DataFrame из списка списков, где каждый внутренний список представляет собой строку данных. Мы также указываем имена столбцов с помощью параметра columns.

Создание датафрейма из CSV-файла

Часто данные хранятся в CSV-файлах. Pandas позволяет легко загрузить такие данные в DataFrame с помощью функции read_csv. Этот метод особенно полезен для работы с большими наборами данных.

Python
Скопировать код
df = pd.read_csv('data.csv')
print(df)

Функция read_csv загружает данные из указанного CSV-файла и автоматически определяет типы данных для каждого столбца. Вы можете также использовать различные параметры, такие как sep, header, names, чтобы настроить процесс загрузки данных.

Создание датафрейма из других источников данных

Помимо словарей, списков и CSV-файлов, pandas поддерживает создание DataFrame из множества других источников данных, таких как базы данных SQL, Excel-файлы, JSON-файлы и даже веб-страницы. Например, для загрузки данных из базы данных SQL можно использовать функцию read_sql.

Python
Скопировать код
import sqlite3

conn = sqlite3.connect('database.db')
df = pd.read_sql('SELECT * FROM table_name', conn)
print(df)

Эта гибкость делает pandas универсальным инструментом для работы с данными из различных источников.

Основные операции фильтрации данных

Фильтрация по одному условию

Для фильтрации данных в DataFrame можно использовать логические условия. Например, чтобы выбрать всех людей старше 30 лет:

Python
Скопировать код
filtered_df = df[df['Age'] > 30]
print(filtered_df)

В этом примере мы создаем новый DataFrame, содержащий только те строки, где значение в столбце 'Age' больше 30. Фильтрация выполняется с помощью логического условия, которое возвращает булев массив, используемый для индексации исходного DataFrame.

Фильтрация по нескольким условиям

Можно комбинировать несколько условий с помощью логических операторов & (и) и | (или). Например, чтобы выбрать всех людей старше 30 лет, живущих в Чикаго:

Python
Скопировать код
filtered_df = df[(df['Age'] > 30) & (df['City'] == 'Chicago')]
print(filtered_df)

Здесь мы используем оператор & для комбинирования двух условий: возраст больше 30 и город равен 'Chicago'. Обратите внимание, что каждое условие должно быть заключено в круглые скобки.

Фильтрация с использованием метода query

Метод query позволяет фильтровать данные, используя строковые выражения. Это может сделать код более читаемым и удобным для написания сложных условий.

Python
Скопировать код
filtered_df = df.query('Age > 30 and City == "Chicago"')
print(filtered_df)

Метод query принимает строку с логическим выражением, которое используется для фильтрации данных. Это особенно полезно, когда условия фильтрации сложные и включают несколько столбцов.

Фильтрация с использованием метода loc

Метод loc позволяет фильтровать данные по меткам строк и столбцов. Например, чтобы выбрать все строки, где возраст больше 25, и столбцы 'Name' и 'City':

Python
Скопировать код
filtered_df = df.loc[df['Age'] > 25, ['Name', 'City']]
print(filtered_df)

Метод loc принимает два аргумента: условие для строк и список столбцов, которые нужно выбрать. Это делает его мощным инструментом для выборки данных по сложным критериям.

Фильтрация с использованием метода iloc

Метод iloc позволяет фильтровать данные по индексам строк и столбцов. Например, чтобы выбрать первые две строки и первые два столбца:

Python
Скопировать код
filtered_df = df.iloc[:2, :2]
print(filtered_df)

Метод iloc использует числовые индексы для выборки данных, что может быть полезно, когда нужно выбрать данные по их позиции в DataFrame.

Примеры фильтрации данных на практике

Пример 1: Фильтрация данных по значению в столбце

Предположим, у нас есть DataFrame с информацией о продажах, и мы хотим выбрать все продажи, совершенные в январе.

Python
Скопировать код
sales_data = {
    'Date': ['2023-01-01', '2023-02-15', '2023-01-20'],
    'Amount': [100, 200, 150]
}

sales_df = pd.DataFrame(sales_data)
january_sales = sales_df[sales_df['Date'].str.startswith('2023-01')]
print(january_sales)

В этом примере мы используем метод str.startswith для фильтрации строк, где дата начинается с '2023-01'. Это позволяет легко выбрать все продажи, совершенные в январе.

Пример 2: Фильтрация данных по диапазону значений

Предположим, у нас есть DataFrame с информацией о температуре, и мы хотим выбрать все записи, где температура была между 20 и 30 градусами.

Python
Скопировать код
temperature_data = {
    'Day': ['Monday', 'Tuesday', 'Wednesday'],
    'Temperature': [22, 28, 15]
}

temperature_df = pd.DataFrame(temperature_data)
moderate_temp = temperature_df[(temperature_df['Temperature'] >= 20) & (temperature_df['Temperature'] <= 30)]
print(moderate_temp)

Здесь мы используем логические условия для фильтрации строк, где температура находится в заданном диапазоне. Это полезно для анализа данных, таких как погодные условия или финансовые показатели.

Пример 3: Фильтрация данных с использованием метода loc

Метод loc позволяет фильтровать данные по меткам строк и столбцов. Например, чтобы выбрать все строки, где возраст больше 25, и столбцы 'Name' и 'City':

Python
Скопировать код
filtered_df = df.loc[df['Age'] > 25, ['Name', 'City']]
print(filtered_df)

Этот пример демонстрирует, как можно использовать метод loc для выборки данных по сложным критериям. Метод loc особенно полезен, когда нужно выбрать определенные столбцы после фильтрации строк.

Пример 4: Фильтрация данных с использованием метода iloc

Метод iloc позволяет фильтровать данные по индексам строк и столбцов. Например, чтобы выбрать первые две строки и первые два столбца:

Python
Скопировать код
filtered_df = df.iloc[:2, :2]
print(filtered_df)

Этот пример показывает, как можно использовать метод iloc для выборки данных по их позиции в DataFrame. Метод iloc полезен, когда нужно выбрать данные по их индексам, а не по значениям.

Заключение и полезные советы

Pandas предоставляет множество возможностей для создания и фильтрации DataFrame. Важно понимать основные методы и операции, чтобы эффективно работать с данными. Вот несколько полезных советов:

  • Используйте read_csv для загрузки данных из CSV-файлов.
  • Применяйте логические условия для фильтрации данных.
  • Комбинируйте условия с помощью операторов & и |.
  • Используйте метод query для более читаемых фильтров.
  • Экспериментируйте с методами loc и iloc для доступа к данным по меткам и индексам.
  • Используйте метод str для работы с текстовыми данными, такими как фильтрация строк по подстрокам.
  • Применяйте методы groupby и agg для группировки и агрегации данных.
  • Используйте метод merge для объединения данных из разных DataFrame.

Эти знания помогут вам уверенно работать с данными в pandas и решать разнообразные задачи анализа данных. Не бойтесь экспериментировать и пробовать разные методы и функции, чтобы найти наиболее эффективные решения для ваших задач.

Читайте также