Здравствуйте! Начал изучать Pythone и для наглядности решил попрактиковать взаимодействия с Excel, ваше Видео как нельзя кстати! Можете записать ещё видео с практическими примерами? как вариант, вытаскивание данных из ячеек Excel, сортировка их по условию по условию, далее переносим полученные результаты в соседние ячейки Excel.
Недавно изучал данную библиотеку и совместил ее с PyQT5. То что я сейчас напишу будет полезно знать всем. Если обращаться к ячейке не по такому стилю: sheet[ "A1" ], а по такому sheet[ 1 ][ 0 ], то в случает если в ячейке не будет значения, то прога крашится, так как python думает, что мы вышли за пределы массива, но есть одна хитрость, можно сделать так: sheet[sheet[ 1 ][ 0 ].coordinate], sheet[ 1 ][ 0 ].coordinate возвращает нам координаты ячейки в стиле excel, , и в таком случае даже если в ячейки нет элемента, то исключения не возникнет, нам просто вернеться None. Вы можете спросить, а зачем нам такой стиль, я отвечу, чтобы разложить данные из таблицы с помощью вложенного цикла, количество строк и столбцов можно узнать с помощью методов max_row и max_column. Пример: for i in range(1, sheet.max_row + 1) # Начинаем c 1 строки, так как если начнем с 0 вылетит ошибка for j in range(0, sheet.max_column) # Проходимся по кол-ву столбцов print(sheet[sheet[ i ][ j ].coordinate], end=" ") # Выводим в консоль каждый элемент в каждой строке print() # Перенос на новую строку
Да, в планах было как раз подружить парсинг xlsx с оконным интерфейсом, но пока планы сдвигаются. За подсказку sheet[0][1].сoordinate спасибо, парсим с учениками очень громоздкий файл, вечно чего-то не хватает.
@@ITGeneration2020 Да я сам еще ученик, подумал, что те кто изучают данную библиотеку могут не знать об этом, надеюсь кому то пригодится, всем мирного неба над головой
Интересно посмотреть по фильтрации данных, выводу и суммированию отдельных ячеек, удаление дубликатов, форматирование ячеек на выходе в файле, т.е. в таком ключе. Пока пробовал в пандас и формат csv, почему-то именно так посоветовали. Но наверное можно и без пандас?
Вообще пандас - лучший выбор, там много готовых функций, которые пришлось бы писать самим. Может, объединить усилия пандас и openpyxls, он больше для работы с файлами предназначен.
@@ITGeneration2020 с пандас я уже сделал, но в "дедах программистах" Написали, типа такое циклами проще... Вот и подумалось, реально ли? Я только изучаю питон, и многого не знаю🤷🏼♂️
Однозначно спасибо!!! Планировал сегодня снять продолжение про запись в таблицу, даже уже было подготовился, написал пару скриптов по работе, но так и не дошли руки. Лайк если интересно!)))
ДД. у меня вопрос: если например стоит задача обработать/проанализировать некий массив данных excel. пытаюсь сделать это через макрос VBA, но скорость как-то не устраивает. Вопрос: если тот же алгоритм реализовать через Питон, то будет ли ускорение работы по сравнению с VBA?
Благодарю за интересный материал. Есть только вопрос, можно ли сделать так, чтобы пользователь водил артикул(который условно находится в ячейке A2), а ему выводилась информация из ячейки B2 C2 D2)?
1) Создаешь список из колонки А; 2) затем ищешь артикул в списке 3) запоминаешь индекс 4) по индексу выводишь значение из соседних ячеек name_user = input() if name_user in spisok_1: print(sheet["N" + str(spisok_1.index(name_user))].value)
А сможешь написать парсер для телеграмма? Что бы он парсил названия чатов либо ссылки на чаты по заданным тематикам? Подскажи как, а лучше покажи)) с меня лайк и подписка)
Народ по старинке делает расчеты вручную.Автоматизацией занимаются сейчас не все,а по старинке делают расчеты вручную,за несколько минут или часов.Зависит от данных и много других факторов. Когда таким людям предлагаешь автоматизировать расчеты-отказываются.Их право конечно,но это мягко говоря странно.И вообще-очень глупо отказываться от того,что тебя улучшает,хотя-каждому свое..... Даже во многих бытовых вопросах пытаюсь автоматизировать то,что мне нужно.Это я говорю для тех,кто считает мол,я не программист,зачем я буду заниматься кодом и темболее автоматизировать что то.Даже для решения бытовых вопросов многих пригодятся такие коды.Тот же расчет семейного бюджета например (первое,что пришло в голову).
@@ITGeneration2020 И еще я лично знаю людей,которые даже компа никонда не видели,даже почту отправлять не умеют,про то,чтобы уметь что то искать в интернете или вообше программировать-как говорится вообще молчу.....это при том,что мы живем во время очень быстрого развития сферы it.И такие люди часто учат жизни еще,хотя сами базы в айти не знают,в наше время это как ложку держать.....
а как сделать следующее: указать путь к файлам Excel и чтобы на выходе получили список вида: название файла, название листа внутри файла и так по всем файлам и листам.. ??
вы имеете в виду создать переменную с именем a1? или любую другую со значением, взятым из ячейки A1? Если последнее, то лист рассматривается как словарь, sheet['A1'] - мы обращаемся по адресу ячейки к содержимому. Нужно погрузиться в словари, они очень важны в питоне (да и в других языках). Весь питон по сути - один большой словарь.
Взять значения по двум параметрам, например, взять из таблицы показатель адиабаты при определенном давлении (столбец слева) и определенной температуре( строка сверху), которые задаются вручную.
допустим числа необходимо сравнить, у меня почему то ошибка(как исправить подскажите . . . в d1 D числа типа float for i in range(2, 6418): d1 = sheet['C'+str(i)].value D = sheet['D'+str(i)].value if d1 > D: print(sheet['A'+str(i)].value) TypeError: '>' not supported between instances of 'NoneType' and 'float'
здравствуйте работаю с excel, попытался написать прогу с поиском аналога через вложенный цикл, но что то идет не так и в 2 цикли все значения None. Не пойму что не так . . . from openpyxl import load_workbook fn = 'с.xlsx' book = load_workbook(fn, data_only=True) sheet = (book['Лист1']) maxrows = sheet.max_row for i in range(2, maxrows+1): if not sheet['A'+str(i)].value: #если пустое пропустить continue ID_PST = sheet['A'+str(i)].value stati = sheet['B'+str(i)].value d1 = sheet['C'+str(i)].value D = sheet['D'+str(i)].value H = sheet['E'+str(i)].value tip = sheet['F'+str(i)].value teflon = False if 'V' in str(tip): teflon = True # print(ID_PST,stati, d1, D, H, tip, teflon )
for j in range(2, maxrows+1): if sheet['A'+str(i)].value == sheet['A'+str(j)].value: continue ID_PST_2 = sheet['A'+str(j)].value stati_2 = sheet['B'+str(j)].value d1_2 = sheet['C'+str(j)].value D_2 = sheet['D'+str(j)].value H_2 = sheet['E'+str(j)].value tip_2 = sheet['F'+str(j)].value teflon_2 = False if 'V' in str(tip_2): teflon_2 = True print(ID_PST_2, stati_2, d1_2, D_2, H_2, tip_2) # if (d1-0.2)
хотел узнать можно ли убирать пробелы, если можно то как? в самом excel файле есть пробелы, их надо убрать именно через пайтон ищу уже второй день ответ
Где это на практике может пригодиться? Почему нельзя просто открыть файл Exel и посмотреть на эти данные, а не выводить в программе наугад или постоянно заглядывая в тот же Exel файл. Кто-нибудь объясните!!!
Отличный вопрос! Программы пишут, чтобы автоматизировать какую-нибудь деятельность. Конечно же, ради одной ячейки никто писать не будет, поэтому заголовок видео - "Парсим файл". Это чтение ячейки можно положить в цикл и прочитать весь лист целиком, чтобы потом программно работать с этими данными.
Мне на работе очень помогает. Я например очищаю фалы от мусора. Удаляю двойные пробелы, различные символы или произвожу замени одних символов на другие. Сами понимаете исправлять 150 тыс. записей руками - ну нет, спасибо!
Все круто, но снимай пожалуйста в 1080p
да, понял свою ошибку
Здравствуйте!
Начал изучать Pythone и для наглядности решил попрактиковать взаимодействия с Excel, ваше Видео как нельзя кстати! Можете записать ещё видео с практическими примерами? как вариант, вытаскивание данных из ячеек Excel, сортировка их по условию по условию, далее переносим полученные результаты в соседние ячейки Excel.
Спасибо за комментарий и подсказки! Обязательно сделаю!
@@ITGeneration2020 Интересный урок, хотелось бы продолжение увидеть, анализ полученных из эксель данных и их сохранение в эксель.
Спасибо! Очень качественный ролик! Я впервые на канале, сначала подумал, что у автора многотысячная аудитория, продолжай в том же духе!
Спасибо за комментарий и за теплые слова! Стараюсь для вас!
Благодарю, очень вовремя нашел, просто и понятно. Успехов 🙏🏼
Спасибо огромное за комментарий! Самое "зашедшее" моё видео, но почему-то комментариев нет))
Как раз хотел изучить библеотеку openpyxl, спасибо, выручили
Спасибо за комментарий!
Спасибо. всё четко понятно и по делу!
спасибо за комментарий!
Недавно изучал данную библиотеку и совместил ее с PyQT5. То что я сейчас напишу будет полезно знать всем. Если обращаться к ячейке не по такому стилю: sheet[ "A1" ], а по такому sheet[ 1 ][ 0 ], то в случает если в ячейке не будет значения, то прога крашится, так как python думает, что мы вышли за пределы массива, но есть одна хитрость, можно сделать так: sheet[sheet[ 1 ][ 0 ].coordinate], sheet[ 1 ][ 0 ].coordinate возвращает нам координаты ячейки в стиле excel, , и в таком случае даже если в ячейки нет элемента, то исключения не возникнет, нам просто вернеться None. Вы можете спросить, а зачем нам такой стиль, я отвечу, чтобы разложить данные из таблицы с помощью вложенного цикла, количество строк и столбцов можно узнать с помощью методов max_row и max_column. Пример:
for i in range(1, sheet.max_row + 1) # Начинаем c 1 строки, так как если начнем с 0 вылетит ошибка
for j in range(0, sheet.max_column) # Проходимся по кол-ву столбцов
print(sheet[sheet[ i ][ j ].coordinate], end=" ") # Выводим в консоль каждый элемент в каждой строке
print() # Перенос на новую строку
Да, в планах было как раз подружить парсинг xlsx с оконным интерфейсом, но пока планы сдвигаются.
За подсказку sheet[0][1].сoordinate спасибо, парсим с учениками очень громоздкий файл, вечно чего-то не хватает.
@@ITGeneration2020 Да я сам еще ученик, подумал, что те кто изучают данную библиотеку могут не знать об этом, надеюсь кому то пригодится, всем мирного неба над головой
Лучший канал!! Спасибо автору за познавательные видео!
Спасибо, Наташа!
Интересно посмотреть по фильтрации данных, выводу и суммированию отдельных ячеек, удаление дубликатов, форматирование ячеек на выходе в файле, т.е. в таком ключе. Пока пробовал в пандас и формат csv, почему-то именно так посоветовали. Но наверное можно и без пандас?
Вообще пандас - лучший выбор, там много готовых функций, которые пришлось бы писать самим. Может, объединить усилия пандас и openpyxls, он больше для работы с файлами предназначен.
@@ITGeneration2020 с пандас я уже сделал, но в "дедах программистах" Написали, типа такое циклами проще... Вот и подумалось, реально ли? Я только изучаю питон, и многого не знаю🤷🏼♂️
Классно видео! Все по делу и простыми словами! Спасибо!
Спасибо за комментарий, стараемся для вас!
очень интересно спасибо
спасибо вам за просмотр и комментарий
лукас и подписка. изменение и запись нада.
спасибо за комментарий!
Подписан однозначно !
Однозначно спасибо!!! Планировал сегодня снять продолжение про запись в таблицу, даже уже было подготовился, написал пару скриптов по работе, но так и не дошли руки. Лайк если интересно!)))
Скрипты можно найти у меня в гитхабе, а гитхаб можно найти в одном из видео)
ДД. у меня вопрос: если например стоит задача обработать/проанализировать некий массив данных excel. пытаюсь сделать это через макрос VBA, но скорость как-то не устраивает. Вопрос: если тот же алгоритм реализовать через Питон, то будет ли ускорение работы по сравнению с VBA?
Думаю, что нет, питон сам по себе довольно медленный язык. Так что если и будет выигрыш во времени, то несущественный.
Благодарю за интересный материал. Есть только вопрос, можно ли сделать так, чтобы пользователь водил артикул(который условно находится в ячейке A2), а ему выводилась информация из ячейки B2 C2 D2)?
То есть, чтобы после записи в определенную ячейку было чтение связанных с ней ячеек?
1) Создаешь список из колонки А; 2) затем ищешь артикул в списке 3) запоминаешь индекс 4) по индексу выводишь значение из соседних ячеек
name_user = input()
if name_user in spisok_1:
print(sheet["N" + str(spisok_1.index(name_user))].value)
@@ITGeneration2020да
@@CRESHT спасибо
А сможешь написать парсер для телеграмма? Что бы он парсил названия чатов либо ссылки на чаты по заданным тематикам? Подскажи как, а лучше покажи)) с меня лайк и подписка)
Так-то можно, но есть вопрос - откуда он будет брать ссылки на чаты?
@@ITGeneration2020 к сожалению не знаю)
Народ по старинке делает расчеты вручную.Автоматизацией занимаются сейчас не все,а по старинке делают расчеты вручную,за несколько минут или часов.Зависит от данных и много других факторов.
Когда таким людям предлагаешь автоматизировать расчеты-отказываются.Их право конечно,но это мягко говоря странно.И вообще-очень глупо отказываться от того,что тебя улучшает,хотя-каждому свое.....
Даже во многих бытовых вопросах пытаюсь автоматизировать то,что мне нужно.Это я говорю для тех,кто считает мол,я не программист,зачем я буду заниматься кодом и темболее автоматизировать что то.Даже для решения бытовых вопросов многих пригодятся такие коды.Тот же расчет семейного бюджета например (первое,что пришло в голову).
Спасибо за комментарий. Так и есть. Такие люди и Экселем пользоваться не будут. Но это не хорошо и не плохо. Это данность.
@@ITGeneration2020 И еще я лично знаю людей,которые даже компа никонда не видели,даже почту отправлять не умеют,про то,чтобы уметь что то искать в интернете или вообше программировать-как говорится вообще молчу.....это при том,что мы живем во время очень быстрого развития сферы it.И такие люди часто учат жизни еще,хотя сами базы в айти не знают,в наше время это как ложку держать.....
а как сделать следующее:
указать путь к файлам Excel и чтобы на выходе получили список вида: название файла, название листа внутри файла и так по всем файлам и листам..
??
Спасибо за комментарий! Сделаю на эту тему ролик в ближайшее время.
Вы имеете в виду оконное приложение, когда пользователь указывает папку?
@@ITGeneration2020 можно и так, но можно просто в коде путь прописать, но лучше, чтобы указывал
Здравствуйте. Как присвоить переменной значение из таблицы, ориентируясь на значения левого столбца и верхней строки?
вы имеете в виду создать переменную с именем a1? или любую другую со значением, взятым из ячейки A1? Если последнее, то лист рассматривается как словарь, sheet['A1'] - мы обращаемся по адресу ячейки к содержимому. Нужно погрузиться в словари, они очень важны в питоне (да и в других языках). Весь питон по сути - один большой словарь.
Взять значения по двум параметрам, например, взять из таблицы показатель адиабаты при определенном давлении (столбец слева) и определенной температуре( строка сверху), которые задаются вручную.
@@ITGeneration2020 знаете как это сделать?
@@greatbritain1406 как понял находишь значение в левом столбике, от его индекса прыгаешь в нужную ячейку и берешь от туда значение
допустим числа необходимо сравнить, у меня почему то ошибка(как исправить подскажите . . . в d1 D числа типа float
for i in range(2, 6418):
d1 = sheet['C'+str(i)].value
D = sheet['D'+str(i)].value
if d1 > D:
print(sheet['A'+str(i)].value)
TypeError: '>' not supported between instances of 'NoneType' and 'float'
я разобрался спасибо все получилось)
@@vasbkamarxil1260 Рады, что помогли вам даже молча)
@@ITGeneration2020 с ключами бы ещё пример увидеть)
здравствуйте работаю с excel, попытался написать прогу с поиском аналога через вложенный цикл, но что то идет не так и в 2 цикли все значения None. Не пойму что не так . . .
from openpyxl import load_workbook
fn = 'с.xlsx'
book = load_workbook(fn, data_only=True)
sheet = (book['Лист1'])
maxrows = sheet.max_row
for i in range(2, maxrows+1):
if not sheet['A'+str(i)].value: #если пустое пропустить
continue
ID_PST = sheet['A'+str(i)].value
stati = sheet['B'+str(i)].value
d1 = sheet['C'+str(i)].value
D = sheet['D'+str(i)].value
H = sheet['E'+str(i)].value
tip = sheet['F'+str(i)].value
teflon = False
if 'V' in str(tip):
teflon = True
# print(ID_PST,stati, d1, D, H, tip, teflon )
for j in range(2, maxrows+1):
if sheet['A'+str(i)].value == sheet['A'+str(j)].value:
continue
ID_PST_2 = sheet['A'+str(j)].value
stati_2 = sheet['B'+str(j)].value
d1_2 = sheet['C'+str(j)].value
D_2 = sheet['D'+str(j)].value
H_2 = sheet['E'+str(j)].value
tip_2 = sheet['F'+str(j)].value
teflon_2 = False
if 'V' in str(tip_2):
teflon_2 = True
print(ID_PST_2, stati_2, d1_2, D_2, H_2, tip_2)
# if (d1-0.2)
привет, подскажи плиз:
for i in range(2, maxrows+1)
тут maxrows+1 это последний элемент? почему не maxrows-1 ?)
А как считать данные с ссылки на excel таблицу ?
Не очень понял вопрос, с какой ссылки данные нужно читать?
хотел узнать можно ли убирать пробелы, если можно то как?
в самом excel файле есть пробелы, их надо убрать именно через пайтон ищу уже второй день ответ
В прочитанном split() - разделит на отдельные слова, replace(' ',''), для замены пробела на пустой символ
Методом str.replace(" ", "")
Где это на практике может пригодиться? Почему нельзя просто открыть файл Exel и посмотреть на эти данные, а не выводить в программе наугад или постоянно заглядывая в тот же Exel файл. Кто-нибудь объясните!!!
Отличный вопрос! Программы пишут, чтобы автоматизировать какую-нибудь деятельность. Конечно же, ради одной ячейки никто писать не будет, поэтому заголовок видео - "Парсим файл". Это чтение ячейки можно положить в цикл и прочитать весь лист целиком, чтобы потом программно работать с этими данными.
Мне на работе очень помогает. Я например очищаю фалы от мусора. Удаляю двойные пробелы, различные символы или произвожу замени одних символов на другие. Сами понимаете исправлять 150 тыс. записей руками - ну нет, спасибо!
...
Спасибо за комментарий!