Содержание этой статьи
Pandas — мощная библиотека для анализа и манипулирования данными на Python. Она предоставляет множество удобных функций для обработки данных в различных форматах.
В качестве распространенного формата хранения данных файлы Excel часто используются при обработке данных.
Pandas предоставляет функцию read_excel() для чтения файлов Excel и функцию to_excel() для записи данных в Excel.
В этой статье будет подробно проанализировано использование этих двух функций и показано их применение в различных сценариях на примерах кода.
Pandas — это библиотека анализа и манипулирования данными с открытым исходным кодом, которая обеспечивает быстрые, гибкие и выразительные структуры данных, призванные упростить очистку и анализ данных. Pandas построен на NumPy и поэтому легко интегрируется с NumPy.
Функция read_excel() используется для чтения файлов Excel и преобразования их в объекты Pandas DataFrame. Это основа работы с данными Excel.
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)
Часто используемые описания параметров:
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, Укажите имя столбца.
Пример кода
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'])
Функция to_excel() используется для записи объектов DataFrame в файлы Excel. Вы можете управлять форматом вывода, именем листа и т. д.
базовая грамматика
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)
Часто используемые описания параметров:
io: Путь или файловый объект файла Excel.
sheet_name: Имя листа для записи.
na_rep: Представление отсутствующих значений, которое по умолчанию представляет собой пустую строку.
columns: Укажите столбцы для записи.
header: Записывать ли имена столбцов.
index: Записывать ли в index.
Пример кода
# Записать DataFrame в файл Excel
df.to_excel('output_excel_file.xlsx', sheet_name='Sheet1')
# Пишите только определенные столбцы
df.to_excel('output_excel_file.xlsx', columns=['Column1', 'Column2'])
# Чтение файла Excel
df = pd.read_excel('data.xlsx')
# Очистка данных: удаление повторяющихся записей
df = df.drop_duplicates()
# Запишите обработанные данные обратно в Excel.
df.to_excel('cleaned_data.xlsx')
# Чтение файла Все листы в 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, укажите имена столбцов и не записывайте индексы.
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) # Установить ширину столбца
Предположим, у нас есть следующий источник данных:
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
basestation ="F://pythonBook_PyPDAM/data/test.xls"
data = pd.read_excel(basestation)
print data
Вывод кадра данных
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
Параметр имя_листа: используйте имя_листа=[0,1] для возврата нескольких листов. Если имя_листа=Нет, верните весь лист.
Примечание. int/string возвращает кадр данных, а none и list возвращают кадр данных.
data_1 = pd.read_excel(basestation,sheetname=[0,1])
print data_1
print type(data_1)
Вывод: dict dataframe
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)])
Укажите строку имени столбца, значение по умолчанию — 0, то есть возьмите первую строку, а данные — это данные под строкой имени столбца. Если данные не содержат имен столбцов, установите заголовок = None. Обратите внимание, что есть также. строка с именами столбцов.
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
Пропустить указанное количество строк данных
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
Опустить данные int строки, считая с конца
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
Укажите столбец в качестве индексного столбца, вы также можете использовать u «строки».
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
Укажите имя столбца.
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
источник данных
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, путь вывода.
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
Сохраните данные на странице листа Excel.
data.to_excel(basestation_end,sheet_name="sheet2")
Не заполнено значение
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
последовательность, необязательно, Столбцы для записи выбирают выходные столбцы.
data.to_excel(basestation_end,columns=["ID"])
выход
ID
0 36901
1 36902
2 36903
3 36904
4 36905
5 36906
логическое значение или список строк, по умолчанию — True, вы можете использовать список для присвоения имени столбцу. header = False не выводит заголовок.
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: логическое значение, имена строк True Write по умолчанию (индекс) По умолчанию установлено значение True, и индекс отображается. Если index=False, индекс строки (имя) не отображается.
index_label: строка или последовательность, по умолчанию Нет. Задайте имя столбца индекса.
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