Начните с установки библиотеки pandas, если она еще не установлена. Выполните команду pip install pandas в терминале. После установки импортируйте библиотеку в ваш скрипт: import pandas as pd. Это позволит вам работать с табличными данными, которые легко организовывать и анализировать.
Создайте DataFrame из словаря или списка. Например, data = {'Имя': ['Алексей', 'Мария', 'Иван'], 'Возраст': [25, 30, 22]}. Преобразуйте его в DataFrame с помощью df = pd.DataFrame(data). Теперь у вас есть таблица с двумя столбцами: «Имя» и «Возраст».
Используйте метод df.head(), чтобы быстро просмотреть первые несколько строк таблицы. Это помогает убедиться, что данные загружены правильно. Если нужно узнать количество строк и столбцов, вызовите df.shape. Для получения общей информации о DataFrame, включая типы данных, воспользуйтесь df.info().
Фильтруйте данные с помощью условий. Например, чтобы выбрать строки, где возраст больше 25, используйте df[df['Возраст'] > 25]. Для сортировки данных по столбцу примените df.sort_values('Возраст'). Эти методы упрощают анализ и поиск нужной информации.
Добавляйте новые столбцы или изменяйте существующие. Например, df['Город'] = ['Москва', 'Санкт-Петербург', 'Казань'] добавит новый столбец. Для удаления столбца используйте df.drop('Город', axis=1). Эти операции делают работу с данными гибкой и адаптируемой под ваши задачи.
Создание DataFrame и его основные операции
Создайте DataFrame из словаря, списка или CSV-файла. Например, используйте библиотеку Pandas и метод pd.DataFrame(). Для словаря ключи станут названиями столбцов, а значения – данными.
import pandas as pd
data = {'Имя': ['Анна', 'Иван', 'Мария'], 'Возраст': [25, 30, 28]}
df = pd.DataFrame(data)
print(df)
Для загрузки данных из CSV примените pd.read_csv(). Укажите путь к файлу и параметры, такие как разделитель или кодировка.
df = pd.read_csv('data.csv', delimiter=';', encoding='utf-8')
Просмотрите первые строки DataFrame с помощью head() или последние – через tail(). Это помогает быстро оценить структуру данных.
print(df.head(3)) # Первые 3 строки
print(df.tail(2)) # Последние 2 строки
Используйте info() для получения сводки о DataFrame: типы данных, количество строк и столбцов, а также наличие пропусков.
df.info()
Для фильтрации данных примените условия. Например, выберите строки, где возраст больше 25:
filtered_df = df[df['Возраст'] > 25]
print(filtered_df)
Добавьте новый столбец, присвоив значения или выполнив вычисления. Например, создайте столбец «Год рождения»:
df['Год рождения'] = 2023 - df['Возраст']
print(df)
Сгруппируйте данные по одному или нескольким столбцам с помощью groupby(). Например, посчитайте средний возраст по именам:
grouped_df = df.groupby('Имя')['Возраст'].mean()
print(grouped_df)
Для сортировки данных используйте sort_values(). Укажите столбец и направление сортировки:
sorted_df = df.sort_values('Возраст', ascending=False)
print(sorted_df)
Сводные таблицы создаются через pivot_table(). Например, посчитайте средний возраст для каждого имени:
pivot_df = df.pivot_table(values='Возраст', index='Имя', aggfunc='mean')
print(pivot_df)
Экспортируйте DataFrame в CSV или Excel с помощью to_csv() или to_excel(). Укажите путь и параметры форматирования.
df.to_csv('output.csv', index=False)
df.to_excel('output.xlsx', sheet_name='Данные')
Эти операции помогут эффективно работать с DataFrame, анализировать данные и готовить их для дальнейшего использования.
Инициализация DataFrame из словаря
Создайте DataFrame из словаря, чтобы быстро организовать данные в табличном формате. Используйте функцию pd.DataFrame(), передавая словарь в качестве аргумента. Ключи словаря станут названиями столбцов, а значения – данными в этих столбцах.
- Пример:
import pandas as pd data = {'Имя': ['Алексей', 'Мария', 'Иван'], 'Возраст': [25, 30, 22], 'Город': ['Москва', 'Санкт-Петербург', 'Казань']} df = pd.DataFrame(data)
Если значения в словаре имеют разную длину, Pandas автоматически дополнит недостающие значения значением NaN. Например:
- Пример с разной длиной:
data = {'Имя': ['Алексей', 'Мария'], 'Возраст': [25, 30, 22]} df = pd.DataFrame(data)
Чтобы задать индекс строк, передайте список меток в параметр index:
- Пример с индексом:
df = pd.DataFrame(data, index=['a', 'b', 'c'])
Инициализация из словаря подходит для работы с небольшими наборами данных, где требуется быстро создать таблицу. Для больших объемов данных рассмотрите другие методы, такие как чтение из файлов.
Создание DataFrame из CSV-файла
Для создания DataFrame из CSV-файла используйте функцию read_csv из библиотеки Pandas. Просто укажите путь к файлу в качестве аргумента. Например:
import pandas as pd
df = pd.read_csv('data.csv')
Если файл содержит заголовки столбцов, Pandas автоматически использует их для именования колонок. Если заголовков нет, добавьте параметр header=None:
df = pd.read_csv('data.csv', header=None)
Для указания собственных имен столбцов передайте список имен через параметр names:
df = pd.read_csv('data.csv', names=['Колонка1', 'Колонка2', 'Колонка3'])
Если CSV-файл использует разделитель, отличный от запятой, укажите его через параметр sep. Например, для файла с разделителем табуляции:
df = pd.read_csv('data.tsv', sep='t')
Для работы с большими файлами добавьте параметр chunksize, чтобы загружать данные по частям:
chunks = pd.read_csv('large_data.csv', chunksize=1000)
for chunk in chunks:
print(chunk.head())
Если в файле есть пропущенные значения, используйте параметр na_values для их обозначения. Например, чтобы считать строки «N/A» и «пусто» как NaN:
df = pd.read_csv('data.csv', na_values=['N/A', 'пусто'])
Для изменения кодировки файла добавьте параметр encoding. Например, для файла в кодировке UTF-8:
df = pd.read_csv('data.csv', encoding='utf-8')
Ниже приведена таблица с основными параметрами функции read_csv:
| Параметр | Описание |
|---|---|
filepath_or_buffer |
Путь к файлу или объект с данными. |
sep |
Разделитель данных. По умолчанию – запятая. |
header |
Номер строки, используемой для заголовков. По умолчанию – 0. |
names |
Список имен для столбцов. |
na_values |
Список значений, которые нужно считать как NaN. |
encoding |
Кодировка файла. |
chunksize |
Размер порции данных для чтения. |
После загрузки данных проверьте их с помощью методов head() и info(), чтобы убедиться в корректности загрузки.
Основные методы работы с данными в DataFrame
Для начала работы с DataFrame используйте метод head(), чтобы вывести первые несколько строк. Это поможет быстро оценить структуру данных. Например, df.head(5) покажет первые 5 строк.
Чтобы получить общую информацию о данных, примените метод info(). Он выведет количество строк, типы данных столбцов и объем используемой памяти. Например, df.info().
Для анализа числовых данных используйте метод describe(). Он покажет основные статистические показатели, такие как среднее, стандартное отклонение, минимум и максимум. Пример: df.describe().
Если нужно выбрать конкретные столбцы, используйте квадратные скобки. Например, df['столбец'] вернет данные из указанного столбца. Для выбора нескольких столбцов передайте список: df[['столбец1', 'столбец2']].
Для фильтрации данных по условию применяйте булевы индексы. Например, df[df['столбец'] > 10] вернет строки, где значения в указанном столбце больше 10.
Чтобы добавить новый столбец, просто присвойте значения существующему или новому имени столбца. Например, df['новый_столбец'] = df['столбец1'] + df['столбец2'].
Для удаления столбцов используйте метод drop(). Укажите имя столбца и параметр axis=1. Например, df.drop('столбец', axis=1, inplace=True) удалит столбец на месте.
Если нужно отсортировать данные по значениям столбца, примените метод sort_values(). Например, df.sort_values('столбец', ascending=False) отсортирует данные по убыванию.
Для обработки пропущенных данных используйте метод fillna(), чтобы заменить их на конкретное значение. Например, df.fillna(0) заменит все пропуски на нули.
Чтобы сгруппировать данные по определенному столбцу и выполнить агрегацию, используйте метод groupby(). Например, df.groupby('столбец')['другой_столбец'].mean() вернет средние значения по группам.
Эти методы помогут вам эффективно работать с данными в DataFrame и быстро получать нужные результаты.
Как проверять типы данных в столбцах
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [1.1, 2.2, 3.3],
'C': ['text', 'more text', 'even more']
})
print(df.dtypes)
Для проверки типа данных конкретного столбца примените атрибут dtype:
print(df['A'].dtype)
Если нужно преобразовать тип данных столбца, используйте метод astype. Например, чтобы преобразовать столбец в целые числа:
df['A'] = df['A'].astype('int64')
Для проверки, содержит ли столбец только числовые данные, воспользуйтесь методом to_numeric с параметром errors='coerce'. Это преобразует нечисловые значения в NaN:
pd.to_numeric(df['B'], errors='coerce')
Чтобы узнать, есть ли в столбце пропущенные значения, используйте метод isna в сочетании с sum:
print(df['C'].isna().sum())
Эти методы помогут вам легко управлять типами данных и контролировать их корректность в вашем DataFrame.
Манипуляции с данными в DataFrame
Для фильтрации строк в DataFrame используйте метод query(). Например, чтобы выбрать строки, где значение в столбце «Возраст» больше 30, выполните: df.query('Возраст > 30'). Этот метод удобен для работы с большими наборами данных и позволяет писать условия в виде строк.
Добавьте новый столбец с помощью прямого присваивания. Если нужно создать столбец «Скидка» на основе значений из столбца «Цена», выполните: df['Скидка'] = df['Цена'] * 0.1. Такой подход упрощает расчеты и делает код читаемым.
Для удаления дубликатов используйте метод drop_duplicates(). Например, чтобы удалить строки с повторяющимися значениями в столбце «Имя», выполните: df.drop_duplicates(subset='Имя'). Это помогает очистить данные от ненужных повторов.
Сгруппируйте данные с помощью метода groupby(). Например, чтобы найти среднее значение в столбце «Зарплата» для каждой категории в столбце «Отдел», выполните: df.groupby('Отдел')['Зарплата'].mean(). Этот метод полезен для анализа данных по категориям.
Измените тип данных в столбце с помощью метода astype(). Например, чтобы преобразовать столбец «Дата» в формат datetime, выполните: df['Дата'] = df['Дата'].astype('datetime64'). Это упрощает работу с временными данными.
Объедините несколько DataFrame с помощью метода merge(). Например, чтобы объединить два DataFrame по столбцу «ID», выполните: pd.merge(df1, df2, on='ID'). Это позволяет комбинировать данные из разных источников.
Примените функцию к каждому элементу столбца с помощью метода apply(). Например, чтобы преобразовать все значения в столбце «Текст» в верхний регистр, выполните: df['Текст'] = df['Текст'].apply(lambda x: x.upper()). Это расширяет возможности обработки данных.
Фильтрация данных по условиям
Чтобы отфильтровать данные в DataFrame, используйте булевы индексы. Например, если у вас есть таблица с данными о продажах и нужно выбрать строки, где сумма продаж превышает 1000, примените следующий код:
filtered_data = df[df['Sales'] > 1000]
Для фильтрации по нескольким условиям объедините их с помощью логических операторов. Допустим, нужно выбрать записи, где продажи больше 1000 и регион равен «Север»:
filtered_data = df[(df['Sales'] > 1000) & (df['Region'] == 'Север')]
Если требуется фильтровать данные по значениям из списка, используйте метод isin. Например, чтобы выбрать строки, где регион равен «Север» или «Юг»:
filtered_data = df[df['Region'].isin(['Север', 'Юг'])]
Для работы с текстовыми данными применяйте строковые методы. Чтобы выбрать строки, где название продукта содержит слово «чай», выполните:
filtered_data = df[df['Product'].str.contains('чай')]
Если нужно отфильтровать данные по отсутствию значений, используйте метод isna или notna. Например, чтобы выбрать строки с пропущенными значениями в столбце «Цена»:
filtered_data = df[df['Цена'].isna()]
Для сложных условий, таких как фильтрация по диапазону дат, используйте методы сравнения. Например, чтобы выбрать записи за период с января по март 2023 года:
filtered_data = df[(df['Дата'] >= '2023-01-01') & (df['Дата'] <= '2023-03-31')]
Фильтрация данных помогает быстро находить нужные записи и работать с ними отдельно. Практикуйте эти методы, чтобы уверенно управлять своими данными.
Группировка данных и агрегирование
Для группировки данных в DataFrame используйте метод groupby(). Например, если у вас есть данные о продажах с колонками "Город" и "Сумма", вы можете сгруппировать их по городам: df.groupby('Город'). Это создаст объект GroupBy, с которым можно работать дальше.
После группировки примените агрегирующие функции, такие как sum(), mean() или count(), чтобы получить сводные данные. Например, df.groupby('Город')['Сумма'].sum() покажет общую сумму продаж по каждому городу.
Для более сложных вычислений используйте метод agg(). Он позволяет применять несколько функций одновременно. Например, df.groupby('Город')['Сумма'].agg(['sum', 'mean', 'count']) выведет сумму, среднее значение и количество продаж для каждого города.
Если нужно сгруппировать данные по нескольким колонкам, передайте их списком в groupby(). Например, df.groupby(['Город', 'Месяц'])['Сумма'].sum() покажет продажи по городам и месяцам.
Для работы с группированными данными можно также использовать метод transform(). Он возвращает DataFrame того же размера, что и исходный, но с применёнными агрегирующими функциями. Например, df['Средняя_Сумма'] = df.groupby('Город')['Сумма'].transform('mean') добавит колонку со средним значением продаж для каждого города.
Чтобы сбросить индекс после группировки, используйте метод reset_index(). Это полезно, если вы хотите получить обычный DataFrame вместо объекта GroupBy. Например, df.groupby('Город')['Сумма'].sum().reset_index() вернёт таблицу с колонками "Город" и "Сумма".
Слияние и объединение нескольких DataFrame
Для объединения DataFrame используйте метод merge(), который позволяет соединять таблицы по ключевым столбцам. Например, чтобы объединить два DataFrame df1 и df2 по столбцу id, выполните:
result = pd.merge(df1, df2, on='id')
Если ключевые столбцы имеют разные имена, укажите их с помощью параметров left_on и right_on. Например:
result = pd.merge(df1, df2, left_on='id', right_on='user_id')
Для слияния таблиц по индексам используйте метод join(). Этот метод удобен, когда индексы DataFrame служат ключами для объединения. Пример:
result = df1.join(df2, how='inner')
Параметр how определяет тип объединения: inner, outer, left или right.
Если нужно объединить несколько DataFrame по вертикали, воспользуйтесь методом concat(). Например:
result = pd.concat([df1, df2, df3], axis=0)
Параметр axis=0 указывает на вертикальное объединение, а axis=1 – на горизонтальное.
При работе с дубликатами в ключевых столбцах используйте параметр validate в методе merge(). Он помогает избежать ошибок, проверяя уникальность ключей. Например:
result = pd.merge(df1, df2, on='id', validate='one_to_one')
Для более сложных сценариев объединения, таких как слияние по нескольким столбцам, передайте список столбцов в параметр on:
result = pd.merge(df1, df2, on=['id', 'date'])
Если в таблицах есть конфликтующие имена столбцов, добавьте суффиксы с помощью параметра suffixes:
result = pd.merge(df1, df2, on='id', suffixes=('_left', '_right'))
Эти методы помогут вам эффективно работать с несколькими DataFrame, объединяя их в зависимости от задачи.
Как записывать измененные данные в новый CSV-файл
Для сохранения измененного DataFrame в новый CSV-файл используйте метод to_csv(). Укажите имя файла в качестве аргумента, например: df.to_csv('new_file.csv'). Это создаст файл в текущей директории.
Если вам нужно исключить индексы из файла, добавьте параметр index=False: df.to_csv('new_file.csv', index=False). Это полезно, чтобы избежать лишних данных в итоговом файле.
Для разделения данных с помощью другого символа, например точки с запятой, используйте параметр sep: df.to_csv('new_file.csv', sep=';'). Это может быть удобно для работы с системами, требующими специфичных форматов.
Если вы хотите сохранить только определенные столбцы, передайте их список в параметр columns: df.to_csv('new_file.csv', columns=['column1', 'column2']). Это упрощает работу с большими наборами данных.
Для добавления данных в существующий файл используйте параметр mode='a' и отключите заголовки с помощью header=False: df.to_csv('existing_file.csv', mode='a', header=False). Это позволяет дописывать информацию без перезаписи.





