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

Ғылым және технология

Python-разработчик от Хекслет - lnnk.in/jddo
Реальный пример из жизни, как я работал с Excel - файлом при помощи языка программирования Python.
Задача - обработать XLSX-файл Бланка заказа и составить новую таблицу соответствия подкатегорий товара и принадлежащих им артикулов.
Подробно объясняю процесс создания программы.
В процессе использую библиотеку openpyxl, операции со строками, типы данных dictionary, list, операции со строками, сортировку словаря по ключам и многое другое.
⭐️ Мой подробный "Роадмап деда-программиста. Python бэкенд." со скидкой 20% : stepik.org/a/133721/pay?promo...
(Срок действия ссылки - до 15.05.24)
Чат Дедов-программистов в телеграме: 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 Финальный код

Пікірлер: 511

  • @progway8574
    @progway8574 Жыл бұрын

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

  • @user-bp4ks7bi7h
    @user-bp4ks7bi7h Жыл бұрын

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

  • @abzalbotbayev
    @abzalbotbayev Жыл бұрын

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

  • @oldcoders

    @oldcoders

    Жыл бұрын

    😆😆😆

  • @Akkaunt__Yerjan

    @Akkaunt__Yerjan

    Жыл бұрын

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

  • @sergey_ra

    @sergey_ra

    Жыл бұрын

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

  • @sergey_ra

    @sergey_ra

    Жыл бұрын

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

  • @user-me6gu6nh2w
    @user-me6gu6nh2w11 ай бұрын

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

  • @alvares2729
    @alvares2729 Жыл бұрын

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

  • @i.e.2650
    @i.e.2650 Жыл бұрын

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

  • @axel-cjuh5426
    @axel-cjuh5426 Жыл бұрын

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

  • @user-qb5wo7yv7m
    @user-qb5wo7yv7m Жыл бұрын

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

  • @user-zo7gq5sk9k
    @user-zo7gq5sk9k Жыл бұрын

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

  • @Juvelir97
    @Juvelir97 Жыл бұрын

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

  • @maths781
    @maths781 Жыл бұрын

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

  • @ExcelStore
    @ExcelStore Жыл бұрын

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

  • @user-fz7jx9uv9y
    @user-fz7jx9uv9y Жыл бұрын

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

  • @oldcoders

    @oldcoders

    Жыл бұрын

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

  • @eugenedukatta9355

    @eugenedukatta9355

    Жыл бұрын

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

  • @TurboDeaz

    @TurboDeaz

    18 сағат бұрын

    @@eugenedukatta9355 с версии 3.9

  • @QWERTY-om5fg
    @QWERTY-om5fg Жыл бұрын

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

  • @user-mn7nf4bc2f
    @user-mn7nf4bc2f Жыл бұрын

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

  • @oldcoders

    @oldcoders

    Жыл бұрын

    ☺️🎄

  • @user-fs5mx9ew8d
    @user-fs5mx9ew8d Жыл бұрын

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

  • @goviktor
    @goviktor Жыл бұрын

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

  • @pavelzaytsev_moscow
    @pavelzaytsev_moscow4 ай бұрын

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

  • @850scout
    @850scout Жыл бұрын

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

  • @user-mw7dz4fg7f
    @user-mw7dz4fg7f Жыл бұрын

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

  • @johnbelyaev4031
    @johnbelyaev40317 ай бұрын

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

  • @volhv12
    @volhv12 Жыл бұрын

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

  • @rrroll
    @rrroll Жыл бұрын

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

  • @sergiimatiavin3573
    @sergiimatiavin3573 Жыл бұрын

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

  • @oldcoders

    @oldcoders

    Жыл бұрын

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

  • @BROnik
    @BROnik Жыл бұрын

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

  • @oldcoders

    @oldcoders

    Жыл бұрын

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

  • @user-fr2cy6ng6z

    @user-fr2cy6ng6z

    Жыл бұрын

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

  • @yuriyruchev9218
    @yuriyruchev92189 ай бұрын

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

  • @mrrappbit
    @mrrappbit Жыл бұрын

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

  • @vasilejosu3431
    @vasilejosu34314 ай бұрын

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

  • @user-pb2pu2tq1s
    @user-pb2pu2tq1s Жыл бұрын

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

  • @oldcoders

    @oldcoders

    Жыл бұрын

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

  • @kostashvetsov9258

    @kostashvetsov9258

    Жыл бұрын

    @@oldcoders 🤝🤝🤝

  • @MrSuperfantom

    @MrSuperfantom

    Жыл бұрын

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

  • @oldcoders

    @oldcoders

    Жыл бұрын

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

  • @abracadabra5491

    @abracadabra5491

    8 ай бұрын

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

  • @Abramov_Andrey
    @Abramov_Andrey11 ай бұрын

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

  • @oldcoders

    @oldcoders

    11 ай бұрын

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

  • @user-db7kz5un3x
    @user-db7kz5un3x Жыл бұрын

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

  • @user-mq6vh6du9s
    @user-mq6vh6du9s Жыл бұрын

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

  • @oldcoders

    @oldcoders

    Жыл бұрын

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

  • @a.d.8390

    @a.d.8390

    Жыл бұрын

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

  • @Gr3gnov

    @Gr3gnov

    Жыл бұрын

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

  • @oldcoders

    @oldcoders

    Жыл бұрын

    Класс!

  • @andredru4278
    @andredru4278 Жыл бұрын

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

  • @user-ce3me9oc7r
    @user-ce3me9oc7r Жыл бұрын

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

  • @Cotucini
    @Cotucini Жыл бұрын

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

  • @user-qn6pq1dk5h
    @user-qn6pq1dk5h Жыл бұрын

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

  • @user-rb3dk6ny3p
    @user-rb3dk6ny3p Жыл бұрын

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

  • @EKZOTIKSKLYAR
    @EKZOTIKSKLYAR9 ай бұрын

    Спасибо! 👍

  • @arudskyy
    @arudskyy Жыл бұрын

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

  • @drevo100
    @drevo100 Жыл бұрын

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

  • @oldcoders

    @oldcoders

    Жыл бұрын

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

  • @siralex8331
    @siralex8331 Жыл бұрын

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

  • @maxsam5741
    @maxsam5741 Жыл бұрын

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

  • @vernnms78
    @vernnms78 Жыл бұрын

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

  • @italia9279
    @italia9279 Жыл бұрын

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

  • @qwaqa8
    @qwaqa8 Жыл бұрын

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

  • @nikprilutskiy7064
    @nikprilutskiy7064 Жыл бұрын

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

  • @oldcoders

    @oldcoders

    Жыл бұрын

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

  • @yawneed

    @yawneed

    Жыл бұрын

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

  • @user-pk7ik7ho9q

    @user-pk7ik7ho9q

    Жыл бұрын

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

  • @user-ul4se4ct7d
    @user-ul4se4ct7d Жыл бұрын

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

  • @sergiusz8620
    @sergiusz8620 Жыл бұрын

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

  • @mkqwm
    @mkqwm Жыл бұрын

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

  • @a.osethkin55
    @a.osethkin55 Жыл бұрын

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

  • @user-ts9fd3cy9d
    @user-ts9fd3cy9d Жыл бұрын

    Очень круто!

  • @Fly2nowr
    @Fly2nowr Жыл бұрын

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

  • @mr.wrangler
    @mr.wrangler Жыл бұрын

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

  • @alisherxakimov762
    @alisherxakimov762 Жыл бұрын

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

  • @MsRestartround
    @MsRestartroundСағат бұрын

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

  • @oldcoders

    @oldcoders

    Сағат бұрын

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

  • @MrTubeer
    @MrTubeer Жыл бұрын

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

  • @oldcoders

    @oldcoders

    Жыл бұрын

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

  • @Gimli_Dwarf

    @Gimli_Dwarf

    Жыл бұрын

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

  • @edrdr

    @edrdr

    Жыл бұрын

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

  • @no101vmv

    @no101vmv

    Жыл бұрын

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

  • @user-kc2xm1gu2n
    @user-kc2xm1gu2n11 ай бұрын

    Шикарно!

  • @konanicopol7451
    @konanicopol74518 ай бұрын

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

  • @user-qh5fr3yo1w
    @user-qh5fr3yo1wАй бұрын

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

  • @web-writer4769
    @web-writer4769 Жыл бұрын

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

  • @evgenyjagushinsky6695
    @evgenyjagushinsky6695 Жыл бұрын

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

  • @yura9885
    @yura9885 Жыл бұрын

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

  • @ndt_master
    @ndt_master Жыл бұрын

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

  • @mister_123
    @mister_1236 ай бұрын

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

  • @IvanIvanov-rp6og
    @IvanIvanov-rp6og Жыл бұрын

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

  • @GlExcel
    @GlExcel Жыл бұрын

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

  • @RiantHoff
    @RiantHoff Жыл бұрын

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

  • @oldcoders

    @oldcoders

    Жыл бұрын

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

  • @user-je1tq2nu1o
    @user-je1tq2nu1o5 ай бұрын

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

  • @AnuarAitkazin
    @AnuarAitkazin Жыл бұрын

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

  • @user-xq3qy4qv5z
    @user-xq3qy4qv5z Жыл бұрын

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

  • @calionigor1184
    @calionigor1184 Жыл бұрын

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

  • @user-pg8ry1tm3t
    @user-pg8ry1tm3t10 ай бұрын

    Супер!

  • @Bop1ezh
    @Bop1ezh Жыл бұрын

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

  • @oldcoders

    @oldcoders

    Жыл бұрын

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

  • @user-jw9fx1xk5s
    @user-jw9fx1xk5s7 ай бұрын

    Пришлось перейти с vba на python в связи с задачей где vba уже не тянет: надо было обрабатывать и рассчитывать с высокой точностью по данным в excel файлах размером порядка 300-500 mb (500 тыс. строк и 150 столбцов) за 10 лет (в результате сформирован dataset на 15 gb). Столкнулся с проблемой библиотеки openpyxl - непредсказуемая обработка чисел: то например вместо исходного числа 0,3 выдает 0,2999999, или вместо -0,002 -2e-3. Пришлось оборачивать дополнительными функциями. Может есть какие-нибудь опции чтобы подавить такую обработку?

  • @oldcoders

    @oldcoders

    7 ай бұрын

    docs-python.ru/tutorial/operatsii-chislami-python/problemy-chisel-plavajuschej-zapjatoj/ здесь не дан ответ вам? А вообще с такими большими объемами данных вам уже лучше смотреть на Базы Данных. Они работают быстро, четко, им хоть миллионы строк нипочем. Один раз загнать ваш датасет в БД и уже с БД работать.

  • @tsvjatoslav

    @tsvjatoslav

    7 ай бұрын

    Используй библиотеку pandas

  • @secretadmirateur5979
    @secretadmirateur5979 Жыл бұрын

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

  • @oldcoders

    @oldcoders

    Жыл бұрын

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

  • @maxnorge
    @maxnorge Жыл бұрын

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

  • @oldcoders

    @oldcoders

    Жыл бұрын

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

  • @andreyflash6001

    @andreyflash6001

    Жыл бұрын

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

  • @Teraed
    @Teraed11 ай бұрын

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

  • @no101vmv
    @no101vmv Жыл бұрын

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

  • @dnk1761
    @dnk1761 Жыл бұрын

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

  • @oldcoders

    @oldcoders

    Жыл бұрын

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

  • @user-ys3si9fc6b
    @user-ys3si9fc6b Жыл бұрын

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

  • @user-os1xg1rh4c
    @user-os1xg1rh4c Жыл бұрын

    Деды вперед!

  • @oldcoders

    @oldcoders

    Жыл бұрын

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

  • @yabanciyim
    @yabanciyim Жыл бұрын

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

  • @oldcoders

    @oldcoders

    Жыл бұрын

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

  • @pavelpeklov3825
    @pavelpeklov38252 ай бұрын

    Спасибо, вполне полезно

  • @user-sl3qw9ef7z
    @user-sl3qw9ef7z Жыл бұрын

    Отлично!

  • @mishamishin5239
    @mishamishin5239 Жыл бұрын

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

  • @oldcoders

    @oldcoders

    Жыл бұрын

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

  • @mishamishin5239

    @mishamishin5239

    Жыл бұрын

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

  • @Time2paw
    @Time2paw10 ай бұрын

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

  • @vvvarvfx
    @vvvarvfx Жыл бұрын

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

  • @kalisto4281
    @kalisto4281 Жыл бұрын

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

  • @oldcoders

    @oldcoders

    Жыл бұрын

    PyCharm Community

  • @karkozov
    @karkozov Жыл бұрын

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

  • @seeemn_
    @seeemn_ Жыл бұрын

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

  • @oldcoders

    @oldcoders

    Жыл бұрын

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

  • @user-zl5sp9yh1n
    @user-zl5sp9yh1n Жыл бұрын

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

  • @wirbelwind2696
    @wirbelwind2696 Жыл бұрын

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

  • @oldcoders

    @oldcoders

    Жыл бұрын

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

  • @user-es4kn2gm9v
    @user-es4kn2gm9v Жыл бұрын

    Спасибо Вам 🇧🇾🇧🇾🇧🇾🇧🇾

  • @alkha7144
    @alkha7144 Жыл бұрын

    В поддержку.

  • @paladinalik
    @paladinalik Жыл бұрын

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

  • @fujimatosa
    @fujimatosa Жыл бұрын

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

  • @oldcoders

    @oldcoders

    Жыл бұрын

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

  • @ongrustit
    @ongrustit Жыл бұрын

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

  • @oldcoders

    @oldcoders

    Жыл бұрын

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

  • @ongrustit

    @ongrustit

    Жыл бұрын

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

  • @user-gv4dt2zy1q
    @user-gv4dt2zy1q Жыл бұрын

    Здравствуйте! Спасибо за материал! Просмотрел много комментариев к выпуску и не увидел, чтобы у кого-то возникала подобная ошибка: myfile.write(string_to_write) UnicodeEncodeError: 'ascii' codec can't encode characters in position 4-11: ordinal not in range(128) Система macOS Подскажите, пожалуйста, как решить

  • @oldcoders

    @oldcoders

    Жыл бұрын

    Какая то ошибка с кодировкой, на какой то символ ругается. Вбейте в гугл эту ошибку, ответ найдется

  • @megustabmwf
    @megustabmwf Жыл бұрын

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

  • @oldcoders

    @oldcoders

    Жыл бұрын

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

  • @nikitaorlov5530
    @nikitaorlov5530 Жыл бұрын

    Приветствую. Есть Pandas библиотека, которая тоже позволяет читать Excel файлы. Мне она показалась удобнее openpyxl.

  • @oldcoders

    @oldcoders

    Жыл бұрын

    Да, использую ее тоже. О ней будет отдельное видео.

Келесі