Давайте рассмотрим часто встречающуюся задачу в Excel, а именно добавление итогов по строкам и по столбцам. К примеру, у нас есть данные по продажам за несколько месяцев (январь, февраль, март) по пяти магазинам, нам надо узнать сколько было продаж в целом за каждый месяц и сколько продал каждый магазин за квартал. В Excel мы бы воспользовались функцией Сумм(), в Pandas же эта процедура выглядит немного по другому, давайте разбираться по шагам.
Во первых в Excel файле создадим лист "Данные", который будет содержать следующие значения:
Сохраняем файл с названием "Excel_Python-4.xlsx". Далее открываем Spyder, создаем новый скрипт и туда вносим следующий код для чтения данных их Excel файла в Dataframe Pandas:
data_pd['Итого'] = data_pd['Январь'] + data_pd['Февраль'] + data_pd['Март']
Обратите внимание, что в Excel файле нам потребовалось бы внести формулу Сумм () и протянуть ее во все ячейки, а в Python достаточно одной строки!
data_pd = data_pd.append({'Магазин':'Итого', 'Город':'', 'Январь': data_pd['Январь'].sum(),'Февраль': data_pd['Февраль'].sum(), 'Март': data_pd['Март'].sum(), 'Итого': data_pd['Итого'].sum()}, ignore_index=True)
Теперь нам осталось собрать весь код в один скрипт:
Если Вы все сделали верно, то в Excel файле должен был появиться столбец "Итого" и строка "Итого".
Во первых в Excel файле создадим лист "Данные", который будет содержать следующие значения:
Сохраняем файл с названием "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:
Отправить комментарий
Спасибо за комментарий.