Категория

Pandas DataFrame в Excel на Python: Пошаговое руководство

2025-10-11 09:13:53 zaki zou

Рисунок 1 - DataFrame Pandas в Excel с использованием Spire.XLS

Работа с табличными данными �?обычная задача для разработчиков на Python, и Pandas является основной библиотекой для обработки и анализа данных. Часто разработчикам необходимо экспортировать DataFrame Pandas в Excel для отчетности, совместной работы в команде или дальнейшего анализа данных. Хотя Pandas предоставляет функцию to_excel для базового экспорта, создание профессиональных отчетов Excel с отформатированными заголовками, стилизованными ячейками, несколькими листами и диаграммами может быть сложной задачей.

В этом руководстве показано, как записать один или несколько DataFrame в Excel с использованием Spire.XLS for Python, многофункциональной библиотеки Excel, которая позволяет полностью настраивать файлы Excel непосредственно из Python без необходимости установки Microsoft Excel.

Содержание

Зачем использовать Spire.XLS для преобразования DataFrame Pandas в Excel

Хотя Pandas предоставляет базовые функции экспорта в Excel, Spire.XLS расширяет их, предоставляя полный контроль над созданием файлов Excel. Вместо того, чтобы просто записывать необработанные данные, разработчики могут:

  • Организовывать несколько DataFrame на отдельных листах в одной рабочей книге.
  • Настраивать заголовки, шрифты, цвета и форматирование ячеек для создания профессиональных макетов.
  • Автоподбор ширины столбцов и настраивать высоту строк для улучшения читаемости.
  • Добавлять диаграммы, формулы и другие функции Excel непосредственно из Python

Предварительные требования для преобразования DataFrame Pandas в Excel

Перед экспортом DataFrame Pandas в Excel убедитесь, что у вас установлены следующие необходимые библиотеки. Вы можете сделать это, выполнив следующую команду в терминале вашего проекта:

pip install pandas spire.xls

Эти библиотеки позволяют записывать DataFrame в Excel с несколькими листами, настраиваемым форматированием, привлекательными диаграммами и структурированными макетами.

Экспорт одного DataFrame Pandas в Excel с форматированием

Экспорт одного DataFrame в файл Excel �?наиболее распространенный сценарий. Используя Spire.XLS, вы можете не только экспортировать свой DataFrame, но и форматировать заголовки, стилизовать ячейки и добавлять диаграммы, чтобы ваш отчет выглядел профессионально.

Давайте пройдем этот процесс шаг за шагом.

Шаг 1: Создайте образец DataFrame

Сначала нам нужно создать DataFrame. Здесь у нас есть имена сотрудников, отделы и зарплаты. Вы, конечно, можете заменить это своим собственным набором данных.

import pandas as pd
from spire.xls import *

# Create a simple DataFrame
df = pd.DataFrame({
    'Employee': ['Alice', 'Bob', 'Charlie'],
    'Department': ['HR', 'Finance', 'IT'],
    'Salary': [5000, 6000, 7000]
})

Шаг 2: Создайте рабочую книгу и получите доступ к первому листу

Теперь мы создадим новую рабочую книгу Excel и подготовим первый рабочий лист. Давайте дадим ему осмысленное имя, чтобы его было легко понять.

# Create a new workbook
workbook = Workbook()
sheet = workbook.Worksheets[0]
sheet.Name = "Employee Data"

Шаг 3: Запишите заголовки столбцов

Мы запишем заголовки в первую строку, сделаем их жирными и добавим светло-серый фон, чтобы все выглядело аккуратно.

# Write column headers
for colIndex, colName in enumerate(df.columns, start=1):
    cell = sheet.Range[1, colIndex]
    cell.Text = colName
    cell.Style.Font.IsBold = True                # Make headers bold
    cell.Style.Color = Color.get_LightGray()     # Light gray background

Шаг 4: Запишите строки данных

Далее мы записываем каждую строку из DataFrame. Для чисел мы используем свойство NumberValue, чтобы Excel мог распознавать их для вычислений и диаграмм.

# Write data rows
for rowIndex, row in enumerate(df.values, start=2):
    for colIndex, value in enumerate(row, start=1):
        cell = sheet.Range[rowIndex, colIndex]
        if isinstance(value, (int, float)):
            cell.NumberValue = value
        else:
            cell.Text = str(value)

Шаг 5: Примените границы и автоподбор ширины столбцов

Чтобы придать вашему листу Excel отполированный, табличный вид, давайте добавим границы и автоматически настроим ширину столбцов.

# Apply borders and auto-fit columns
usedRange = sheet.AllocatedRange
usedRange.BorderAround(LineStyleType.Thin, Color.get_Black()) # Outside borders
usedRange.BorderInside(LineStyleType.Thin, Color.get_Black()) # Inside borders
usedRange.AutoFitColumns()

Шаг 6: Добавьте диаграмму для визуализации данных

Диаграммы помогают быстро понять тенденции. Здесь мы создадим гистограмму, сравнивающую зарплаты.

# Add a chart
chart = sheet.Charts.Add()
chart.ChartType = ExcelChartType.ColumnClustered
chart.DataRange = sheet.Range["A1:C4"]        # Data range for chart
chart.SeriesDataFromRange = False
chart.LeftColumn = 5                          # Chart position
chart.TopRow = 1
chart.RightColumn = 10
chart.BottomRow = 16
chart.ChartTitle = "Employee Salary Comparison"
chart.ChartTitleArea.Font.Size = 12
chart.ChartTitleArea.Font.IsBold = True

Шаг 7: Сохраните рабочую книгу

Наконец, сохраните рабочую книгу в нужном месте.

# Save the Excel file
workbook.SaveToFile("DataFrameWithChart.xlsx", ExcelVersion.Version2016)
workbook.Dispose()

Результат:

Файл Excel XLSX, созданный из DataFrame Pandas, выглядит следующим образом:

Рисунок 2 - Один DataFrame Pandas в Excel с форматированием и диаграммой

После создания файла Excel его можно дополнительно обработать, например, преобразовать в PDF для удобного обмена:

workbook.SaveToFile("ToPdf.pdf", FileFormat.PDF)

Для получения дополнительной информации см. руководство по преобразованию Excel в PDF на Python.

Преобразование нескольких DataFrame Pandas в один файл Excel

При создании отчетов Excel часто требуется размещать несколько наборов данных на отдельных листах. Используя Spire.XLS, каждый DataFrame Pandas можно записать на свой собственный рабочий лист, обеспечивая четкую организацию и легкий анализ связанных данных. Следующие шаги демонстрируют этот рабочий процесс.

Шаг 1: Создайте несколько образцов DataFrame

Перед экспортом мы создаем два отдельных DataFrame �?один для информации о сотрудниках, а другой для продуктов. Каждый DataFrame будет помещен на свой собственный лист Excel.

import pandas as pd
from spire.xls import *

# Sample DataFrames
df1 = pd.DataFrame({'Name': ['Alice', 'Bob'], 'Age': [25, 30]})
df2 = pd.DataFrame({'Product': ['Laptop', 'Phone'], 'Price': [1000, 500]})

# List of DataFrames with corresponding sheet names
dataframes = [
    (df1, "Employees"),
    (df2, "Products")
]

Здесь, dataframes �?это список кортежей, который сопоставляет каждый DataFrame с именем листа, на котором он должен появиться.

Шаг 2: Создайте новую рабочую книгу

Далее мы создаем новую рабочую книгу Excel для хранения всех DataFrame.

# Create a new workbook
workbook = Workbook()

Это инициализирует пустую рабочую книгу с тремя листами по умолчанию. Мы переименуем и заполним их на следующем шаге.

Шаг 3: Пройдитесь по каждому DataFrame и запишите его на свой лист

Вместо того, чтобы записывать каждый DataFrame по отдельности, мы можем пройтись по нашему списку и обработать их одинаково. Это уменьшает дублирование кода и упрощает обработку большего количества наборов данных.

for i, (df, sheet_name) in enumerate(dataframes):
    # Get or create a sheet
    if i < workbook.Worksheets.Count:
        sheet = workbook.Worksheets[i]
    else:
        sheet = workbook.Worksheets.Add()

    sheet.Name = sheet_name

    # Write headers with bold font and background color
    for colIndex, colName in enumerate(df.columns, start=1):
        cell = sheet.Range[1, colIndex]
        cell.Text = colName
        cell.Style.Font.IsBold = True
        cell.Style.Color = Color.get_LightGray()
        sheet.Columns[colIndex - 1].ColumnWidth = 15  # Set fixed column width

    # Write rows of data
    for rowIndex, row in enumerate(df.values, start=2):
        for colIndex, value in enumerate(row, start=1):
            cell = sheet.Range[rowIndex, colIndex]
            if isinstance(value, (int, float)):
                cell.NumberValue = value
            else:
                cell.Text = str(value)

    # Apply thin borders around the used range
    usedRange = sheet.AllocatedRange
    usedRange.BorderAround(LineStyleType.Thin, Color.get_Black()) # Outside borders
    usedRange.BorderInside(LineStyleType.Thin, Color.get_Black()) # Inside borders

Используя этот цикл, мы можем легко добавлять больше DataFrame в будущем, не переписывая тот же код.

Шаг 4: Сохраните рабочую книгу

Наконец, мы сохраняем файл Excel. Оба набора данных теперь аккуратно организованы в одном файле с отдельными листами, отформатированными заголовками и правильными границами.

# Save the workbook
workbook.SaveToFile("MultipleDataFrames.xlsx", ExcelVersion.Version2016)
workbook.Dispose()

Теперь ваш файл Excel готов к совместному использованию или дальнейшему анализу.

Результат:

Рисунок 3 - Несколько DataFrame Pandas в Excel

Файл MultipleDataFrames.xlsx содержит два листа:

  • Сотрудники (с именами и возрастом)
  • Продукты (с деталями и ценами на продукты)

Такая организация делает многостраничные файлы Excel чистыми и удобными для навигации.

Запись DataFrame Pandas в существующий файл Excel

В некоторых случаях вместо создания нового файла Excel может потребоваться записать DataFrame в существующую рабочую книгу. Этого можно легко достичь, загрузив существующую рабочую книгу, добавив новый лист или получив доступ к нужному листу и записав данные DataFrame, используя ту же логику.

Следующий код показывает, как записать DataFrame Pandas в существующий файл Excel:

import pandas as pd
from spire.xls import *

# Load an existing Excel file
workbook = Workbook()
workbook.LoadFromFile("MultipleDataFrames.xlsx")

# Create a new DataFrame to add
new_df = pd.DataFrame({
    'Region': ['North', 'South', 'East', 'West'],
    'Sales': [12000, 15000, 13000, 11000]
})

# Add a new worksheet for the new DataFrame
new_sheet = workbook.Worksheets.Add("Regional Sales")

# Write headers
for colIndex, colName in enumerate(new_df.columns, start=1):
    cell = new_sheet.Range[1, colIndex]
    cell.Text = colName
    cell.Style.Font.IsBold = True
    cell.Style.Color = Color.get_LightGray()
    new_sheet.Columns[colIndex - 1].ColumnWidth = 15

# Write data rows
for rowIndex, row in enumerate(new_df.values, start=2):
    for colIndex, value in enumerate(row, start=1):
        cell = new_sheet.Range[rowIndex, colIndex]
        if isinstance(value, (int, float)):
            cell.NumberValue = value
        else:
            cell.Text = str(value)

# Save the changes
workbook.SaveToFile("DataFrameToExistingWorkbook.xlsx", ExcelVersion.Version2016)
workbook.Dispose()

Рисунок 4 - Запись DataFrame Pandas в существующий файл Excel

Расширенная настройка для экспорта DataFrame Pandas в Excel

Помимо базового экспорта, DataFrame Pandas можно настраивать в Excel для удовлетворения конкретных требований к отчетности. Расширенные параметры, такие как выбор определенных столбцов и включение или исключение индекса, позволяют создавать более чистые, читаемые и профессиональные файлы Excel. Следующие примеры демонстрируют, как применять эти настройки.

1. Выберите определенные столбцы

Иногда может не потребоваться экспортировать все столбцы из DataFrame. Выбирая только релевантные столбцы, вы можете сделать свои отчеты Excel краткими и сфокусированными. Следующий код демонстрирует, как перебирать выбранные столбцы при записи заголовков и строк:

import pandas as pd
from spire.xls import *

# Create a DataFrame
df = pd.DataFrame({
    'Employee': ['Alice', 'Bob', 'Charlie'],
    'Department': ['HR', 'Finance', 'IT'],
    'Salary': [5000, 6000, 7000]
})

# Set the columns to export
columns_to_export = ['Employee', 'Department']

# Create a new workbook and access the first sheet
workbook = Workbook()
sheet = workbook.Worksheets[0]

# Write headers
for colIndex, colName in enumerate(columns_to_export, start=1):
    sheet.Range[1, colIndex].Text = colName

# Write rows
for rowIndex, row in enumerate(df[columns_to_export].values, start=2):
    for colIndex, value in enumerate(row, start=1):
        sheet.Range[rowIndex, colIndex].Text = value

# Save the Excel file
workbook.SaveToFile("select_columns.xlsx")
workbook.Dispose()

2. Включить или исключить индекс

По умолчанию индекс DataFrame не включается в экспорт. Если для вашего отчета требуются идентификаторы строк или числовые индексы, вы можете добавить их вручную. Этот фрагмент кода показывает, как включить индекс вместе с выбранными столбцами:

# Write header for index
sheet.Range[1, 1].Text = "Index"

# Write index values (numeric)
for rowIndex, idx in enumerate(df.index, start=2):
    sheet.Range[rowIndex, 1].NumberValue = idx  # Use NumberValue for numeric

# Write headers for other columns
for colIndex, colName in enumerate(columns_to_export, start=2):
    sheet.Range[1, colIndex].Text = colName

# Write the data rows
for rowIndex, row in enumerate(df[columns_to_export].values, start=2):
    for colIndex, value in enumerate(row, start=2):
        if isinstance(value, (int, float)):
            sheet.Range[rowIndex, colIndex].NumberValue = value
        else:
            sheet.Range[rowIndex, colIndex].Text = str(value)

# Save the workbook
workbook.SaveToFile("include_index.xlsx", ExcelVersion.Version2016)
workbook.Dispose()

Заключение

Экспорт DataFrame Pandas в Excel прост, но создание профессиональных, хорошо отформатированных отчетов требует дополнительного контроля. Используя Pandas для подготовки данных и Spire.XLS for Python для создания и форматирования файлов Excel, вы можете создавать структурированные, читаемые и визуально организованные рабочие книги. Этот подход работает как для отдельных DataFrame, так и для нескольких наборов данных, что упрощает создание отчетов Excel, готовых к анализу, совместному использованию или дальнейшей обработке.

Часто задаваемые вопросы

В1: Как я могу экспортировать DataFrame Pandas в Excel на Python?

О1: Вы можете использовать библиотеки, такие как Spire.XLS, для записи DataFrame в файл Excel. Это позволяет переносить табличные данные из Python в Excel, сохраняя контроль над форматированием и макетом.

В2: Могу ли я экспортировать более одного DataFrame в один файл Excel?

О2: Да. Несколько DataFrame можно записать на отдельные листы в одной рабочей книге. Это помогает хранить связанные наборы данных в одном файле.

В3: Как добавить заголовки и отформатировать ячейки в Excel из DataFrame?

О3: Заголовки можно сделать жирными, цветными или с фиксированной шириной. Числовые значения могут храниться как числа, а текст �?как строки. Форматирование улучшает читаемость отчетов.

В4: Возможно ли включить диаграммы в экспортированный файл Excel?

О4: Да. Диаграммы, такие как гистограммы или линейные диаграммы, могут быть добавлены на основе данных вашего DataFrame для визуализации тенденций или сравнений.

В5: Нужно ли мне устанавливать Microsoft Excel для экспорта DataFrame?

О5: Не обязательно. Некоторые библиотеки, включая Spire.XLS, могут создавать и форматировать файлы Excel полностью в Python, не требуя установки Excel.

Смотрите также