Функция Pandas pd.read_excel()

Python math 模块Pandas: общие функции


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ОписаниеЗначение по умолчанию
iostr, ExcelFile, объект пути, файлоподобный объектПуть к файлу Excel или объект ExcelFileОбязательный
sheet_namestr, int, list, NoneИмя или индекс листа для чтения; None читает все листы0
headerint, список intНомер строки, используемой в качестве имён столбцов; 0 означает первую строку0
namesспископодобныйСписок пользовательских имён столбцовОтсутствует
index_colint, strСтолбец для использования в качестве индекса строкОтсутствует
usecolsint, str, listЧитать только указанные столбцыОтсутствует
dtypedictТип данных для указанных столбцовОтсутствует
skiprowsспископодобный, intПропустить указанные строкиОтсутствует
nrowsintЧитать только первые n строкОтсутствует

Возвращаемое значение

  • Тип возвращаемого значения:pd.DataFrameилиdict DataFrame-ов
  • Когдаsheet_nameЕсли это один лист, возвращает DataFrame.
  • Когдаsheet_nameЕсли это None или файл содержит несколько листов, возвращает словарь, где ключами являются имена листов, а значениями — соответствующие DataFrame.

Примеры

На следующих примерах вы всесторонне освоитеread_excel()различные варианты использования.

Пример 1: Чтение локального файла Excel

Сначала создайте и прочитайте простой файл Excel.

Пример

import pandas as pd
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()поддерживая гибкое чтение указанных рабочих листов или всех рабочих листов.

h2 class="example">Пример
import pandas as pd

# Создание файла 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 могут иметь сложные форматы, требующие гибкой обработки.

Пример

import pandas as pd

# Создайте файл 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, подготавливая вас к последующей очистке и анализу данных. Читателям рекомендуется больше практиковаться, особенно в чтении нескольких листов и настройке параметров.

Python math 模块Pandas: общие функции

Другие расширения