Какво точно можете да правите с Python? Ето 3 основни приложения на Python.

Ако мислите да изучавате Python - или ако наскоро сте започнали да го изучавате - може да се запитате:

„За какво точно мога да използвам Python?“

Е, това е труден въпрос за отговор, защото има толкова много приложения за Python.

Но с течение на времето забелязах, че има 3 основни популярни приложения за Python:

  • Уеб разработка
  • Data Science - включително машинно обучение, анализ на данни и визуализация на данни
  • Скриптове

Нека да поговорим за всеки от тях на свой ред.

Уеб разработка

Уеб рамките, базирани на Python като Django и Flask , напоследък станаха много популярни за уеб разработка.

Тези уеб рамки ви помагат да създадете код от страна на сървъра (бекенд код) в Python. Това е кодът, който се изпълнява на вашия сървър, за разлика от устройствата и браузърите на потребителите (преден код). Ако не сте запознати с разликата между бекенд кода и кода отпред, моля, вижте бележката ми по-долу.

Но изчакайте, защо ми трябва уеб рамка?

Това е така, защото уеб рамката улеснява изграждането на обща бекенд логика. Това включва картографиране на различни URL адреси към парчета код на Python, работа с бази данни и генериране на HTML файлове, които потребителите виждат в своите браузъри.

Коя уеб рамка на Python трябва да използвам?

Django и Flask са две от най-популярните уеб рамки на Python. Бих препоръчал да използвате един от тях, ако тепърва започвате.

Каква е разликата между Django и Flask?

Има отлична статия по тази тема от Гарет Дуайер, така че нека я цитирам тук:

te>

Основни контрасти:

  • Колбата осигурява простота, гъвкавост и фино управление. Той е непионен (позволява ви да решите как искате да приложите нещата).
  • Django предоставя изчерпателно изживяване: получавате администраторски панел, интерфейси на база данни, ORM [обектно-релационно картографиране] и структура на директориите за вашите приложения и проекти.

Вероятно трябва да изберете:

  • Колба, ако сте фокусирани върху опита и възможностите за обучение или ако искате повече контрол върху това кои компоненти да използвате (например какви бази данни искате да използвате и как искате да взаимодействате с тях).
  • Django, ако сте фокусирани върху крайния продукт. Особено ако работите по директно приложение, като например сайт за новини, електронен магазин или блог, и искате винаги да има един, очевиден начин за правене на нещата.

te>

С други думи, ако сте начинаещ, Flask вероятно е по-добър избор, тъй като има по-малко компоненти, с които да се справите. Също така, Flask е по-добър избор, ако искате повече персонализиране.

От друга страна, ако искате да изградите нещо направо, Django вероятно ще ви позволи да стигнете по-бързо.

Сега, ако искате да научите Django, препоръчвам книгата Django за начинаещи. Можете да го намерите тук.

Можете също да намерите безплатните примерни глави от тази книга тук.

Добре, да отидем на следващата тема!

Data Science - включително машинно обучение, анализ на данни и визуализация на данни

На първо място, нека да прегледа какво машинно обучение е .

Мисля, че най-добрият начин да обясните какво е машинно обучение би бил да ви дам един прост пример.

Да приемем, че искате да разработите програма, която автоматично разпознава какво има на снимката.

И така, като се има предвид тази снимка по-долу (снимка 1), вие искате вашата програма да разпознае, че е куче.

Original text


Като се има предвид тази друга по-долу (Фигура 2), искате вашата програма да разпознае, че е таблица.

Може да кажете, добре, мога просто да напиша някакъв код, за да го направя. Например, може би ако на снимката има много светлокафяви пиксели, тогава можем да кажем, че това е куче.

Или може би можете да разберете как да откриете ръбове в картина. Тогава, бихте могли да кажете, ако има много прави ръбове, това е маса.

Този подход обаче става доста труден доста бързо. Ами ако на снимката има бяло куче без кафява коса? Ами ако картината показва само кръглите части на масата?

Тук идва машинното обучение.

Машинното обучение обикновено реализира алгоритъм, който автоматично открива модел в дадения вход.

Можете да дадете, да речем, 1000 снимки на куче и 1000 снимки на маса на алгоритъм за машинно обучение. След това ще научи разликата между куче и маса. Когато му дадете нова снимка на куче или маса, то ще може да разпознае кое е.

Мисля, че това донякъде прилича на това как бебето научава нови неща. Как бебето научава, че едно нещо прилича на куче, а друго на маса? Вероятно от куп примери.

Вероятно не казвате изрично на бебето: „Ако нещо е космат и има светлокафява коса, това вероятно е куче.“

Вероятно просто бихте казали: „Това е куче. Това също е куче. А този е маса. Това също е маса. "

Алгоритмите за машинно обучение работят почти по същия начин.

Можете да приложите същата идея към:

  • препоръчителни системи (мислите YouTube, Amazon и Netflix)
  • разпознаване на лица
  • гласово разпознаване

наред с други приложения.

Популярните алгоритми за машинно обучение, за които може би сте чували, включват:

  • Невронни мрежи
  • Дълбоко обучение
  • Поддържайте векторни машини
  • Случайна гора

Можете да използвате всеки от горните алгоритми за решаване на проблема с етикетирането на картината, който обясних по-рано.

Python за машинно обучение

Има популярни библиотеки за машинно обучение и рамки за Python.

Две от най-популярните са scikit-learn и TensorFlow .

  • scikit-learn идва с някои от най-популярните алгоритми за машинно обучение, вградени. По-горе споменах някои от тях.
  • TensorFlow е по-скоро библиотека на ниско ниво, която ви позволява да изграждате персонализирани алгоритми за машинно обучение.

Ако тепърва започвате с проект за машинно обучение, бих препоръчал първо да започнете с scikit-learn. Ако започнете да срещате проблеми с ефективността, тогава бих започнал да разглеждам TensorFlow.

Как да науча машинно обучение?

За да науча основите на машинното обучение, бих препоръчал или курс на машинно обучение на Станфорд или на Калтех.

Моля, обърнете внимание, че имате нужда от основни познания по смятане и линейна алгебра, за да разберете някои от материалите в тези курсове.

След това бих практикувал това, което сте научили от един от тези курсове с Kaggle. Това е уебсайт, където хората се състезават за изграждане на най-добрия алгоритъм за машинно обучение за даден проблем. Те имат хубави уроци и за начинаещи.

Какво ще кажете за анализ на данните и визуализация на данните?

За да ви помогна да разберете как могат да изглеждат те, позволете ми да ви дам един прост пример тук.

Да приемем, че работите за компания, която продава някои продукти онлайн.

След това, като анализатор на данни, можете да нарисувате стълбовидна диаграма като тази.

От тази графика можем да разберем, че мъжете са закупили над 400 единици от този продукт, а жените са купили около 350 единици от този продукт тази конкретна неделя.

Като анализатор на данни може да излезете с няколко възможни обяснения за тази разлика.

Едно очевидно възможно обяснение е, че този продукт е по-популярен сред мъжете, отколкото при жените. Друго възможно обяснение може да бъде, че размерът на извадката е твърде малък и тази разлика е причинена случайно. И още едно възможно обяснение може да бъде, че мъжете са склонни да купуват този продукт по-често само в неделя по някаква причина.

За да разберете кое от тези обяснения е правилно, можете да нарисувате друга графика като тази.

Вместо да показваме данните само за неделя, ние ги разглеждаме за цяла седмица. Както можете да видите, от тази графика можем да видим, че тази разлика е доста постоянна в различните дни.

От този малък анализ може да заключите, че най-убедителното обяснение за тази разлика е, че този продукт е просто по-популярен сред мъжете, отколкото при жените.

От друга страна, какво, ако вместо това видите графика като тази?

Тогава, какво обяснява разликата в неделя?

Може да кажете, може би мъжете са склонни да купуват повече от този продукт само в неделя по някаква причина. Или може би просто съвпадение е, че мъжете са купили повече от него в неделя.

И така, това е опростен пример за това как може да изглежда анализът на данните в реалния свят.

Работата по анализ на данните, която извърших, когато работех в Google и Microsoft, беше много подобна на този пример - само по-сложна. Всъщност използвах Python в Google за този вид анализ, докато използвах JavaScript в Microsoft.

Използвах SQL в двете компании за изтегляне на данни от нашите бази данни. След това бих използвал или Python и Matplotlib (в Google), или JavaScript и D3.js (в Microsoft), за да визуализирам и анализирам тези данни.

Анализ / визуализация на данни с Python

Една от най-популярните библиотеки за визуализация на данни е Matplotlib.

Добра библиотека е да започнете, защото:

  • Лесно е да започнете
  • Някои други библиотеки като Seaborn се основават на него. И така, изучаването на Matplotlib ще ви помогне да научите тези други библиотеки по-късно.

Как да науча анализ / визуализация на данни с Python?

Първо трябва да научите основите на анализа и визуализацията на данните. Когато потърсих добри ресурси за това онлайн, не можах да намеря нито един. И така, в крайна сметка направих видеоклип в YouTube на тази тема:

В крайна сметка направих пълен курс по тази тема по Pluralsight, който можете да вземете безплатно, като се регистрирате за 10-дневния им безплатен пробен период.

Бих препоръчал и двамата.

След като научите основите на анализа и визуализацията на данните, ще бъде полезно и изучаването на основите на статистиката от уебсайтове като Coursera и Khan Academy.

Скриптове

Какво е скриптове?

Скриптове обикновено се отнасят до писане на малки програми, които са предназначени за автоматизиране на прости задачи.

И така, нека ви дам пример от моя личен опит тук.

Преди работех в малък стартъп в Япония, където имахме система за поддръжка по имейл. Това беше система за нас, за да отговорим на въпроси, които клиентите ни изпратиха по имейл.

Когато работех там, имах задачата да преброя броя на имейлите, съдържащи определени ключови думи, за да можем да анализираме получените имейли.

Можехме да го направим ръчно, но вместо това написах проста програма / прост скрипт, за да автоматизирам тази задача.

Всъщност тогава използвахме Ruby за това, но Python също е добър език за този вид задачи. Python е подходящ за този тип задачи главно защото има относително прост синтаксис и е лесен за писане. Също така е бързо да напишете нещо малко с него и да го тествате.

Ами вградените приложения?

Не съм специалист по вградени приложения, но знам, че Python работи с Rasberry Pi. Изглежда като популярно приложение сред любителите на хардуера.

Ами игрите?

Бихте могли да използвате библиотеката, наречена PyGame, за разработване на игри, но това не е най-популярният игрален механизъм там. Бихте могли да го използвате за изграждане на хоби проект, но аз лично не бих го избрал, ако сериозно се занимавате с разработка на игри.

По-скоро бих препоръчал да започнете с Unity с C #, който е един от най-популярните двигатели за игри. Тя ви позволява да създадете игра за много платформи, включително Mac, Windows, iOS и Android.

Ами настолните приложения?

Можете да направите такъв с Python, използвайки Tkinter, но и това не изглежда като най-популярния избор.

Вместо това изглежда, че езици като Java, C # и C ++ са по-популярни за това.

Напоследък някои компании също започнаха да използват JavaScript за създаване на настолни приложения.

Например, настолното приложение на Slack е създадено с нещо, наречено Electron. Тя ви позволява да създавате настолни приложения с JavaScript.

Лично аз, ако създавах настолно приложение, щях да отида с опция JavaScript. Позволява ви да използвате повторно част от кода от уеб версия, ако го имате.

И аз обаче не съм специалист по настолни приложения, така че, моля, уведомете ме в коментар, ако не сте съгласни или сте съгласни с мен по този въпрос.

Python 3 или Python 2?

Бих препоръчал Python 3, тъй като е по-модерен и е по-популярен вариант в този момент.

Бележка под линия: Бележка за back-end кода срещу front-end кода (само в случай, че не сте запознати с условията):

Да предположим, че искате да направите нещо като Instagram.

След това ще трябва да създадете преден код за всеки тип устройство, което искате да поддържате.

Можете да използвате например:

  • Суифт за iOS
  • Java за Android
  • JavaScript за уеб браузъри

Всеки набор от код ще работи на всеки тип устройство / браузър. Това ще бъде наборът от код, който определя как ще изглежда оформлението на приложението, как трябва да изглеждат бутоните, когато щракнете върху тях и т.н.

Все пак ще ви е необходима възможността да съхранявате информация и снимки на потребителите. Ще искате да ги съхранявате на вашия сървър, а не само на устройствата на вашите потребители, така че последователите на всеки потребител да могат да разглеждат неговите / нейните снимки.

Тук влиза бекенд кодът / кода от страна на сървъра. Ще трябва да напишете някакъв бекенд код, за да направите неща като:

  • Следете кой следи кого
  • Компресирайте снимки, за да не заемат толкова много място за съхранение
  • Препоръчайте снимки и нови сметки на всеки потребител в откриването на функцията

И така, това е разликата между бекенд кода и кода отпред.

Между другото, Python не е единственият добър избор за писане на бекенд / код от страна на сървъра. Има много други популярни избори, включително Node.js, който се основава на JavaScript.

Хареса ли ви тази статия? След това може да харесате и моя канал в YouTube.

Имам канал за обучение по програмиране в YouTube, наречен CS Dojo с 440 000+ абоната, където създавам повече съдържание като тази статия.

Например, може да ви харесат тези видеоклипове:

Както и да е, благодаря много, че прочетохте статията ми!