[Python] Анализ и реализация кода функций read_excel() и to_excel() в pandas
[Python] Анализ и реализация кода функций read_excel() и to_excel() в pandas

Содержание этой статьи

  • Предисловие
  • 1. Знакомство с функцией read_excel()
    • 1.1 Основной синтаксис
  • 2. Знакомство с функцией to_excel()
  • 3. Кодовые случаи
    • Чтение и обработка данных Excel
    • Сценарий 2. Объединение нескольких листов Excel
    • Записать отформатированный файл Excel
  • 4. Практика использования данных Read_excel()
    • прототип функции
    • sheetname
    • header
    • skiprows
    • skip_footer
    • index_col
    • names
  • 5. Практика работы с данными To_excel()
    • excel_writer
    • sheet_name
    • na_rep
    • colums
    • header
    • index
  • Подвести итог

Предисловие

Pandas — мощная библиотека для анализа и манипулирования данными на Python. Она предоставляет множество удобных функций для обработки данных в различных форматах.

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

Pandas предоставляет функцию read_excel() для чтения файлов Excel и функцию to_excel() для записи данных в Excel.

В этой статье будет подробно проанализировано использование этих двух функций и показано их применение в различных сценариях на примерах кода.

1. Знакомство с функцией read_excel()

Pandas — это библиотека анализа и манипулирования данными с открытым исходным кодом, которая обеспечивает быстрые, гибкие и выразительные структуры данных, призванные упростить очистку и анализ данных. Pandas построен на NumPy и поэтому легко интегрируется с NumPy.

Функция read_excel() используется для чтения файлов Excel и преобразования их в объекты Pandas DataFrame. Это основа работы с данными Excel.

1.1 Основной синтаксис

Язык кода:javascript
копировать
pandas.read_excel(io, sheet_name=0, header=0, names=None, 
index_col=None, usecols=None, 
dtype=None, engine=None, converters=None, true_values=None, 
false_values=None, skiprows=None, nrows=None, na_values=None, 
keep_default_na=True, verbose=True, parse_dates=False, 
date_parser=None, thousands=None, comment=None, 
skipfooter=0, convert_float=True, mangle_dupe_cols=True, **kwds)

Часто используемые описания параметров:

Язык кода:javascript
копировать
io : string, path object ; excel путь.
sheetname : string, int, mixed list of strings/ints, or None, default 0 Чтобы вернуть несколько таблиц, используйте имя_листа=[0,1]. Если имя_листа=Нет, верните всю таблицу. Примечание. int/string возвращает кадр данных, а none и list возвращают кадр данных.
header : int, list of ints, default 0 Укажите строку имени столбца, значение по умолчанию — 0, то есть возьмите первую строку, данные — это данные под строкой имени столбца. Если данные не содержат имена столбцов, установите header = None
skiprows : list-like,Rows to skip at the beginning,Пропустить указанное количество строк данных
skip_footer : int,default 0, Пропустить отсчет строк int с конца данных
index_col : int, list of ints, default NoneУкажите столбец в качестве индексного столбца, вы также можете использовать u «строки».
names : array-like, default None, Укажите имя столбца.

Пример кода

Язык кода:javascript
копировать
import pandas as pd

# Чтение файла Excel
df = pd.read_excel('path_to_your_excel_file.xlsx')

# Читать только определенные столбцы
df = pd.read_excel('path_to_your_excel_file.xlsx', usecols=['Column1', 'Column2'])

2. Знакомство с функцией to_excel()

Функция to_excel() используется для записи объектов DataFrame в файлы Excel. Вы можете управлять форматом вывода, именем листа и т. д.

базовая грамматика

Язык кода:javascript
копировать
DataFrame.to_excel(io, excel_writer, sheet_name='Sheet1',
na_rep='', float_format=None, columns=None, header=True, 
index=True, index_label=None, startrow=0, startcol=0, 
engine=None, merge_cells=True, encoding=None, 
inf_rep='inf', verbose=True, freeze_panes=None, 
storage_options=None)

Часто используемые описания параметров:

Язык кода:javascript
копировать
io: Путь или файловый объект файла Excel.
sheet_name: Имя листа для записи.
na_rep: Представление отсутствующих значений, которое по умолчанию представляет собой пустую строку.
columns: Укажите столбцы для записи.
header: Записывать ли имена столбцов.
index: Записывать ли в index.

Пример кода

Язык кода:javascript
копировать
# Записать DataFrame в файл Excel
df.to_excel('output_excel_file.xlsx', sheet_name='Sheet1')

# Пишите только определенные столбцы
df.to_excel('output_excel_file.xlsx', columns=['Column1', 'Column2'])

3. Кодовые случаи

Чтение и обработка данных Excel

Язык кода:javascript
копировать
# Чтение файла Excel
df = pd.read_excel('data.xlsx')

# Очистка данных: удаление повторяющихся записей
df = df.drop_duplicates()

# Запишите обработанные данные обратно в Excel.
df.to_excel('cleaned_data.xlsx')

Сценарий 2. Объединение нескольких листов Excel

Язык кода:javascript
копировать
# Чтение файла Все листы в Excel
xls = pd.ExcelFile('multi_sheets.xlsx')

# Перебирайте рабочий лист и читайте данные.
dfs = {sheet: xls.parse(sheet) for sheet in xls.sheet_names}

# данные для объединения всех листов
combined_df = pd.concat(dfs.values(), ignore_index=True)

# Запишите объединенные данные в новый файл Excel.
combined_df.to_excel('combined_data.xlsx', index=False)

Записать отформатированный файл Excel

Язык кода:javascript
копировать
# Запишите в файл Excel, укажите имена столбцов и не записывайте индексы.
df.to_excel('formatted_data.xlsx', index=False, header=True, columns=['Column1', 'Column2'])

# Используйте ExcelWriter для форматирования листов
with pd.ExcelWriter('styled_data.xlsx', engine='xlsxwriter') as writer:
    df.to_excel(writer, sheet_name='Sheet1', startrow=2, startcol=3, index=False)
    workbook  = writer.book
    worksheet = writer.sheets['Sheet1']
    worksheet.set_column('A:D', 15)  # Установить ширину столбца

4. Практика использования данных Read_excel()

Предположим, у нас есть следующий источник данных:

Язык кода:javascript
копировать
sheet1:
ID  NUM-1   NUM-2   NUM-3
36901   142 168 661
36902   78  521 602
36903   144 600 521
36904   95  457 468
36905   69  596 695

sheet2:
ID  NUM-1   NUM-2   NUM-3
36906   190 527 691
36907   101 403 470

прототип функции

Язык кода:javascript
копировать
basestation ="F://pythonBook_PyPDAM/data/test.xls"
data = pd.read_excel(basestation)
print data

Вывод кадра данных

Язык кода:javascript
копировать
      ID  NUM-1  NUM-2  NUM-3
0  36901    142    168    661
1  36902     78    521    602
2  36903    144    600    521
3  36904     95    457    468
4  36905     69    596    695

sheetname

Параметр имя_листа: используйте имя_листа=[0,1] для возврата нескольких листов. Если имя_листа=Нет, верните весь лист.

Примечание. int/string возвращает кадр данных, а none и list возвращают кадр данных.

Язык кода:javascript
копировать
data_1 = pd.read_excel(basestation,sheetname=[0,1])
print data_1
print type(data_1)

Вывод: dict dataframe

Язык кода:javascript
копировать
OrderedDict([(0, ID  NUM-1  NUM-2  NUM-3
0  36901    142    168    661
1  36902     78    521    602
2  36903    144    600    521
3  36904     95    457    468
4  36905     69    596    695), 
(1,       ID  NUM-1  NUM-2  NUM-3
0  36906    190    527    691
1  36907    101    403    470)])

header

Укажите строку имени столбца, значение по умолчанию — 0, то есть возьмите первую строку, а данные — это данные под строкой имени столбца. Если данные не содержат имен столбцов, установите заголовок = None. Обратите внимание, что есть также. строка с именами столбцов.

Язык кода:javascript
копировать
data = pd.read_excel(basestation,header=None)
print data
Выход:
       0      1      2      3
0     ID  NUM-1  NUM-2  NUM-3
1  36901    142    168    661
2  36902     78    521    602
3  36903    144    600    521
4  36904     95    457    468
5  36905     69    596    695

data = pd.read_excel(basestation,header=[3])
print data
Выход:
   36903  144    600    521  
0  36904     95    457    468
1  36905     69    596    695

skiprows

Пропустить указанное количество строк данных

Язык кода:javascript
копировать
data = pd.read_excel(basestation,skiprows = [1])
print data
Выход:
      ID  NUM-1  NUM-2  NUM-3
0  36902     78    521    602
1  36903    144    600    521
2  36904     95    457    468
3  36905     69    596    695

skip_footer

Опустить данные int строки, считая с конца

Язык кода:javascript
копировать
data = pd.read_excel(basestation, skip_footer=3)
print data
Выход:
      ID  NUM-1  NUM-2  NUM-3
0  36901    142    168    661
1  36902     78    521    602

index_col

Укажите столбец в качестве индексного столбца, вы также можете использовать u «строки».

Язык кода:javascript
копировать
data = pd.read_excel(basestation, index_col="NUM-3")
print data
Выход:
          ID  NUM-1  NUM-2
NUM-3                     
661    36901    142    168
602    36902     78    521
521    36903    144    600
468    36904     95    457
695    36905     69    596

names

Укажите имя столбца.

Язык кода:javascript
копировать
data = pd.read_excel(basestation,names=["a","b","c","e"])
print data
       a    b    c    e
0  36901  142  168  661
1  36902   78  521  602
2  36903  144  600  521
3  36904   95  457  468
4  36905   69  596  695

5. Практика работы с данными To_excel()

источник данных

Язык кода:javascript
копировать
    ID  NUM-1   NUM-2   NUM-3
0   36901   142 168 661
1   36902   78  521 602
2   36903   144 600 521
3   36904   95  457 468
4   36905   69  596 695
5   36906   165 453 нагрузкаданные:
basestation ="F://python/data/test.xls"
basestation_end ="F://python/data/test_end.xls"
data = pd.read_excel(basestation)

excel_writer

Параметр excel_writer, путь вывода.

Язык кода:javascript
копировать
data.to_excel(basestation_end)
Выход:
    ID  NUM-1   NUM-2   NUM-3
0   36901   142 168 661
1   36902   78  521 602
2   36903   144 600 521
3   36904   95  457 468
4   36905   69  596 695
5   36906   165 453 

sheet_name

Сохраните данные на странице листа Excel.

Язык кода:javascript
копировать
data.to_excel(basestation_end,sheet_name="sheet2")

na_rep

Не заполнено значение

Язык кода:javascript
копировать
data.to_excel(basestation_end,na_rep="NULL")
Выход:
    ID  NUM-1   NUM-2   NUM-3
0   36901   142 168 661
1   36902   78  521 602
2   36903   144 600 521
3   36904   95  457 468
4   36905   69  596 695
5   36906   165 453 NULL

colums

последовательность, необязательно, Столбцы для записи выбирают выходные столбцы.

Язык кода:javascript
копировать
data.to_excel(basestation_end,columns=["ID"])
выход
    ID
0   36901
1   36902
2   36903
3   36904
4   36905
5   36906

header

логическое значение или список строк, по умолчанию — True, вы можете использовать список для присвоения имени столбцу. header = False не выводит заголовок.

Язык кода:javascript
копировать
data.to_excel(basestation_end,header=["a","b","c","d"])
Выход:
    a   b   c   d
0   36901   142 168 661
1   36902   78  521 602
2   36903   144 600 521
3   36904   95  457 468
4   36905   69  596 695
5   36906   165 453 

data.to_excel(basestation_end,header=False,columns=["ID"])
header = False Тогда не ломай голову
Выход:
0   36901
1   36902
2   36903
3   36904
4   36905
5   36906

index

index: логическое значение, имена строк True Write по умолчанию (индекс) По умолчанию установлено значение True, и индекс отображается. Если index=False, индекс строки (имя) не отображается.

index_label: строка или последовательность, по умолчанию Нет. Задайте имя столбца индекса.

Язык кода:javascript
копировать
data.to_excel(basestation_end,index=False)
Выход:
ID  NUM-1   NUM-2   NUM-3
36901   142 168 661
36902   78  521 602
36903   144 600 521
36904   95  457 468
36905   69  596 695
36906   165 453 

data.to_excel(basestation_end,index_label=["f"])
Выход:
f   ID  NUM-1   NUM-2   NUM-3
0   36901   142 168 661
1   36902   78  521 602
2   36903   144 600 521
3   36904   95  457 468
4   36905   69  596 695
5   36906   165 453 
boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода