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

Поделиться
HTML-код
  • Опубликовано: 27 май 2024
  • Python-разработчик от Хекслет - lnnk.in/jddo
    Реальный пример из жизни, как я работал с Excel - файлом при помощи языка программирования Python.
    Задача - обработать XLSX-файл Бланка заказа и составить новую таблицу соответствия подкатегорий товара и принадлежащих им артикулов.
    Подробно объясняю процесс создания программы.
    В процессе использую библиотеку openpyxl, операции со строками, типы данных dictionary, list, операции со строками, сортировку словаря по ключам и многое другое.
    ⭐️ Мой подробный "Роадмап деда-программиста. Python бэкенд." со скидкой 10% : stepik.org/a/133721/pay?promo...
    Чат Дедов-программистов в телеграме: t.me/oldcodersclub
    Наш очень крутой GitHub дедов-программистов с кучей полезной информации для начинающих - роадмапы, с чего начать и куда развиваться : github.com/OldCodersClub
    Финальный код и excel файл: github.com/break-and-enter/ol...
    00:00 Intro
    00:15 Задача
    01:50 Библиотека openpyxl
    03:23 Архитектура программы
    03:53 Цикл for
    04:14 Смотрим декларацию методов в PyCharm
    05:25 Метод cell из openpyxl
    06:13 Полезная реклама
    08:00 Продолжаем
    09:29 Словарь
    11:54 Список как значение словаря
    13:09 Красивый вывод: pprint
    13:53 Запись в файл
    14:54 Операции со строками
    16:47 Сортировка словаря по ключам
    17:55 Финальный код
  • НаукаНаука

Комментарии • 516

  • @abzalbotbayev
    @abzalbotbayev Год назад +84

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

    • @oldcoders
      @oldcoders  Год назад +3

      😆😆😆

    • @Akkaunt__Yerjan
      @Akkaunt__Yerjan Год назад

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

    • @sergey_ra
      @sergey_ra Год назад

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

    • @sergey_ra
      @sergey_ra Год назад +1

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

  • @user-bp4ks7bi7h
    @user-bp4ks7bi7h Год назад +68

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

  • @progway8574
    @progway8574 Год назад +36

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

  • @user-fz7jx9uv9y
    @user-fz7jx9uv9y Год назад +68

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

    • @oldcoders
      @oldcoders  Год назад +10

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

    • @eugenedukatta9355
      @eugenedukatta9355 Год назад +1

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

    • @TurboDeaz
      @TurboDeaz 15 дней назад

      @@eugenedukatta9355 с версии 3.9

  • @alvares2729
    @alvares2729 Год назад

    Удачи в Новом году!
    Буду с нетерпением ждать новые видосы🤗

  • @sergiimatiavin3573
    @sergiimatiavin3573 Год назад +7

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

    • @oldcoders
      @oldcoders  Год назад +2

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

  • @i.e.2650
    @i.e.2650 Год назад +4

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

  • @user-zo7gq5sk9k
    @user-zo7gq5sk9k Год назад +3

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

  • @maths781
    @maths781 Год назад +5

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

  • @axel-cjuh5426
    @axel-cjuh5426 Год назад +3

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

  • @ExcelStore
    @ExcelStore Год назад +3

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

  • @user-mn7nf4bc2f
    @user-mn7nf4bc2f Год назад +4

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

  • @Juvelir97
    @Juvelir97 Год назад +2

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

  • @QWERTY-om5fg
    @QWERTY-om5fg Год назад +8

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

  • @user-qb5wo7yv7m
    @user-qb5wo7yv7m Год назад +6

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

  • @850scout
    @850scout Год назад

    вы такой молодец.поддерживаете своими роликами.Спасибо!

  • @user-fs5mx9ew8d
    @user-fs5mx9ew8d Год назад +2

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

  • @user-pb2pu2tq1s
    @user-pb2pu2tq1s Год назад +26

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

    • @oldcoders
      @oldcoders  Год назад +13

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

    • @kostashvetsov9258
      @kostashvetsov9258 Год назад

      @@oldcoders 🤝🤝🤝

    • @MrSuperfantom
      @MrSuperfantom Год назад

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

    • @oldcoders
      @oldcoders  Год назад +3

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

    • @abracadabra5491
      @abracadabra5491 8 месяцев назад

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

  • @pavelzaytsev_moscow
    @pavelzaytsev_moscow 5 месяцев назад

    Спасибо! Отличный информативный контент. Удачи в Новом году и новых идей в развитии канала🎉

  • @arudskyy
    @arudskyy Год назад +2

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

  • @johnbelyaev4031
    @johnbelyaev4031 7 месяцев назад

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

  • @user-mq6vh6du9s
    @user-mq6vh6du9s Год назад +47

    привет. Здорово, что показываешь реальные задачи с реальными алгоритмами) Продолжай в том же духе). По коду хотелось бы добавить, что можно избавиться от конструкции 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

      Класс!

  • @vasilejosu3431
    @vasilejosu3431 4 месяца назад +1

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

  • @user-me6gu6nh2w
    @user-me6gu6nh2w 11 месяцев назад +7

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

    • @e.m.3378
      @e.m.3378 14 дней назад

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

  • @goviktor
    @goviktor Год назад +3

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

  • @MsRestartround
    @MsRestartround 14 дней назад +1

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

    • @oldcoders
      @oldcoders  14 дней назад

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

  • @user-mw7dz4fg7f
    @user-mw7dz4fg7f Год назад

    Мне вообще видео в тему!
    Как раз думал исполнить что то подобное с данными ЕХ таблицы.
    Спасибо!

  • @mrrappbit
    @mrrappbit Год назад +2

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

  • @Abramov_Andrey
    @Abramov_Andrey 11 месяцев назад +1

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

    • @oldcoders
      @oldcoders  11 месяцев назад

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

  • @nikprilutskiy7064
    @nikprilutskiy7064 Год назад +7

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

    • @oldcoders
      @oldcoders  Год назад

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

    • @yawneed
      @yawneed Год назад +1

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

    • @user-pk7ik7ho9q
      @user-pk7ik7ho9q Год назад

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

  • @RiantHoff
    @RiantHoff Год назад +6

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

    • @oldcoders
      @oldcoders  Год назад +2

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

  • @user-qn6pq1dk5h
    @user-qn6pq1dk5h Год назад +1

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

  • @BROnik
    @BROnik Год назад +2

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

    • @oldcoders
      @oldcoders  Год назад

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

    • @user-fr2cy6ng6z
      @user-fr2cy6ng6z Год назад

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

  • @andredru4278
    @andredru4278 Год назад

    Спасибо. Очень понятные и наглядные комментарии.

  • @rrroll
    @rrroll Год назад

    хороший формат, все понятно, спасибо & так держать!

  • @vernnms78
    @vernnms78 Год назад

    Очень познавательно! Не программирую, но с удовольствием посмотрел и вник в код.

  • @evgenyjagushinsky6695
    @evgenyjagushinsky6695 Год назад

    Отлично сказано!!! Раз освоил свой язык программирования, так и используй его!

  • @volhv12
    @volhv12 Год назад +1

    Ну очень круто)
    Доходчиво и увлекательно)

  • @user-db7kz5un3x
    @user-db7kz5un3x Год назад

    Круто! Спасибо! С большим удовольствием посмотрел!

  • @user-ce3me9oc7r
    @user-ce3me9oc7r Год назад

    Давно шукав схоже відео для роботи з хl, шикарне пояснення )))

  • @user-qh5fr3yo1w
    @user-qh5fr3yo1w 2 месяца назад

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

  • @yuriyruchev9218
    @yuriyruchev9218 10 месяцев назад

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

  • @drevo100
    @drevo100 Год назад +3

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

    • @oldcoders
      @oldcoders  Год назад

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

  • @no101vmv
    @no101vmv Год назад +1

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

  • @konanicopol7451
    @konanicopol7451 8 месяцев назад

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

  • @GlExcel
    @GlExcel Год назад +5

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

  • @Cotucini
    @Cotucini Год назад

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

  • @MrTubeer
    @MrTubeer Год назад +6

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

    • @oldcoders
      @oldcoders  Год назад +8

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

    • @Gimli_Dwarf
      @Gimli_Dwarf Год назад

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

    • @edrdr
      @edrdr Год назад

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

    • @no101vmv
      @no101vmv Год назад

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

  • @user-rb3dk6ny3p
    @user-rb3dk6ny3p Год назад

    Спасибо за видео! Очень интересно

  • @qwaqa8
    @qwaqa8 Год назад

    Очень информативно и интересно!

  • @italia9279
    @italia9279 Год назад

    Спасибо за видео! Было позновательно)

  • @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-строки невозможно их разлюбить

  • @mkqwm
    @mkqwm Год назад +1

    спасибо дед за интересные ролики

  • @maxsam5741
    @maxsam5741 Год назад

    Спасибо за труд!

  • @Fly2nowr
    @Fly2nowr Год назад

    Класс 🙌 просто и лаконично!

  • @a.osethkin55
    @a.osethkin55 Год назад

    Спасибо большое. Очень интересно

  • @vvvarvfx
    @vvvarvfx Год назад +2

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

  • @siralex8331
    @siralex8331 Год назад

    ура, новый видос вышел!

  • @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 Год назад

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

    • @user-ok2oo7pt2r
      @user-ok2oo7pt2r 6 месяцев назад

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

  • @secretadmirateur5979
    @secretadmirateur5979 Год назад +1

    Вот бы видео на этом канале появлялись чаще!

    • @oldcoders
      @oldcoders  Год назад +1

      На этой неделе выйдет новое. Из этой же серии «пишу реальную программу»

  • @Edmond_Dantes28
    @Edmond_Dantes28 11 дней назад

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

  • @user-xq3qy4qv5z
    @user-xq3qy4qv5z Год назад

    У вас преподавательский талант

  • @sergiusz8620
    @sergiusz8620 Год назад

    Спасибо, твои видео мотивируют

  • @user-ul4se4ct7d
    @user-ul4se4ct7d Год назад

    Спасибо за информацию!

  • @mr.wrangler
    @mr.wrangler Год назад

    Очень подробно , спасибо

  • @kornevsergey
    @kornevsergey Год назад +1

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

  • @ndt_master
    @ndt_master Год назад

    с удовольствием посмотрел видео и почитал комментарии

  • @Time2paw
    @Time2paw 11 месяцев назад

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

  • @AnuarAitkazin
    @AnuarAitkazin Год назад +2

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

  • @maxnorge
    @maxnorge Год назад +1

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

    • @oldcoders
      @oldcoders  Год назад +1

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

    • @andreyflash6001
      @andreyflash6001 Год назад +1

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

  • @alisherxakimov762
    @alisherxakimov762 Год назад

    Всё чётко ясно обьяснили спс огромное

  • @user-ys3si9fc6b
    @user-ys3si9fc6b Год назад

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

  • @mister_123
    @mister_123 6 месяцев назад

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

  • @user-ts9fd3cy9d
    @user-ts9fd3cy9d Год назад +1

    Очень круто!

  • @DenisTrebushnikov
    @DenisTrebushnikov 10 месяцев назад

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

  • @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 11 месяцев назад

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

  • @dnk1761
    @dnk1761 Год назад +1

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

    • @oldcoders
      @oldcoders  Год назад +1

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

  • @Standa015
    @Standa015 Год назад

    Бесконечно можно смотреть на три вещи: как огонь горит, вода течёт и профессионал работает. Так что посмотрю ка ещё раз. Это было красиво, я кайфонул. А вот использование огрызка удивило :)

    • @oldcoders
      @oldcoders  Год назад +1

      Ой я не профессионал точно, я не работаю программистом. Я любитель 😀
      Мак - потрясающий комп, я ему не нарадуюсь уже много лет. И для программирования очень хорошо подходит.

    • @Standa015
      @Standa015 Год назад

      Всё программисты которых знаю я работают в основном а Linux. Сам хотел обзавестись Qubes OS, ну или Tails на ноуте использовать:)

    • @oldcoders
      @oldcoders  Год назад

      Для повседневной жизни линукс менее удобен чем мак. Линукс хорош для сервера, куда свои приложения выкладывать будете. И макОС она тоже unix подобная система, считайте тот же линукс.

  • @web-writer4769
    @web-writer4769 Год назад

    чувак, спасибо! очень клёво!

  • @Teraed
    @Teraed 11 месяцев назад

    Спасибо интересно.
    Один вопрос если у нас в исходном файле будет за двоенная строка (Артикул + Подгруппа товара), то и в финале два одинаковых артикула в подгруппе товара выйдет?
    Если да, то как дописать проверку, и может добавить вывод дублей в отдельный файл для правки исходника. А то ошибка в одной цифре артикула и песчаная толстовка идет как черная.

  • @user-zl5sp9yh1n
    @user-zl5sp9yh1n Год назад

    Добавление в список по ключу хорошо делать через dict.setdefault('key', []).append('item')

  • @yura9885
    @yura9885 Год назад

    классный канал! респект тебе)

  • @user-kc2xm1gu2n
    @user-kc2xm1gu2n Год назад

    Шикарно!

  • @yabanciyim
    @yabanciyim Год назад

    Спасибо за интересное видео.
    Но если говорить о том какой тип данных идеален для решения данной задачи - то это конечно же классическая задача для defaultdict - словаря со значением по умолчанию)..

    • @oldcoders
      @oldcoders  Год назад

      Да, многие написали про этот метод, спасибо!!

  • @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 , сортировать его и т.д.
      Мне это было не нужно, такой первичной сортировки было достаточно.

  • @harddi7316
    @harddi7316 Год назад

    Жаль нельзя поставить сразу два, а лучше три лайка ) пробовал с ноги сесть за написание скриптов для экселя 3 месяца назад на работке, потратил прилично времени и ничего не понял, все не работало и я забросил... сейчас после бесплатных курсов на степике (парни там реально наваливают знаний, если нужна ссыль маякните) все предельно понятно в этом видео, надо потихонечку разбираться со сторонними библиотечками.

  • @kalisto4281
    @kalisto4281 Год назад

    Большое спасибо за ролик, подскажите пожалуйста что за ide используется?

  • @pazakharov
    @pazakharov Год назад +1

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

    • @oldcoders
      @oldcoders  Год назад +1

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

  • @denatle
    @denatle Год назад

    Кстати о исходниках и "если хочется, то можно здесь всё сломать". Надо бы рассказать людям про virtual environment'ы. Меньше "но на моём компе работает" будем слышать)

  • @dmt1938
    @dmt1938 Год назад

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

  • @paladinalik
    @paladinalik Год назад

    Переменную string_towrite я бы записал через форматирование: f"{key}={string_values}
    "

  • @user-os1xg1rh4c
    @user-os1xg1rh4c Год назад

    Деды вперед!

    • @oldcoders
      @oldcoders  Год назад

      Воистину вперед!

  • @user-mh5ym8mh7x
    @user-mh5ym8mh7x Год назад

    Сижу и думаю, человек вы или нет? Вы выучили в 44 и сидите на светлой теме, уважение😮😅

    • @oldcoders
      @oldcoders  Год назад

      😁 никогда не любил темные темы

  • @user-xk4fi4ie4v
    @user-xk4fi4ie4v Год назад +1

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

    • @oldcoders
      @oldcoders  Год назад +1

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

    • @user-xk4fi4ie4v
      @user-xk4fi4ie4v Год назад +1

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

  • @user-je1tq2nu1o
    @user-je1tq2nu1o 6 месяцев назад

    Спасибо Большое

  • @calionigor1184
    @calionigor1184 Год назад

    Спасибо! Подписка.

  • @sergasagen
    @sergasagen Год назад +1

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

    • @oldcoders
      @oldcoders  Год назад

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

  • @mishamishin5239
    @mishamishin5239 Год назад

    Спасибо за видео, очень нравится этот формат!
    Не совсем понял момент с sku: вы ж не объявляли эту переменную как list, как это работает?

    • @oldcoders
      @oldcoders  Год назад

      А sku это и не лист никакой. Лист это значение словаря, в котором элементами являются sku.
      subcategories_dict[subcategory]=[sku]
      Вот здесь список и объявляется.

    • @mishamishin5239
      @mishamishin5239 Год назад

      @@oldcoders Понял, спасибо большое за ответ!

  • @EKZOTIKSKLYAR
    @EKZOTIKSKLYAR 10 месяцев назад

    Спасибо! 👍

  • @seeemn_
    @seeemn_ Год назад

    Здравствуйте! Будут ли ещё выпуски с задачами Codewars?

    • @oldcoders
      @oldcoders  Год назад

      Будут! Идей много, но я редко выпускаю видео, поэтому все затягивается