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

Создание датафрейма: основные методы
Создание датафрейма из словаря
Самый простой способ создать DataFrame — использовать словарь. Ключи словаря станут именами столбцов, а значения — данными. Этот метод удобен, когда у вас есть небольшие наборы данных, которые можно легко организовать в виде словаря.
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 вместе с именами столбцов. Этот метод полезен, когда данные уже организованы в виде списков.
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. Этот метод особенно полезен для работы с большими наборами данных.
df = pd.read_csv('data.csv')
print(df)
Функция read_csv загружает данные из указанного CSV-файла и автоматически определяет типы данных для каждого столбца. Вы можете также использовать различные параметры, такие как sep, header, names, чтобы настроить процесс загрузки данных.
Создание датафрейма из других источников данных
Помимо словарей, списков и CSV-файлов, pandas поддерживает создание DataFrame из множества других источников данных, таких как базы данных SQL, Excel-файлы, JSON-файлы и даже веб-страницы. Например, для загрузки данных из базы данных SQL можно использовать функцию read_sql.
import sqlite3
conn = sqlite3.connect('database.db')
df = pd.read_sql('SELECT * FROM table_name', conn)
print(df)
Эта гибкость делает pandas универсальным инструментом для работы с данными из различных источников.
Основные операции фильтрации данных
Фильтрация по одному условию
Для фильтрации данных в DataFrame можно использовать логические условия. Например, чтобы выбрать всех людей старше 30 лет:
filtered_df = df[df['Age'] > 30]
print(filtered_df)
В этом примере мы создаем новый DataFrame, содержащий только те строки, где значение в столбце 'Age' больше 30. Фильтрация выполняется с помощью логического условия, которое возвращает булев массив, используемый для индексации исходного DataFrame.
Фильтрация по нескольким условиям
Можно комбинировать несколько условий с помощью логических операторов & (и) и | (или). Например, чтобы выбрать всех людей старше 30 лет, живущих в Чикаго:
filtered_df = df[(df['Age'] > 30) & (df['City'] == 'Chicago')]
print(filtered_df)
Здесь мы используем оператор & для комбинирования двух условий: возраст больше 30 и город равен 'Chicago'. Обратите внимание, что каждое условие должно быть заключено в круглые скобки.
Фильтрация с использованием метода query
Метод query позволяет фильтровать данные, используя строковые выражения. Это может сделать код более читаемым и удобным для написания сложных условий.
filtered_df = df.query('Age > 30 and City == "Chicago"')
print(filtered_df)
Метод query принимает строку с логическим выражением, которое используется для фильтрации данных. Это особенно полезно, когда условия фильтрации сложные и включают несколько столбцов.
Фильтрация с использованием метода loc
Метод loc позволяет фильтровать данные по меткам строк и столбцов. Например, чтобы выбрать все строки, где возраст больше 25, и столбцы 'Name' и 'City':
filtered_df = df.loc[df['Age'] > 25, ['Name', 'City']]
print(filtered_df)
Метод loc принимает два аргумента: условие для строк и список столбцов, которые нужно выбрать. Это делает его мощным инструментом для выборки данных по сложным критериям.
Фильтрация с использованием метода iloc
Метод iloc позволяет фильтровать данные по индексам строк и столбцов. Например, чтобы выбрать первые две строки и первые два столбца:
filtered_df = df.iloc[:2, :2]
print(filtered_df)
Метод iloc использует числовые индексы для выборки данных, что может быть полезно, когда нужно выбрать данные по их позиции в DataFrame.
Примеры фильтрации данных на практике
Пример 1: Фильтрация данных по значению в столбце
Предположим, у нас есть DataFrame с информацией о продажах, и мы хотим выбрать все продажи, совершенные в январе.
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 градусами.
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':
filtered_df = df.loc[df['Age'] > 25, ['Name', 'City']]
print(filtered_df)
Этот пример демонстрирует, как можно использовать метод loc для выборки данных по сложным критериям. Метод loc особенно полезен, когда нужно выбрать определенные столбцы после фильтрации строк.
Пример 4: Фильтрация данных с использованием метода iloc
Метод iloc позволяет фильтровать данные по индексам строк и столбцов. Например, чтобы выбрать первые две строки и первые два столбца:
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 и решать разнообразные задачи анализа данных. Не бойтесь экспериментировать и пробовать разные методы и функции, чтобы найти наиболее эффективные решения для ваших задач.
Читайте также
- Где найти датасеты для машинного обучения
- Что такое Kaggle и как его использовать
- Рекомендательные системы: основы и примеры
- Как создать массив случайных чисел в Python
- Топ-10 онлайн-инструментов для поиска закономерностей в данных
- Визуализация данных с использованием Matplotlib
- Как сохранить JSON в файл на Python
- Как увеличить глубину рекурсии в Python
- Как парсить данные с сайта с помощью Python
- Основы теории вероятности и статистики для анализа данных


