Пишу простую, но реальную программу. Python + Excel.

Поділитися
Вставка
  • Опубліковано 29 вер 2024

КОМЕНТАРІ • 531

  • @abzalbotbayev
    @abzalbotbayev Рік тому +92

    Это вообще законно, объяснять так понятно и наглядно? )) Спасибо!

    • @oldcoders
      @oldcoders  Рік тому +3

      😆😆😆

    • @Akkaunt__Yerjan
      @Akkaunt__Yerjan Рік тому

      Вы бы skillbox посмотрели как там наглядно про основы взлома показывали)).

    • @sergey_ra
      @sergey_ra Рік тому

      ​@@Akkaunt__Yerjan есть на ютубе?) Подскажите, если да

    • @sergey_ra
      @sergey_ra Рік тому +1

      ​​@@Akkaunt__Yerjan помню вначале нулевых изучал фак по фриинету, будучи студентом безденежным, да ещё и музыкантом, вот у меня к пела голова😂 Научился инет добывать, да ещё и не обворовывая людей при этом :)) Данные для авторизации тырил конечно, проникая в компы через гостевой доступ для авторизации. И оказалось, что у прова мультилогины были у всех😅 РОЛ вроде это был😂

  • @СергейКондулуков-з9ч
    @СергейКондулуков-з9ч 6 місяців тому

    Ну здорово. И Питон и Эксель изучаю на Степик. Сейчас посмотрю Хекслет.

  • @konanicopol7451
    @konanicopol7451 Рік тому

    Офигенно, я сам финансист и начал изучать программирование. Не думал что python можно использовать в excel

  • @drevo100
    @drevo100 Рік тому +3

    Спасибо, очень интересно. Возможно ли сделать подобный видео-разбор с данными, которые бы писались в БД (желательно постгрес). Если бы еще на арендованном серваке было бы вдвойне полезно.

    • @oldcoders
      @oldcoders  Рік тому

      Я с БД только в Джанго работал, больше никак. В ролике про «Джанго часть 2» про это рассказывал. Но там не SQL, там ORM.

  • @studzenb
    @studzenb Рік тому

    МНе так нравится фраза - Так все понятно - а я сижу и понимаю что тут сказать то и нечего если нечего не понятно )))

    • @oldcoders
      @oldcoders  Рік тому +1

      Чтобы понять это видео надо знать основы Python. Если с нуля то конечно ничего не понять.

  • @erlaf8477
    @erlaf8477 Рік тому

    01:02 в Задаче было создать новый файл с этой таблицей соответствия.
    Ожидал увидеть новый файл таблицы ".xlsx", а реализовано в ".ini".

    • @oldcoders
      @oldcoders  Рік тому

      Мне нужен был именно ini файл.
      В эксель сохранить ничего сложного, изменилась бы пара строчек.

  • @vasiliqkryt8808
    @vasiliqkryt8808 7 місяців тому

    когда записываешь данные в словарь удобнее использовать метод словаря get

  • @Отомчтовголове
    @Отомчтовголове Рік тому +1

    Не с 7 строки, а со строки содержащую "Артикул" + 1. С такой остановкой не важно будет как создан файл exl. Да и со столбцом тоже надо описывать поиск. Это не сложно и позволит избежать ошибки в файле с номерами строк и столбцов.

    • @oldcoders
      @oldcoders  Рік тому +1

      Да, можно было. Просто у меня это была одноразовая задача, в приоритете - быстрота написания кода. В последующем я ее включу в большой свой проект - там да, именно так и буду делать - парсить заголовок по названию столбца.

    • @Отомчтовголове
      @Отомчтовголове Рік тому +1

      @@oldcoders Я программирую, но не на Phyton, однако, заметил, что стоит сразу писать очевидные вещи, что-бы потом не забыть или не попасться на мелочи. И моя пометка больше к начинающим программировать. За урок, конечно, спасибо.

  • @yuriyruchev9218
    @yuriyruchev9218 Рік тому

    Спасибо! Продолжайте дальше)

  • @mister_123
    @mister_123 10 місяців тому

    Спасибо! отличное видео.

  • @paladinalik
    @paladinalik Рік тому

    Рекомендуется создавать словарь функцией dict() - типа правило хорошего тона :)

    • @oldcoders
      @oldcoders  Рік тому

      Писать mydict = {} менее правильно чтоли? 🤔

  • @po100lit7
    @po100lit7 Рік тому

    спасибо! познавательно! но я б использовал pandas для работы с excel

    • @oldcoders
      @oldcoders  Рік тому

      Есть ролик и про pandas у меня

  • @wirbelwind2696
    @wirbelwind2696 Рік тому

    Как насчёт defaulteict from functools? Чтобы не развлекаться с условием проверки наличия ключа.

    • @oldcoders
      @oldcoders  Рік тому

      Да, defaultdict многие посоветовали, спасибо!

  • @Don_Pehot
    @Don_Pehot 5 місяців тому

    СИлами эксель тоже можно такое сделать

  • @BozhokinMikhail
    @BozhokinMikhail 9 місяців тому

    А у меня с самого начала эта программа не заработала, говорит AttributeError: module 'openpyxl' has no attribute 'load' =(((

    • @oldcoders
      @oldcoders  9 місяців тому

      А почему load а не load_workbook ?

  • @yuraer
    @yuraer Рік тому +1

    задача для Power BI

  • @iovmail
    @iovmail Рік тому +1

    Если вы программист и вам дали задачу налить чаю..

    • @oldcoders
      @oldcoders  Рік тому

      Что там дальше?

    • @iovmail
      @iovmail Рік тому

      @@oldcoders Еще не выбрал библиотеку подходящую ))) Пришлось делать руками без кода.

  • @FDM_UA
    @FDM_UA Рік тому +69

    Спасибо автору! Описан нормальный путь создания скрипта от постановки задачи до практической реализации в конкретной области. Использование простых конструкций позволяет понять происходящее для начального уровня, кому и предназначены эти видео.
    Замечания в комментариях по улучшению предложенного кода расширяют кругозор. Их авторам также спасибо!

  • @МихаилЧ-д2х
    @МихаилЧ-д2х Рік тому +69

    Нет необходимость так сортировать словарь (преобразования сортированного списка кортежей обратно в словарь) достаточно написать for key, value in sorted(subcategories_dict.items()): т.к. по сути словари это неупорядоченные последовательности. То что в последних версиях python перебор элементов словаря идёт по порядку их занесения в словарь, не гарантирует аналогичное поведение в более ранних версиях python

    • @oldcoders
      @oldcoders  Рік тому +10

      О, круто, спасибо!!

    • @eugenedukatta9355
      @eugenedukatta9355 Рік тому +2

      Меня сортировка словаря тоже слегка насторожила. Погуглил - оказывается начиная с версии Питон 3.6 словарь сохраняет порядок элементов в порядке их добавления. В более ранних версиях такого нет.

    • @TurboDeaz
      @TurboDeaz 4 місяці тому

      @@eugenedukatta9355 с версии 3.9

  • @progway8574
    @progway8574 Рік тому +39

    В очередной раз убеждаюсь, что реальные задачи намного интереснее и эффективнее. Нужно как-нибудь попробовать. Спасибо большое за видео!

  • @ВладимирМерк-й2я
    @ВладимирМерк-й2я Рік тому +48

    привет. Здорово, что показываешь реальные задачи с реальными алгоритмами) Продолжай в том же духе). По коду хотелось бы добавить, что можно избавиться от конструкции if-else стандартным методом dict.setdefault(key, list()).append(value) - т.е. если значение ключа есть, то он будет добавлен в список, а если такого ключа нету, тогда будет создан такой ключ в словаре и в него уже добавлен value. Надеюсь понятно написал))

    • @oldcoders
      @oldcoders  Рік тому +3

      О, круто! Спасибо большое!!

    • @a.d.8390
      @a.d.8390 Рік тому +5

      @@oldcoders ещё удобно использовать defaultdict() стандартного модуля collections. Особенно если нужно получить вложенность в словаре наподобие json.

    • @Gr3gnov
      @Gr3gnov Рік тому +6

      Можно просто subcategories_dict = defaultdict(list)
      Таким образом можно указать, что в словаре в качестве значений будут листы. И можно смело делать subcategories_dict['любой ключ'].append(sku)

    • @oldcoders
      @oldcoders  Рік тому +2

      Класс!

  • @RiantHoff
    @RiantHoff Рік тому +7

    Словарь по итогу отсортирован по ключу, как строке (1.10, 1.11 идут впереди 1.2), а нужно как по числу. В программе не хватает вот этого последнего штришка. :)

    • @oldcoders
      @oldcoders  Рік тому +2

      Просто мне не нужно было это. Это задача не учебная а реальная. Такой сортировки более чем достаточно, времени тратить на ненужную «досортировку» - смысла нет. И видео усложнять - тем более.

  • @QWERTY-om5fg
    @QWERTY-om5fg Рік тому +8

    Дед, ты лучший!
    Создаешь топовый контент!
    Спасибо!

  • @sergiimatiavin3573
    @sergiimatiavin3573 Рік тому +8

    У Excel для решения подобной задачи без программирования есть собственный мощный инструмент - сводная таблица. Но пример полезный, спасибо.

    • @oldcoders
      @oldcoders  Рік тому +3

      👌 но у нас цель - программирование

    • @user-vv5hh4ci4j
      @user-vv5hh4ci4j Місяць тому +1

      Как вы из Excel сводной таблицы будете выводить например не сайт? А через Python это реально.
      Пример, мини магазин, крохотный сайт с каталогом товаров. Продавцы забивают в Excel и данные автоматом появляются на сайте.

  • @Ren_ova
    @Ren_ova Рік тому +10

    Здравствуйте! Сортировка не совсем корректная:
    1.1 потом идут 1.10, 1.11, 1.12, а после 1.2, далее где еще есть два знака после точки в номере категории все таким же образом отсортировано
    Как сделать правильно не знаю) пусть знатоки подскажут😊

    • @ringilendimion
      @ringilendimion Рік тому +1

      Как вариант - сделать номера категорий с добавлением ведущего нуля: 1.01 вместо 1.1 и т.д.

    • @no101vmv
      @no101vmv Рік тому

      @@ringilendimion нет, нужно просто словарь словарей. И ключами делать целое число, что бы сортировать не как строки а как числа. Собственно по этому тут и проблема с сортировкой что он сортирует строки по сути. Даже если флоат то тоже не подходит.
      Нужно сделать двухуровневый словарь. Точнее он может быть тут любой глубины. Суть в том что бы категорию первую берем до первой точки, вторую между первой и второй точкой и так далее. И если категория оставшаяся больше не имеет дробной части то кладем сюда уже артикли

    • @mike7105mike
      @mike7105mike Рік тому

      @@no101vmvможно воспользоваться параметром key функции sorted, и туда запихать свою функций, которая будет бить ключ словаря по пробелу, брать первый элемент и приводить его к float

    • @oldcoders
      @oldcoders  Рік тому

      Там еще засада - есть категории где две точки . Типа 3.2.6 брюки . Сложновато получится .

    • @no101vmv
      @no101vmv Рік тому

      @@oldcoders если в одной категории товары могут быть как с одинарной вложенностью так и с двойной и более - то возможно стоит ввести понятие обьекта категория у которой есть 2 поля. Подкатегория(по сути категория), возможно название текущей категории и итемы текущей категории. Подкатегория это такой же объект категории. Но это уже выглядит как отдельный урок

  • @nikprilutskiy7064
    @nikprilutskiy7064 Рік тому +7

    Привет! Спасибо за видео! По поводу наполнения словаря подкину еще один вариант. Можно воспользоваться методом get(), что бы избежать конструкции if-else:
    subcategories_dict[subcategory] = subcategories_dict.get(subcategory, [ ]) + [sku]
    т.е. перед тем как записать значение ключа мы проверяем что у нас там уже есть по этому ключу через get(), если ничего нет то применяется второй аргумент у get() что положить туда, если ничего не нашлось. В случае, если найдется, то мы к списку просто прибавим еще одно значение.

    • @oldcoders
      @oldcoders  Рік тому

      Спасибо!! Возьму на заметку!

    • @yawneed
      @yawneed Рік тому +1

      Для этого есть defaultdict чтобы такие кастыли не писать

    • @АнтонМакаренко-д1п
      @АнтонМакаренко-д1п Рік тому

      Спасибо за ответ. Когда я писал код попримеру в else выдавало ошибку, sku было стрингом, что не позволяло добавлять в него через аппенд. Твоё решение все исправило!

  • @НеважноКто-ы5й
    @НеважноКто-ы5й Рік тому +6

    Спасибо большое, мне как новичку и самоучке, тяжело найти наглядный пример. А тут прям то что нужно! Понимаю что возможно не оптимальное решение, но сам процесс поиска ответов, очень помог мне. Ещё раз спасибо, для меня очень полезная информация! Судя по коментариям и я дед)

  • @GlExcel
    @GlExcel Рік тому +5

    в 8:42 - чтобы посчитать кол-во столбцов - достаточно их выделить и посмотреть на "подсказку" которая будет появляться правее курсора. Подсказка вида: 1048576R x 12C

  • @maths781
    @maths781 Рік тому +5

    Спасибо большое за ролик. Интересно слушать взрослых программистов.

  • @nonna45
    @nonna45 2 місяці тому +1

    для таких задач придуман numpy и pandas, где даже цикл выписывать не надо. именно эта задача может быть решена короче.

  • @deabla
    @deabla Рік тому +1

    =УНИК(Таблица_товара[Подгруппа])&": "&BYROW(УНИК(Таблица_товара[Подгруппа]);LAMBDA(а;ОБЪЕДИНИТЬ(",";;ФИЛЬТР(Таблица_товара[Артикул];а=Таблица_товара[Подгруппа]))))
    С Уважением.

  • @ПашаПорфирьев-з4к

    Было бы замечательно и профессионально, после выхода комментариев, создать следующее видео, автор решит ту же задачу, но учтёт полезные комментарии, и немного усложнить задачу. К примеру что-то запишет в один файл с таким именем, а что-то в другой файл с другим расширением в другом виде. Методов много, хочется примеры на все методы. Т.е. к примеру, четыре видео, и в них раскрыты все методы работы со строками на простой реальной программе! Это лучший канал для самообучения! В остальных видео много просто примеров, а здесь реальные программы! Спасибо за видео! Успехов каналу и ведущему! Жду новые видео по всем разделам Python, что бы можно было освоить их и вырасти от джуна до мидла!

    • @oldcoders
      @oldcoders  Рік тому +13

      Спасибо! Я тоже думаю о том, чтобы изменить программы с учётом советов, данных в комментариях, и записать видео об этом .

    • @kostashvetsov9258
      @kostashvetsov9258 Рік тому

      @@oldcoders 🤝🤝🤝

    • @Otgonbayarin
      @Otgonbayarin Рік тому

      Можно усовершенствовать программу, если добавить файл базы данных MySQL и в него писать необходимые значения и сохранять, переносить таким образом вместо файла ini. Ну и потом написать графический интерфейс, можно на Kivy для мультиплатформенности.

    • @oldcoders
      @oldcoders  Рік тому +3

      Дело в том что мне такой вариант совершенно не нужен. Ни графический интерфейс ни БД. У меня этот скрипт встроится в мое большое веб-приложение. И я там использую ini файлы чтобы не хардкодить, не записывать в код то, что может меняться в зависимости от разных ситуаций. Чтобы с приходом нового сезона например не переписывать основной код приложения. Просто обновил ini файл, изменил если надо руками, добавил что надо - и готово. Приложение работает с новым сезоном . Без залезания в код.

    • @abracadabra5491
      @abracadabra5491 Рік тому

      @@oldcoders а почему ini файлы, а не тот же json?

  • @AZaycev
    @AZaycev Рік тому +4

    Всё хорошо, но маленький недочёт.. Сортировка отработала не совсем должным образом.. 1.1, 1.10.., 1.2.. Мне кажется должно было.. 1.1, 1.2, 1.10... и тд. :) Видео очень понравилось, особенно рубрика реальных задач. Большое спасибо за видео!

    • @oldcoders
      @oldcoders  Рік тому +1

      И вам спасибо! Дело в том что это реальная программа и я делал ее так, как нужно мне. Мне такой «неидеальной» сортировки достаточно.
      Если бы мне по какой то причине нужна была строгая сортировка - конечно я бы ее сделал.

    • @AZaycev
      @AZaycev Рік тому

      @@oldcoders понял, в целом я конечно так и подумал) Я в таких ситуациях использую сортировку natsort :)

    • @oldcoders
      @oldcoders  Рік тому +1

      Понял. А я не люблю лишние модули импортировать. Если чтото можно сделать на ядре Питона, без потери в быстродействии и времени разработки - делаю на ядре.

    • @andynaz7044
      @andynaz7044 Рік тому

      @@oldcoders это не доблесть! ядро питона специально очень ограниченное по сравнению с другими языками, именно для мотивации исполшьзовать сторонние быблиотэки )

  • @mrrappbit
    @mrrappbit Рік тому +3

    Спасибо! Не пробовал работать с pprint и было интересно про чтение данных из ексель, применю в работе и автоматизирую процессы

  • @ExcelStore
    @ExcelStore Рік тому +3

    Материал изложен в доступной для понимания форме. Спасибо.

  • @Bop1ezh
    @Bop1ezh Рік тому +3

    Познавательно и круто! Спасибо за видео и разъяснения. Однако, я хотел бы уточнить пару моментов. 1-й - кроме макросов в Excel есть прекрасный ETL в виде PowerQuery, где тоже самое можно сделать при помощи интерфейса и нескольких кликов мышки. 2-ой - на 17:50 видно, что сортировка не идеальна, т.к. после. п.3.1. (20 строчка в IDE) идёт п.3.10. (21 строчка в IDE), а ещё ниже п.3.2. (26 стока в IDE). Подскажите, пожалуйста, как это скорректировать? Спасибо!

    • @oldcoders
      @oldcoders  Рік тому

      Да, можете почитать в комментариях, об этом уже рассуждали. Чуть более сложную сортировку пришлось бы делать. Например отделять номер от названия подкатегории, переводить его в тип float , сортировать его и т.д.
      Мне это было не нужно, такой первичной сортировки было достаточно.

  • @i.e.2650
    @i.e.2650 Рік тому +4

    Спасибо за клевую практику и прикладное применение всех этих циклов, словарей и джоинов!!!!

  • @dmt1938
    @dmt1938 Рік тому

    тоже раньше так ипался пока не узнал про pandas)

  • @sergasagen
    @sergasagen Рік тому +1

    В данном случае просто и необходимо использовать pandas. Считал таблицу в датафрейм, построил сводную в том же pandas и записал в новый датафрейм. Всё.

    • @oldcoders
      @oldcoders  Рік тому

      Да, я так тоже делаю. Одно из следующих видео будет про пандас.

  • @КузяИванов-е6ч
    @КузяИванов-е6ч Рік тому +7

    У меня ест многолетний опыт анализа данных в Excel. И эту задачу в Excel можно выполнить примерно за полторы минуты. Может 3 минуты. Загружаем всю таблицу в модель данных (Power Pivot). Создаём одну меру на DAX CONCATENATE. После чего выводу ее в сводную таблицу. Все. Выглядит гораздо быстрее чем способ на видео.
    А касаемо программирования... Я только в прошлом месяце начал учить Python для анализа данных. Знаю совсем немного. Но я бы в данном случае использовал бы Pandas. Подключился к таблице с переводом ее в DataFrame. Оставил бы только две нужные колонки. После чего загуглил (или чатгпт) как в Пандасе делать конкатинацию, так как такого ещё не учил. Мне кажется это будет проще и быстрее чем выщитывать номера колонок. А вдруг в следующей выгрузке добавиться колонка с новой информацией? Тогда номер колонки измениться и весь алгоритм пойдет лесом. А если привязаться к названию, то куда бы колонка не переехала, то ничего не поломается. Хотя может вмешаться человеческий фактор и измениться название колонки в таблице, но предусмотреть все невозможно.

    • @e.m.3378
      @e.m.3378 4 місяці тому

      А какая библиотека для вывода в эксель из питона?

  • @IvanIvanov-rp6og
    @IvanIvanov-rp6og Рік тому +7

    Можно вместо списка для артикулов использовать множество, тогда в строке артикулов не будет повторений
    dict.setdefault(key, set()).add(value)
    А при выводе использовать f-строку вместо строки с "+" и вставить sorted() в join, потому что множество выдает свои элементы в случайном порядке
    string_values = ', '.join(sorted(value))
    string_to_write = f'{key} = {string_values}
    '

    • @oldcoders
      @oldcoders  Рік тому

      👍👍 спасибо

    • @S_putnik
      @S_putnik Рік тому

      А если через метод get?

    • @IvanIvanov-rp6og
      @IvanIvanov-rp6og Рік тому

      @@S_putnik Через метод get мне нравится больше

    • @nuklotron7465
      @nuklotron7465 Рік тому

      к тому же множества работают быстрее списков)

    • @ГерманМаслеников
      @ГерманМаслеников 10 місяців тому

      ​@@IvanIvanov-rp6ogкак помню, если ключа нет то выводит ошибку

  • @КириллМеха
    @КириллМеха Рік тому +3

    Спасибо! Хороший пример. Решал недавно задачу с курса по работе с файлами, тут практически то же самое)

  • @tsvjatoslav
    @tsvjatoslav Рік тому +1

    Я бы делал через библиотеку pandas:
    import pandas as pd
    df = pd.read_excel("Бланк заказа.xlsx", skiprows=5, usecols=[1, 11])
    df = df.dropna()
    df = df.groupby(df.columns[1])[df.columns[0]].apply(list).reset_index()
    data_dict = df.set_index(df.columns[0]).to_dict()[df.columns[1]]
    data_dict - уже отсортированный по ключам словарь

    • @etoneya930
      @etoneya930 11 місяців тому

      Листал комментарии, искал кто же напишет в 7 строк на пандас

  • @romanshenfeldvlad
    @romanshenfeldvlad Рік тому

    Сортировка кривая, 1.1 и далее 1.10, а должен быть 1.2. Не факт что в таблице нет подкатегории с ошибкой в имени. Если нужно вывести категории и все арт. к ним, воспользуйся сводной таблицей. Python нужен для более сложных задач, а не для замены стандартного функционала excel. А так да, если времени много? тебя не торопят, можно и порочиться с rкодом в python. Спасибо за ролик.

  • @vvvarvfx
    @vvvarvfx Рік тому +2

    Используйте f-строки, а не конкатенацию в чистом виде,f-строки прекрасны! Спасибо за ролик!

  • @goviktor
    @goviktor Рік тому +3

    Очень хорошее и информативное видео. Спасибо - шикарная работа !!!!!

  • @AnuarAitkazin
    @AnuarAitkazin Рік тому +2

    Ждем 3 часть про Python Django

  • @arudskyy
    @arudskyy Рік тому +2

    Я также ловлю кайф от работы с python. Был тоже опыт работы с Excel: однажды получилась очень удачный и стройный скрипт - на штатный разработчик Excel/VB начал у меня выяснять где же основной модуль реализации и не поверил, что этот скрипт и был всей рабочей программой

  • @axel-cjuh5426
    @axel-cjuh5426 Рік тому +3

    Объяснение, подача, реальные задачи, вы просто популяризатор программирования!

  • @ТатьянаДанилова-д8н

    Видео еще не смотрела, думаю, там все как всегда очень хорошо, но елочка на батарее очень милая, спасибо за настроение ☺️🧡

  • @enrewardronkhall8340
    @enrewardronkhall8340 Рік тому +1

    В итоге, скрипт будет работать только с файлами подобной разметки, и если разметка изменится, то придётся лезть в исходный код и переделывать его, а когда файл изменится снова - придётся исправлять снова. Добавление поиска первой ячейки с данными ничуть не усложнит программу, но сделает её более универсальной.

    • @oldcoders
      @oldcoders  Рік тому +1

      Да, все так. Тем не менее не стал усложнять.

  • @Abramov_Andrey
    @Abramov_Andrey Рік тому +2

    Супер! Если еще будут примеры работы питона с экселем, по возможности, пжт, выкладывайте. Очень интересно) Спасибо!

    • @oldcoders
      @oldcoders  Рік тому

      👌 Есть еще одно видео на канале у меня, посмотрите, pandas + excel

  • @pazakharov
    @pazakharov Рік тому +1

    питон это кнчн хорошо, но главное имхо - делать быстро и результативно. И эта таска элементарно решается за 3-5 минут сугубо экселем :)

    • @oldcoders
      @oldcoders  Рік тому +1

      Еще вариант - поручить кому то сделать эту задачу. Еще эффективнее.

  • @vladimirkudiyarov2936
    @vladimirkudiyarov2936 Рік тому +1

    годный , полезный и внятный контент! но на кой такой уровень громкости на музыкальных вставках?!!! 🤦‍♂

    • @oldcoders
      @oldcoders  Рік тому

      Блиииин, я несколько раз проверял, выверял громкость, снизил громкость вставок процентов на 40 от оригинальной, и все равно громко? ☹️

  • @vasilejosu3431
    @vasilejosu3431 8 місяців тому +1

    Огромное спасибо!
    На работе часто используют Excel, и Python может очень помочь.
    Было бы ещё круче в конце видео записать данные в новый xlsx файл через цикл.

  • @MrTubeer
    @MrTubeer Рік тому +6

    Я люблю программирование. Но дальше теории никак не двинусь и по этому получаю удовольствие от просмотра таких роликов

    • @oldcoders
      @oldcoders  Рік тому +8

      Поставьте себе задачу, очень простую. И решите ее.
      Если совсем нет задач - решайте их на codewars.
      Какой смысл знать теорию и не использовать ее?

    • @Gimli_Dwarf
      @Gimli_Dwarf Рік тому

      Берешь задачу - сортировка и подготовка данных из таблицы в 10000 строк, чтобы провести расчет и вывести результаты в word. Сначала пробуете на VBA, понимаете, что это полный изврат и переписываете на linq C#.... Profit.

    • @edrdr
      @edrdr Рік тому

      Попробуй заняться микроконтроллерами. Esp32 + micropython. Дёшево и сердито, вдруг в тебе спит гений

    • @no101vmv
      @no101vmv Рік тому

      Теория нужна что бы практика лучше давалась. Но основное все же практика а не теория на старте карьеры особенно

  • @kornevsergey
    @kornevsergey Рік тому +1

    Я бы так решил. Прикинул пару путей. в т.ч. и через возможности самого эксель. Посмотрел бы пару гайдов. Захотел эту задачку сделать сам. Прикинул сколько времени уйдет. Почесал репу. Написал бы тезисно ТЗ. Закинул 2-3м программистам на аутсорсе. Или даже одному кто онлайн. Взял бы оценку времени. Согласовал стоимость. Запустил бы в работу. опустим моменты некоторые.. тестанул бы сам и отдал пользователю. Получив ответ что все работает как надо, закрыл бы тиккет. ВОт, такой вот я программист))))

  • @Rusia-16
    @Rusia-16 Рік тому +1

    Никогда Python не заменит VBA, смирись с этим и учи VBA )))

  • @no101vmv
    @no101vmv Рік тому +1

    1. if else обычно стараются сократить. Я бы сделал "в случае если в словаре нет ключа" - создад запись с ключем где значение будет пустой массив. А потом аппендить туда значения без елсе. Мне так комфортнее) Не знаю кому как. Ну и еще одно замечание.
    А самое главное замечание кеоторое мне бросилось в глаза - сортировка не верная. Потому что саб категория должна сортироваться 1.1, 1.2, 1.3, ...., 1.10 а не 1.1, 1.10, 1.2.
    Для этого когда складываем в словарь можно сразу сделать category_dic и subcategory_dic и во втором писать только второе число подкатегории. И сортировать его как число а не как строку. В целом такая структура будет удобнее для дальнейшего использования.

  • @Максим-т5ш8и
    @Максим-т5ш8и Рік тому +1

    Тоже делал подобную штуку для работы. Я это назвал прокинутым ВПР. Моя первая полезная программа))😊

  • @ВадимЯценко-ъ3ц

    Я бы воспользовался defaultdict из модуля collections тем самым объявив бы values словаря с типом list

  • @karkozov
    @karkozov Рік тому +1

    Я бы словарь сортировал иначе, через генератор, как кто-то предложил
    If/else при записи можно заменить конструкцией dict[key] = dict.get(key, []) + [value]
    Если нет значения по ключу, он в него записывает пустой список и конкатенирует со списком значения
    Либо dict.setdefault(key, []).append(value)
    И при создании результирующей строки использовал f-string
    Получилось бы что-то типа
    String_write = f”{key} = {‘, ‘.join(value)}
    ” - здесь сразу список значений распаковывается в строку с разделителями) вообще познав однажды f-строки невозможно их разлюбить

  • @zsnjA
    @zsnjA Рік тому +1

    Эх я бы на vba спокойной сделал

  • @Juvelir97
    @Juvelir97 Рік тому +2

    Очень полезно и в отличном темпе для начинающе-продолжающих! Спасибо! Подписка однозначно

  • @facetroll777
    @facetroll777 2 місяці тому

    В случае когда в самой таблице тебе не нужно работать с её оформлением или картинками в таблице, openpyxl лучше не использовать. Проще загрузить таблицу через pandas в DF и работать с DF, и дальше создать уникальный список подзаголовков, и собрать словарь артикулов, где ключ подзаголовок, значение список с артикулами.

  • @antonchernov9171
    @antonchernov9171 3 місяці тому

    Огромное спасибо за видео! Я только начал изучать Python и мне было очень интересно увидеть практическую пользу всего, что я изучаю 😂 Еще раз благодарю 👍🏻

  • @Edmond_Dantes28
    @Edmond_Dantes28 4 місяці тому

    Это конечно круто и мне было интересно посмотреть, но такую вещь очень легко сделать в сводной таблице excela)))) я думаю у меня было ушло на это максимум 15 минут))
    Пс. Спасибо за информацию, было очень интересно

  • @АнтонПономарев-х3п

    Хорошее видео с ходом рассуждения и реальный код👍

  • @Joe_Satriani
    @Joe_Satriani 4 місяці тому

    Имеет смысл ТОЛЬКО для образования. В реальной работе, с целью рационального использования рабочего времени, делается за 1 минуту внутри.

  • @ivanl7786
    @ivanl7786 Рік тому +1

    Python - это конечно здорово. Но такую задачу я бы предпочёл решать с помощью Power Query.

    • @oldcoders
      @oldcoders  Рік тому

      У нас цель - изучение и использование на практике Питона

  • @АнтонЛарионовский
    @АнтонЛарионовский 4 місяці тому

    Я бы отсортировал ещё и артикулы:
    for value in sorteddict.values()
    value.sort()

  • @elaeff6585
    @elaeff6585 Рік тому +1

    Спасибо за видео. Но, не понятно, как записать в эксель полученные данные?

    • @oldcoders
      @oldcoders  Рік тому

      В openpyxl есть прекрасный метод save класса workbook.
      Формируете в памяти ваш workbook и потом его записываете.
      Посмотрите документацию openpyxl.readthedocs.io/en/stable/tutorial.html#data-storage

    • @elaeff6585
      @elaeff6585 Рік тому

      @@oldcoders так отразите это в ролике, спасибо большое.

    • @oldcoders
      @oldcoders  Рік тому

      Возможно, если сниму опять про Эксель . Но вообще, нельзя только повторять за видеороликами, надо уметь искать в документации нужные вам вещи. Программист не должен ждать когда выйдет видео где говорится как сделать какую то вещь. Он должен сам находить решение.

  • @DenisTrebushnikov
    @DenisTrebushnikov Рік тому

    всё отлично, объяснение и пример, но:
    1) это скрипт, а не программа, т.к. используется императивный подход, впрочем, это уже вопрос семантики.
    2) задача не выполнена, т.к. условие "и формирование нового .xlsx файла" в рамках видео не выполнено
    PyCharm (Win) - ctrl+b (и тоже для выхода обратно)
    для pop-up подсказки - достаточно ctrl+q (второе нажатие открывает сбоку вкладку Документации) - прыгать в исходник бывает излишне; а данная комбинация также подсказывает ваши функции и классы (и даже вашу документацию, если она присутствует и создана по правилам)

  • @ЛолЛол-ы2ъ
    @ЛолЛол-ы2ъ Рік тому +1

    my_dict.setdefault(key, []).append(value)

  • @BROnik
    @BROnik Рік тому +2

    Очень круто и полезно!
    з.ы.: Все еще жду 3ю часть по Джанго 🙃 С Новым Годом!

    • @oldcoders
      @oldcoders  Рік тому

      Будет, будет.. собираюсь с силами .. 😀

    • @АлександрБобрус-г3э
      @АлександрБобрус-г3э Рік тому

      @@oldcoders Дай Вам всевышний сил немеренно для благого дела! А мы очень ждем!!!

  • @slaval5088
    @slaval5088 Рік тому

    MaxRow в Экселе может не работать нормально. Поэтому не стоит на него в общем случае полагаться, как на конец данных.
    Нр, я проверял на пустоту с подсчётом пустот. Если их больше некого Х, значит это конец данных. Максроу может улетать ниже реального конца данных.

  • @ongrustit
    @ongrustit Рік тому +2

    А когда вы будете продолжения по Django делать ?

    • @oldcoders
      @oldcoders  Рік тому +3

      Буду, буду. Собираюсь с силами

    • @ongrustit
      @ongrustit Рік тому +1

      @@oldcoders Спасибо вам большое за ваши труды, дай Бог вам силы продолжать снимать видео про Python и Django

  • @vitoshvidoff7721
    @vitoshvidoff7721 Рік тому

    Братан зачем сочинять такие велосипеды с костылями Раз уж работаешь с товарами почему бы не использовать готовое решение с интеграцией в веб сайт 1С называется не понимаю люди просто ищут заморочки на банальных задачах

  • @kppptt
    @kppptt 11 місяців тому

    Сейчас народ пинками будут загонять на "Мой офис" с LUA. Excel c Python - для развлечения.

  • @Kutya2001
    @Kutya2001 Рік тому +1

    Можно было через умные и сводные таблицы)

  • @Пользователь-х3ы

    Значения лучше бы тоже сортировали, чисто на будущее.
    А то ведь добавлять, если надо будет тоже замучаетесь искать ))

    • @oldcoders
      @oldcoders  Рік тому

      Кстати да, точно !! Можно было бы!

  • @Eshtech
    @Eshtech Рік тому

    У вас "некорректно" отсортировался список. Например на ua-cam.com/video/eEbi7wdZNV4/v-deo.html видно, что после 6.1 идет запись 6.10 :)

  • @АлександрП-э9м
    @АлександрП-э9м Рік тому

    Написал аналогичную программку, но обработку моих 2000 сток выполняет 26 минут. Куда копать?

  • @АлексейАлексей-я6и8э

    Всё же конкретно в этом случае, в экселе это делается за 2 клика через сводную таблицу в прямом смысле за 10 секунд

    • @maksimkolmykov296
      @maksimkolmykov296 Рік тому

      тоже на это обратил внимание. но вот как-то профики в екселе ценятся меньше чем начинающие в программировании. я просто реально столкнулся с тем что виртуозная работа в екселе обычно не впечатляет даже начинающего программиста - они могут сделать то же самое но другим инструментом.

    • @АлексейАлексей-я6и8э
      @АлексейАлексей-я6и8э Рік тому

      @@maksimkolmykov296 потому что, я могу сам решить свою задачу без обращение к питонисту, если знаю эксель) если не знаю, то и в голову не придет, что так можно и насколько это легко. Это как "ты ж врач", с таким же посылом и обращаются к программистам. Тут смотря с какой стороны судить. Я имею ввиду, со стороны решения проблемы как таковой, а не со стороны поиска работы

    • @oldcoders
      @oldcoders  Рік тому

      Это канал для любителей программировать на питоне. А не для любителей экселя :)
      Я не говорю что для того чтобы решить такую задачу вам нужен будет Питон, других вариантов нет.
      Я говорю - что зная питон такая задача прекрасно решается.

  • @dnk1761
    @dnk1761 Рік тому +1

    Привет! Спасибо за видео! Классная идея с обучением на реальной задаче. Немного душных комментов по самому видосу - слишком много внимания берут на себя перебивки с музыкой, я бы музыку или подрезал или вообще убрал. Если добавить в начале что-то типа оглавления - так будет смотреть еще интереснее. Можно еще рассказать сколько времени заняла работа и сколько за это могут заплатить) спасибо за видос! Афтор пеши исчо

    • @oldcoders
      @oldcoders  Рік тому +1

      Есть же оглавление - разделы под видео. За такую программу никто платить не будет, это минимальный базовый уровень владения языком. Времени заняло минут 30. За советы спасибо!

  • @ВладимирРыбников-ш4ы

    Тоже иногда пишу вспомогательные программы. Но с помощью чата gpt.

  • @fujimatosa
    @fujimatosa Рік тому +1

    А можно приделать какой то интерфейс к этой программе, что бы пользователь нажимал кнопочки, загружал файл и на выходе получал отсортированный эксель

    • @oldcoders
      @oldcoders  Рік тому

      Можно конечно. Просто мне это не нужно. Во первых я это только для себя делаю, зачем усложнять программу графическим интерфейсом.
      А во вторых - этот скрипт будет частью большого веб-приложения, там пользователь конечно уже будет нажимать на кнопку «загрузить подкатегории товаров» и выбирать файл.

  • @damirgarifullin8430
    @damirgarifullin8430 3 місяці тому

    сортировка была строковой, то есть 3.1 далее 3.10 потом 3.2 и так далее

  • @ivankirshchin1228
    @ivankirshchin1228 Рік тому +1

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

    • @oldcoders
      @oldcoders  Рік тому +2

      Сделаю сделаю, меня просили уже о нем, щас просто пока форс мажор небольшой. Напишу когда выложу его.

    • @oldcoders
      @oldcoders  Рік тому +1

      Выложил github.com/break-and-enter/oldcodersclub.git

    • @ivankirshchin1228
      @ivankirshchin1228 Рік тому

      @@oldcoders Супер! Огромное спасибо!

  • @volodink
    @volodink Рік тому +1

    Поглядите в сторону pandas, сразу есть функционал группировок. Крутое видео, так держать!

    • @oldcoders
      @oldcoders  Рік тому +1

      Да, я пандас использую, но про него будет отдельное видео

    • @volodink
      @volodink Рік тому

      @@oldcoders можно показать, как другой библиотекой модно решить туже задачу

    • @oldcoders
      @oldcoders  Рік тому

      Что-то типа того, да

  • @АндрейХа-й5о
    @АндрейХа-й5о Рік тому +1

    Я один залез в комментарии, что бы узнать, как посмотреть описание функции или метода на виндовс? 😁 Вообщем сочетание "Ctrl + B".

    • @oldcoders
      @oldcoders  Рік тому +1

      О, гран мерси !

  • @romul23
    @romul23 8 місяців тому

    в excel это решается в два клика сводной таблицей

  • @alf_rnk
    @alf_rnk 27 днів тому

    Какое количество фреймворков необходимо знать для уровня джуниор? Или нужно выбрать область питона например, создание сайтов и один фреймворк - и насиловать только эту область? просто каждый фреймворк - какие то свои команды и тд и тп. Короче с каждым днем в попытке изучить питон я все больше не понимаю как люди устраиваются на работу....

    • @oldcoders
      @oldcoders  27 днів тому

      Именно для ответа на ваши вопросы я снял видео:
      ua-cam.com/video/Fo3SH_G0kKI/v-deo.htmlsi=HV7ORbZ03HSfVxTb

  • @НЛОшкаслуны
    @НЛОшкаслуны 4 місяці тому

    Я пишу код как раз на VBA и так странно смотреть это видео. Вроде всё то же самое (sheets, worksheets, workbooks, cells) но по другому. Прям зловещая долина возникает в голове

    • @oldcoders
      @oldcoders  4 місяці тому

      Если все легко решаете на VBA, то конечно им и надо пользоваться.

  • @maxnorge
    @maxnorge Рік тому +1

    Библиотека Pandas имеет хороший функционал по таблицам, выборкам, группировкам, вводу/выводу файлов и т.д. Спасибо за видео!

    • @oldcoders
      @oldcoders  Рік тому +1

      Да, я ее использую. В этом видео нет.

    • @andreyflash6001
      @andreyflash6001 Рік тому +1

      Тоже про Pandas подумал. Но в исходном excel файле (в названии столбцов таблицы) заметил объединённые ячейки. У меня Pandas такое читать отказывается.
      Есть вообще способ открыть excel файл с объединёнными ячейками через Pandas?

  • @MsRestartround
    @MsRestartround 4 місяці тому +1

    Маркировать пункты списка бокалами пива - это отличная идея.

    • @oldcoders
      @oldcoders  4 місяці тому

      Шалю немного :)

  • @megustabmwf
    @megustabmwf Рік тому +1

    Приветствую. А где можно скачать такой ексель файлик для примера?

    • @oldcoders
      @oldcoders  Рік тому

      Ой.. сделайте сами, там делов то. Или с работы любой файл возьмите. Или уж в крайнем случае погуглите, эксель файл скачать. Какой нибудь прайс лист найдется уж.

  • @vfarsova
    @vfarsova 4 місяці тому

    Сортировка в ini применилась некорректно: 1.1, 1.11, 1.12, 1.2 и т.д.

    • @oldcoders
      @oldcoders  4 місяці тому

      Да, но этого было достаточно, не хотелось усложнять

  • @Biskey-Bo
    @Biskey-Bo Рік тому

    Почему не использовал Pandas? Это ж типа специально заточенная под такие задачи векторизованная библиотека, где подобные группировки и аггрегации делаются в одну строку.
    И повторюсь, библиотека векторизованная, все считается на наносекунды, никаких циклов. Чтение экселевских файлов и запись в них прилагается из коробки.

    • @oldcoders
      @oldcoders  Рік тому

      Я использую пандас в других задачах, про них тоже будет видео

  • @КириллЧе-я5ы
    @КириллЧе-я5ы Рік тому

    А как же завет программера - задачу надо сделать быстро и просто?🥴 если я на своих любимых плюсах буду пытаться решить эту задачу, погрязну надолго… для начала, с подбором библиотек для excel’я😉

    • @oldcoders
      @oldcoders  Рік тому +1

      Для меня это самый простой и быстрый путь. С экселем на питоне я работаю с самого начала.
      И потом, этот код я все равно делал как часть моего большого проекта, так что сейчас он работает у меня в Джанго-приложении.