Как создать и фильтровать датафрейм в 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 и решать разнообразные задачи анализа данных. Не бойтесь экспериментировать и пробовать разные методы и функции, чтобы найти наиболее эффективные решения для ваших задач.