
Pandas предоставляет структуру данных DataFrame, которая позволяет хранить и обрабатывать таблицы с высокой скоростью. Для начала работы достаточно установить библиотеку командой pip install pandas и импортировать её через import pandas as pd.
Создание таблицы можно выполнить через словарь Python, где ключи соответствуют названиям столбцов, а значения – спискам данных. Например: pd.DataFrame({‘Имя’: [‘Анна’, ‘Иван’], ‘Возраст’: [25, 30]}). Такой подход обеспечивает контроль над структурой и типами данных.
Для больших наборов данных удобнее загружать таблицы из CSV или Excel файлов с помощью функций pd.read_csv(‘файл.csv’) или pd.read_excel(‘файл.xlsx’). Pandas автоматически определяет типы столбцов и позволяет выполнять фильтрацию и агрегацию без дополнительного преобразования данных.
После создания таблицы важно проверять данные с помощью df.head() и df.info(), чтобы убедиться в корректности типов и отсутствии пропусков. Эти методы помогают выявлять ошибки на раннем этапе и оптимизировать последующую обработку.
Установка pandas и проверка версии
Для начала работы с pandas необходимо установить эту библиотеку. Для этого используется пакетный менеджер pip. Откройте терминал или командную строку и выполните следующую команду:
pip install pandas
Если вы используете Jupyter Notebook, установку можно выполнить прямо в ячейке с помощью команды:
!pip install pandas
После завершения установки можно проверить, успешно ли она прошла, а также узнать текущую версию pandas. Для этого выполните следующий код в Python:
import pandas as pd
print(pd.__version__)
Этот код выведет установленную версию pandas. Например, результат может быть таким: 1.5.3. Если вы получаете ошибку при импорте, это значит, что установка не прошла успешно, и нужно повторить процесс.
Для управления версиями библиотеки можно использовать команду pip show pandas, чтобы увидеть дополнительные сведения о установленной версии, включая местоположение пакета и зависимости.
Если вам нужно обновить pandas до последней версии, выполните команду:
pip install --upgrade pandas
Проверка версии помогает убедиться, что у вас установлена нужная версия библиотеки, особенно если проект требует определенной версии pandas для совместимости с другими инструментами.
Создание DataFrame из списка словарей
Для создания DataFrame в pandas из списка словарей можно использовать функцию pd.DataFrame()>. Каждый словарь в списке будет преобразован в строку DataFrame, а ключи словарей – в названия столбцов. Это один из самых простых и удобных способов структурировать данные, особенно когда у вас есть данные в виде ключ-значение.
Пример создания DataFrame:
import pandas as pd
data = [
{'Имя': 'Иван', 'Возраст': 25, 'Город': 'Москва'},
{'Имя': 'Мария', 'Возраст': 30, 'Город': 'Петербург'},
{'Имя': 'Алексей', 'Возраст': 28, 'Город': 'Казань'}
]
df = pd.DataFrame(data)
print(df)
Результат:
Имя Возраст Город
0 Иван 25 Москва
1 Мария 30 Петербург
2 Алексей 28 Казань
Если в словарях присутствуют разные ключи, pandas автоматически заполнит отсутствующие значения NaN (Not a Number). Например, если в одном из словарей отсутствует ключ 'Город', pandas создаст столбец 'Город' и заполнит его значениями NaN
:
data = [
{'Имя': 'Иван', 'Возраст': 25, 'Город': 'Москва'},
{'Имя': 'Мария', 'Возраст': 30}
]
df = pd.DataFrame(data)
print(df)
Результат:
Имя Возраст Город
0 Иван 25 Москва
1 Мария 30 NaN
Этот метод позволяет легко создавать таблицы из неструктурированных данных, где каждый словарь представляет собой запись с произвольным набором атрибутов.
Также можно указать порядок столбцов вручную с помощью параметра columns. Это полезно, если вы хотите задать конкретную структуру таблицы, даже если словари не содержат все ключи:
df = pd.DataFrame(data, columns=['Имя', 'Город', 'Возраст'])
print(df)
Результат:
Имя Город Возраст
0 Иван Москва 25
1 Мария NaN 30
Этот подход улучшает контроль над структурой данных и помогает избежать нежелательных ошибок при работе с данными.
Создание DataFrame из CSV-файла

Для загрузки данных из CSV-файла в DataFrame используется функция read_csv() из библиотеки pandas. Эта функция автоматически обрабатывает данные в файле и преобразует их в табличный формат, удобный для анализа.
Простой пример загрузки CSV-файла:
import pandas as pd
df = pd.read_csv('data.csv')
print(df.head())
Если CSV-файл содержит разделители, отличные от запятой (например, точка с запятой), необходимо указать параметр sep:
df = pd.read_csv('data.csv', sep=';')
Если в файле есть строки заголовков, pandas автоматически использует их для именования столбцов. В случае отсутствия заголовков можно задать их вручную с помощью параметра names:
df = pd.read_csv('data.csv', names=['col1', 'col2', 'col3'])
При чтении CSV-файлов часто встречаются строки, которые могут не содержать данных или быть пустыми. Чтобы пропустить такие строки, используйте параметр skip_blank_lines=True:
df = pd.read_csv('data.csv', skip_blank_lines=True)
Для указания кодировки файла, если это необходимо, можно использовать параметр encoding:
df = pd.read_csv('data.csv', encoding='utf-8')
Если в CSV-файле содержатся пропущенные значения, pandas автоматически заменяет их на NaN. Для явного указания, какие значения следует считать пропущенными, можно воспользоваться параметром na_values:
df = pd.read_csv('data.csv', na_values=['N/A', 'null'])
После загрузки данных в DataFrame можно приступать к их анализу, например, проверять наличие пустых значений или изменять типы данных столбцов:
df.isnull().sum() # Проверка на пропущенные значения
df['column_name'] = df['column_name'].astype(int) # Изменение типа столбца
Для более эффективной работы с большими файлами можно использовать параметр chunksize, который позволяет загружать данные по частям:
chunksize = 1000
for chunk in pd.read_csv('data.csv', chunksize=chunksize):
process(chunk)
Таким образом, загрузка данных из CSV-файла в pandas – это быстрый и эффективный способ получить структурированные данные для последующего анализа.
Добавление и удаление колонок в таблице
Работа с колонками в pandas начинается с создания DataFrame. Для добавления и удаления колонок используются простые, но мощные методы, которые позволяют эффективно управлять данными.
Добавление колонки

Для добавления новой колонки к DataFrame достаточно просто присвоить значения новой колонке. Можно добавить колонку с помощью списка, Series или вычислений на основе других колонок.
- Использование списка:
df['new_column'] = [1, 2, 3, 4]
df['new_column'] = pd.Series([1, 2, 3, 4])
df['sum'] = df['col1'] + df['col2']
Удаление колонки

Чтобы удалить колонку из DataFrame, можно использовать метод drop. Он позволяет не только удалить колонку, но и указать, будет ли изменяться оригинальный DataFrame.
- Удаление колонки с изменением DataFrame:
df.drop('column_name', axis=1, inplace=True)
df = df.drop('column_name', axis=1)
Удаление нескольких колонок
Если нужно удалить несколько колонок, передайте их имена в список:
df.drop(['col1', 'col2'], axis=1, inplace=True)
Проверка наличия колонки
Перед добавлением или удалением колонок полезно проверять их наличие в DataFrame. Это можно сделать с помощью оператора in.
if 'column_name' in df.columns:
Рекомендации
- Используйте
inplace=True, если хотите изменить оригинальный DataFrame без создания нового. - При удалении колонок всегда уточняйте параметр
axis=1, чтобы избежать случайного удаления строк. - Для добавления колонок с вычислениями лучше использовать прямые операции с колонками, чтобы избежать создания лишних объектов.
Фильтрация строк по условиям
Пример фильтрации по условию: если требуется отобрать только те строки, где значения в колонке «Возраст» больше 30 лет, можно использовать следующий код:
import pandas as pd
data = {'Имя': ['Иван', 'Мария', 'Алексей', 'Елена'],
'Возраст': [25, 34, 29, 41]}
df = pd.DataFrame(data)
filtered_df = df[df['Возраст'] > 30]
print(filtered_df)
В результате получится DataFrame, содержащий только строки, где возраст больше 30 лет.
Можно комбинировать несколько условий, используя операторы «и» (&) и «или» (|). Например, чтобы выбрать строки, где возраст больше 30 и имя начинается с буквы «А», можно написать следующий код:
filtered_df = df[(df['Возраст'] > 30) & (df['Имя'].str.startswith('А'))]
print(filtered_df)
Важно помнить, что при комбинировании условий необходимо использовать скобки вокруг каждого выражения, чтобы избежать ошибок при вычислениях.
Также можно использовать метод .query(), который позволяет фильтровать строки, используя строковый синтаксис. Например, чтобы отфильтровать строки, где возраст больше 30 лет, код будет таким:
filtered_df = df.query('Возраст > 30')
print(filtered_df)
Этот метод удобен для краткости, особенно при более сложных фильтрах. Однако, стоит помнить, что .query() не работает с колонками, содержащими пробелы в имени, если не указать специальные кавычки.
Фильтрация по строковым значениям также имеет свои особенности. Например, чтобы выбрать строки, содержащие подстроку «Иван», используйте метод .str.contains(). Для этого можно использовать следующий код:
filtered_df = df[df['Имя'].str.contains('Иван')]
print(filtered_df)
Если необходимо игнорировать регистр символов, добавьте параметр case=False:
filtered_df = df[df['Имя'].str.contains('иван', case=False)]
print(filtered_df)
Этот метод полезен для работы с текстовыми данными, когда требуется найти все строки, содержащие определённую подстроку.
Сортировка данных по одной или нескольким колонкам
Для сортировки данных в DataFrame можно использовать метод sort_values(). Он позволяет упорядочить строки по значениям в одной или нескольких колонках. Например, для сортировки по одной колонке нужно указать имя этой колонки в качестве аргумента.
Пример сортировки по одной колонке:
import pandas as pd
df = pd.DataFrame({'A': [3, 1, 2], 'B': [4, 5, 6]})
df_sorted = df.sort_values(by='A')
print(df_sorted)
Результат:
A B
1 1 5
2 2 6
0 3 4
Если требуется сортировать по нескольким колонкам, можно передать список колонок в параметр by. Важно, что порядок колонок в списке определяет приоритет сортировки.
Пример сортировки по двум колонкам:
df_sorted = df.sort_values(by=['A', 'B'])
print(df_sorted)
Результат:
A B
1 1 5
2 2 6
0 3 4
Сортировка по умолчанию происходит в порядке возрастания. Чтобы изменить это, можно использовать параметр ascending, передав в него список булевых значений, где True означает сортировку по возрастанию, а False – по убыванию.
Пример сортировки по убыванию:
df_sorted = df.sort_values(by='A', ascending=False)
print(df_sorted)
Результат:
A B
0 3 4
2 2 6
1 1 5
Если нужно отсортировать по одному столбцу в одном направлении, а по другому – в другом, используйте ascending с разными значениями для каждого столбца.
Пример сортировки с разными направлениями:
df_sorted = df.sort_values(by=['A', 'B'], ascending=[False, True])
print(df_sorted)
Результат:
A B
0 3 4
2 2 6
1 1 5
Для сохранения порядка индексов после сортировки можно использовать параметр ignore_index=True, который сбросит индексы.
Пример:
df_sorted = df.sort_values(by='A', ignore_index=True)
print(df_sorted)
Результат:
A B
0 1 5
1 2 6
2 3 4
Объединение нескольких таблиц в одну
В Python с использованием библиотеки pandas объединение таблиц происходит с помощью функций concat(), merge() и join(). Каждая из них имеет свои особенности и применяется в зависимости от задач.
Использование concat()
Функция concat() позволяет объединить несколько DataFrame по вертикали или горизонтали. Чтобы объединить таблицы по строкам, необходимо передать их в список и указать параметр axis=0. Для объединения по столбцам используется axis=1.
import pandas as pd
df1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
df2 = pd.DataFrame({'A': [5, 6], 'B': [7, 8]})
df_combined = pd.concat([df1, df2], axis=0)
При объединении по столбцам можно использовать следующий код:
df_combined = pd.concat([df1, df2], axis=1)
Использование merge()
Функция merge() используется для объединения таблиц по ключевым столбцам, аналогично SQL JOIN. Основные параметры: left и right – DataFrame для объединения, on – имя общего столбца, how – тип объединения (по умолчанию inner, доступны также outer, left, right).
df1 = pd.DataFrame({'key': [1, 2], 'A': [3, 4]})
df2 = pd.DataFrame({'key': [1, 3], 'B': [5, 6]})
df_combined = pd.merge(df1, df2, on='key', how='inner')
Типы объединений:
- inner: Возвращает только те строки, где есть совпадение в обоих DataFrame.
- outer: Возвращает все строки, заполняя отсутствующие значения NaN.
- left: Сохраняет все строки из левого DataFrame.
- right: Сохраняет все строки из правого DataFrame.
Использование join()
Функция join() удобна для объединения двух DataFrame по индексу или по общим столбцам. Это более короткий и удобный способ объединения, если основной ключ – индекс.
df1 = pd.DataFrame({'A': [1, 2]}, index=['a', 'b'])
df2 = pd.DataFrame({'B': [3, 4]}, index=['a', 'b'])
df_combined = df1.join(df2)
Если нужно объединить таблицы по конкретному столбцу, можно использовать следующий вариант:
df_combined = df1.set_index('key').join(df2.set_index('key'))
Обработка отсутствующих данных
При объединении таблиц часто появляются пропущенные значения. Для их обработки можно использовать методы fillna() и dropna(). Например, после объединения с merge() можно заполнить пропуски:
df_combined.fillna(0, inplace=True)
Или удалить строки с пропущенными значениями:
df_combined.dropna(inplace=True)
Практические советы
- Для объединения больших таблиц используйте
concat()для вертикального или горизонтального объединения без использования ключевых столбцов. - Если данные должны быть объединены по определённым ключам, используйте
merge()для точного контроля над типом соединения. - Для быстрого объединения по индексам удобно использовать
join(). - Для проверки на наличие пропусков после объединения используйте
isnull().sum().
Сохранение таблицы в CSV или Excel
Для сохранения таблицы в формат CSV или Excel с помощью библиотеки pandas достаточно использовать соответствующие методы. Примерно так можно выполнить операцию:
Для сохранения данных в CSV используйте метод to_csv(). Укажите имя файла и дополнительные параметры, если нужно. Пример кода:
df.to_csv('table.csv', index=False)
Здесь index=False указывает, что индексы строк не будут записываться в файл. Если индексы важны, уберите этот параметр.
Для сохранения в формат Excel применяется метод to_excel(). Обратите внимание, что для работы с Excel нужно установить библиотеку openpyxl или xlsxwriter. Пример:
df.to_excel('table.xlsx', index=False, engine='openpyxl')
Здесь параметр engine указывает на используемый движок. Без указания движка pandas автоматически подберет подходящий, если он установлен в вашей среде.
Если необходимо записать несколько таблиц в один Excel-файл в разных листах, используйте ExcelWriter:
with pd.ExcelWriter('table.xlsx', engine='openpyxl') as writer:
df1.to_excel(writer, sheet_name='Sheet1')
df2.to_excel(writer, sheet_name='Sheet2')
В таком случае, каждый DataFrame будет записан в отдельный лист файла. Убедитесь, что имена листов не превышают 31 символа, так как это ограничение Excel.
Также, при сохранении данных, можно указать кодировку для CSV-файлов. Например, для использования UTF-8 можно добавить параметр encoding='utf-8':
df.to_csv('table.csv', index=False, encoding='utf-8')
Если вы работаете с большими данными, рекомендуется использовать параметры chunksize и compression для эффективного сохранения файлов, уменьшая нагрузку на память и процессор.
