Технологии Blogger.

Excel и Python. Добавление итого по строкам и столбцам в Pandas.

Давайте рассмотрим часто встречающуюся задачу в Excel, а именно добавление итогов по строкам и по столбцам. К примеру, у нас есть данные по продажам за несколько месяцев (январь, февраль, март) по пяти магазинам, нам надо узнать сколько было продаж в целом за каждый месяц и сколько продал каждый магазин за квартал. В Excel мы бы воспользовались функцией Сумм(), в Pandas же эта процедура выглядит немного по другому, давайте разбираться по шагам.

Excel и Python. Добавление итого по строкам и столбцам в Pandas.

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

Excel и Python. Добавление итого по строкам и столбцам в Pandas.

Сохраняем файл с названием "Excel_Python-4.xlsx". Далее открываем Spyder, создаем новый скрипт и туда вносим следующий код для чтения данных их Excel файла в Dataframe Pandas:
import xlwings as xw
import pandas as pd

wb=xw.Book('Excel_Python-4.xlsx')
data_excel = wb.sheets['Данные']
data_pd = data_excel.range('A1:E6').options(pd.DataFrame, header = 1, index = False).value

Добавляем итоговый столбец

Для того, что бы добавить итоговый столбец в Pandas нам надо создать новый столбец с названием "Итого" и внести в него формулу суммы значений из столбцов "Январь", "Февраль" и "Март". На языке Python это выглядит следующим образом:

data_pd['Итого'] = data_pd['Январь'] + data_pd['Февраль'] + data_pd['Март']

Обратите внимание, что в Excel файле нам потребовалось бы внести формулу Сумм () и протянуть ее во все ячейки, а в Python достаточно одной строки!

Добавляем итоговую строку

Для того, что бы добавить итоговую строку в Pandas Dataframe нам необходимо будет создать новую строку, куда поместить ее название "Итого" и значения сумм каждого из столбцов:

data_pd = data_pd.append({'Магазин':'Итого', 'Город':'', 'Январь': data_pd['Январь'].sum(),'Февраль': data_pd['Февраль'].sum(), 'Март': data_pd['Март'].sum(), 'Итого': data_pd['Итого'].sum()}, ignore_index=True)

Теперь нам осталось собрать весь код в один скрипт:
import xlwings as xw
import pandas as pd

wb=xw.Book('Excel_Python-4.xlsx')
data_excel = wb.sheets['Данные']
data_pd = data_excel.range('A1:E6').options(pd.DataFrame, header = 1, index = False).value
data_pd['Итого'] = data_pd['Январь'] + data_pd['Февраль'] + data_pd['Март']
data_pd = data_pd.append({'Магазин':'Итого', 'Город':'', 'Январь': data_pd['Январь'].sum(),'Февраль': data_pd['Февраль'].sum(), 'Март': data_pd['Март'].sum(), 'Итого': data_pd['Итого'].sum()}, ignore_index=True)
data_excel.range('A1').options(index = False).value = data_pd

Если Вы все сделали верно, то в Excel файле должен был появиться столбец "Итого" и строка "Итого".

0 comments:

Отправить комментарий

Спасибо за комментарий.