Функция Pandas pd.read_excel()
read_excel()— это функция в библиотеке pandas, используемая для чтения файлов Excel, поддерживающая чтение.xlsxи.xlsфайлов Excel в формате.
Excel — наиболее часто используемый формат файлов в корпоративном анализе данных. Он поддерживает несколько листов, богатое форматирование ячеек, формулы и т. д.read_excel()Он может читать данные из файлов Excel и преобразовывать их в формат pandas DataFrame, что облегчает последующую обработку и анализ данных.
Базовый синтаксис и параметры
Формат синтаксиса
pandas.read_excel(io, sheet_name=0, header=0, names=None, index_col=None,
usecols=None, dtype=None, skiprows=None, nrows=None,
na_values=None, ...)
Описание параметра
| Параметр | Type | Описание | Значение по умолчанию |
|---|---|---|---|
| io | str, ExcelFile, объект пути, файлоподобный объект | Путь к файлу Excel или объект ExcelFile | Обязательный |
| sheet_name | str, int, list, None | Имя или индекс листа для чтения; None читает все листы | 0 |
| header | int, список int | Номер строки, используемой в качестве имён столбцов; 0 означает первую строку | 0 |
| names | спископодобный | Список пользовательских имён столбцов | Отсутствует |
| index_col | int, str | Столбец для использования в качестве индекса строк | Отсутствует |
| usecols | int, str, list | Читать только указанные столбцы | Отсутствует |
| dtype | dict | Тип данных для указанных столбцов | Отсутствует |
| skiprows | спископодобный, int | Пропустить указанные строки | Отсутствует |
| nrows | int | Читать только первые n строк | Отсутствует |
Возвращаемое значение
- Тип возвращаемого значения:
pd.DataFrameилиdictDataFrame-ов - Когда
sheet_nameЕсли это один лист, возвращает DataFrame. - Когда
sheet_nameЕсли это None или файл содержит несколько листов, возвращает словарь, где ключами являются имена листов, а значениями — соответствующие DataFrame.
Примеры
На следующих примерах вы всесторонне освоитеread_excel()различные варианты использования.
Пример 1: Чтение локального файла Excel
Сначала создайте и прочитайте простой файл Excel.
Пример
import openpyxl # Требуется установить: pip install openpyxl
# Создать DataFrame
data = {
'name': ['Tom', 'Jerry', 'Mike', 'Lucy'],
'age': [28, 35, 42, 26],
'city': ['Пекин', 'Шанхай', 'Гуанчжоу', 'Shenzhen'],
'salary': [8000, 12000, 15000, 7000]
}
df_original = pd.DataFrame(data)
# Записать DataFrame в файл Excel
# Путь к файлу Excel: employees.xlsx
df_original.to_excel('employees.xlsx', index=False, engine='openpyxl')
# Использовать read_excel для чтения файла Excel
# io: путь к файлу (обязательно)
df = pd.read_excel('employees.xlsx')
# Просмотреть результат чтения
print("Прочитанный DataFrame:")
print(df)
print("nТипы данных:")
print(df.dtypes)
Ожидаемый вывод:
读取的 DataFrame:
name age city salary
0 Tom 28 Beijing 8000
1 Jerry 35 Shanghai 12000
2 Mike 42 Guangzhou 15000
3 Lucy 26 Shenzhen 7000
数据类型:
name object
age int64
city object
salary int64
Пояснение к коду:
pd.read_excel('employees.xlsx')Это самое базовое использование; просто передайте путь к файлу.- По умолчанию он читает первый лист (sheet_name=0), используя первую строку как имена столбцов.
- Необходимо установить
openpyxlбиблиотеку для поддержки чтения и записи формата .xlsx.
Пример 2: Чтение нескольких рабочих листов
Файлы Excel могут содержать несколько рабочих листов,read_excel()поддерживая гибкое чтение указанных рабочих листов или всех рабочих листов.
# Создание файла Excel, содержащего несколько рабочих листов
# Сначала создайте два DataFrame
df_sales = pd.DataFrame({
'product': ['A', 'B', 'C', 'D'],
'quantity': [100, 200, 150, 80],
'price': [50, 30, 40, 60]
})
df_inventory = pd.DataFrame({
'product': ['A', 'B', 'C', 'D'],
'stock': [500, 300, 400, 200],
'warehouse': ['WH1', 'WH2', 'WH1', 'WH3']
})
# Запись нескольких рабочих листов в один файл Excel
with pd.ExcelWriter('multi_sheet.xlsx', engine='openpyxl') as writer:
df_sales.to_excel(writer, sheet_name='Sales', index=False)
df_inventory.to_excel(writer, sheet_name='Inventory', index=False)
# Пример 2a: Чтение указанного рабочего листа (по имени)
df_sales_read = pd.read_excel('multi_sheet.xlsx', sheet_name='Sales')
print("Чтение листа Sales:")
print(df_sales_read)
print()
# Пример 2b: Чтение указанного листа (по индексу)
df_inv_read = pd.read_excel('multi_sheet.xlsx', sheet_name=1)
print("Чтение 2-го листа (индекс 1):")
print(df_inv_read)
print()
# Пример 2c: Чтение всех листов (возвращает словарь)
all_sheets = pd.read_excel('multi_sheet.xlsx', sheet_name=None)
print("Все имена листов:", list(all_sheets.keys()))
print("nПеребор всех листов:")
for sheet_name, df_sheet in all_sheets.items():
print(f"n--- {sheet_name} ---")
print(df_sheet)
Ожидаемый вывод:
读取 Sales 工作表: product quantity price 0 A 100 50 1 B 200 30 2 C 150 40 3 D 80 60 读取第2个工作表 (索引为1): product stock warehouse 0 A 500 WH1 1 B 300 WA2 2 C 400 WH1 3 D 200 WH3 所有工作表名称: ['Sales', 'Inventory'] 遍历所有工作表: --- Sales --- product quantity price ... --- Inventory --- product stock warehouse ...
Пояснение к коду:
sheet_nameПараметр sheet_name может принимать имена листов (строки) или индексы (целые числа).- Настройка
sheet_name=Noneпрочитает все листы и вернёт словарь, где ключи — имена листов, а значения — DataFrames. - Использование
pd.ExcelWriterупрощает запись нескольких листов.
Пример 3: Продвинутое использование — пользовательские столбцы и пропуск строк
В реальной работе файлы Excel могут иметь сложные форматы, требующие гибкой обработки.
Пример
# Создайте файл Excel со строкой заголовка и пустыми строками
# Первые несколько строк — метаданные; фактические данные начинаются со строки 4
data_with_header = """Данные сотрудников компании
Дата создания: 2024-01-01
Отдел: Технологический отдел
---
name,age,city,salary
Tom,28,Beijing,8000
Jerry,35,Shanghai,12000
"""
# Сначала создайте CSV, затем преобразуйте в Excel (имитация реального сценария)
import io
df_temp = pd.read_csv(io.StringIO(data_with_header.split('---')[1]))
df_temp.to_excel('complex_format.xlsx', index=False, engine='openpyxl')
# Пример 3a: Пропустить первые несколько строк, использовать N-ю строку в качестве имён столбцов
df_skip = pd.read_excel('complex_format.xlsx', header=3)
print("Пропустить первые 3 строки, использовать строку 4 в качестве имён столбцов:")
print(df_skip)
print()
# Пример 3b: Читать только указанные столбцы
df_cols = pd.read_excel('complex_format.xlsx', usecols=['name', 'salary'])
print("Читать только столбцы name и salary:")
print(df_cols)
print()
# Пример 3c: Читать только первые несколько строк
df_head = pd.read_excel('complex_format.xlsx', nrows=2)
print("Читать только первые 2 строки:")
print(df_head)
print()
# Пример 3d: Пользовательские имена столбцов
df_custom_names = pd.read_excel('complex_format.xlsx',
names=['Name', 'Age', 'City', 'Зарплата'],
header=0)
print("Пользовательские имена столбцов:")
print(df_custom_names)
Ожидаемый вывод:
跳过前3行,使用第4行作为列名:
name age city salary
0 Tom 28 Beijing 8000
1 Jerry 35 Shanghai 12000
只读取 name 和 salary 列:
name salary
0 Tom 8000
1 Jerry 12000
只读取前2行:
name age city salary
0 Tom 28 Beijing 8000
自定义列名:
姓名 年龄 城市 薪资
0 Tom 28 Beijing 8000
1 Jerry 35 Shanghai 12000
Пояснение к коду:
headerПараметр header указывает, какую строку использовать в качестве имен столбцов (отсчет начинается с 0).usecolsusecols позволяет указать, какие столбцы читать, поддерживая список имен столбцов или индексы столбцов.nrowsnrows ограничивает количество читаемых строк, что подходит для частичного чтения больших файлов.namesПараметр names позволяет настроить имена столбцов и переопределяет имена столбцов в исходном файле.
Примечания
- Для чтения формата .xlsx необходимо установить
openpyxl:pip install openpyxl。 - Для чтения формата .xls необходимо установить
xlrd:pip install xlrd(Примечание: xlrd 2.0+ больше не поддерживает файлы .xls). - Файлы Excel имеют ограничения по строкам и столбцам (максимум 1,048,576 строк и 16,384 столбцов); превышение этих ограничений приведёт к потере данных.
- При чтении больших файлов рассмотрите возможность использования
usecolsпараметра usecols, чтобы читать только нужные столбцы и повысить производительность. sheet_nameПараметр sheet_name поддерживает смешивание имён и индексов.
Итог
read_excel()Это основная функция в pandas для чтения файлов Excel, и она очень мощная. Она поддерживает чтение одного или нескольких листов и позволяет гибко обрабатывать файлы Excel различных форматов.
В практической работе по анализу данных файлы Excel являются одним из самых распространённых источников данных. Освоениеread_excel()различных вариантов использования параметров позволяет вам эффективно обрабатывать все виды данных Excel, подготавливая вас к последующей очистке и анализу данных. Читателям рекомендуется больше практиковаться, особенно в чтении нескольких листов и настройке параметров.
Pandas: общие функции