Функция read_excel() из библиотеки pandas позволяет загружать данные из Excel-файлов в объект DataFrame. Excel-таблица и DataFrame используют одинаковую двумерную структуру данных, поэтому данные удобно обрабатывать и анализировать.
Установка зависимостей
Для работы с .xlsx файлами обычно используется библиотека openpyxl.
pip install pandas openpyxlПример чтения Excel-файла
Предположим, есть файл records.xlsx с двумя листами: Employees и Cars.
Пример чтения листа Employees:
import pandas as pd
excel_data_df = pd.read_excel(
'records.xlsx',
sheet_name='Employees'
)
print(excel_data_df)Вывод:
EmpID EmpName EmpRole
1 Pankaj CEO
2 David Lee Editor
3 Lisa Ray AuthorПараметр sheet_name указывает, какой лист нужно загрузить. При выводе DataFrame данные отображаются в табличном виде, похожем на Excel.
Получение списка колонок
Список заголовков можно получить через свойство columns.
print(excel_data_df.columns.ravel())Вывод:
['EmpID' 'EmpName' 'EmpRole']Чтение отдельной колонки
Для получения данных конкретного столбца используется имя колонки.
print(excel_data_df['EmpName'].tolist())Вывод:
['Pankaj', 'David Lee', 'Lisa Ray']Использование usecols
Параметр usecols позволяет загружать только нужные столбцы.
import pandas as pd
excel_data_df = pd.read_excel(
'records.xlsx',
sheet_name='Cars',
usecols=['Car Name', 'Car Price']
)
print(excel_data_df)Вывод:
Car Name Car Price
Honda City 20,000 USD
Bugatti Chiron 3 Million USD
Ferrari 458 2,30,000 USDЭто удобно, если нужно работать только с частью данных.
Чтение Excel без строки заголовков
Если файл не содержит заголовков, нужно передать header=None.
excel_data_df = pd.read_excel(
'records.xlsx',
sheet_name='Numbers',
header=None
)Можно указать номер строки вместо None. Тогда именно эта строка будет использоваться как заголовок, а предыдущие строки будут пропущены.
Чтение нескольких листов
read_excel() поддерживает загрузку сразу нескольких листов.
import pandas as pd
data = pd.read_excel(
'records.xlsx',
sheet_name=['Employees', 'Cars']
)
print(data)Также можно передать sheet_name=None, чтобы загрузить все листы файла. В этом случае функция вернёт словарь DataFrame-объектов.
Преобразование Excel в Dict, JSON и CSV
DataFrame можно конвертировать в другие форматы.
excel_data_df = pd.read_excel(
'records.xlsx',
sheet_name='Cars',
usecols=['Car Name', 'Car Price']
)
print(
'Excel Sheet to Dict:',
excel_data_df.to_dict(orient='records')
)
print(
'Excel Sheet to JSON:',
excel_data_df.to_json(orient='records')
)
print(
'Excel Sheet to CSV:\n',
excel_data_df.to_csv(index=False)
)Вывод:
Excel в Dict:
[
{
'Car Name': 'Honda City',
'Car Price': '20,000 USD'
},
{
'Car Name': 'Bugatti Chiron',
'Car Price': '3 Million USD'
},
{
'Car Name': 'Ferrari 458',
'Car Price': '2,30,000 USD'
}
]
Excel в JSON:
[
{
"Car Name": "Honda City",
"Car Price": "20,000 USD"
},
{
"Car Name": "Bugatti Chiron",
"Car Price": "3 Million USD"
},
{
"Car Name": "Ferrari 458",
"Car Price": "2,30,000 USD"
}
]
Excel в CSV:
Car Name,Car Price
Honda City,"20,000 USD"
Bugatti Chiron,3 Million USD
Ferrari 458,"2,30,000 USD"Поддерживаемые форматы
Функция read_excel() поддерживает:
.xls.xlsx.xlsm.xlsb.ods.odt
Также можно читать файлы по URL или из файловых объектов.
Частые ошибки
Иногда ошибка возникает из-за файла с именем pandas.py в проекте. В таком случае Python импортирует локальный файл вместо библиотеки pandas, и read_excel() становится недоступен.
Для .xlsx файлов также часто требуется установленный пакет openpyxl.
pip install openpyxl