Čo konkrétne môžete robiť s Pythonom? Tu sú 3 hlavné aplikácie Pythonu.

Ak uvažujete o učení sa jazyka Python - alebo ste sa ho začali učiť nedávno - môžete si položiť otázku:

"Na čo konkrétne môžem použiť Python?"

To je zložitá otázka, na ktorú treba odpovedať, pretože pre Python je toľko aplikácií.

Postupom času som však zistil, že pre Python existujú 3 hlavné populárne aplikácie:

  • Vývoj webových aplikácií
  • Veda o údajoch - vrátane strojového učenia, analýzy údajov a vizualizácie údajov
  • Skriptovanie

Hovorme postupne o každom z nich.

Vývoj webových aplikácií

Webové rámce založené na Pythone ako Django a Flask sa v poslednej dobe stali veľmi populárnymi pre vývoj webových aplikácií.

Tieto webové rámce vám pomôžu vytvoriť kód na strane servera (backendový kód) v Pythone. To je kód, ktorý sa spúšťa na vašom serveri, na rozdiel od zariadení a prehliadačov používateľov (front-endový kód). Ak nepoznáte rozdiel medzi backendovým a front-endovým kódom, pozrite si moju poznámku pod čiarou nižšie.

Ale počkajte, prečo potrebujem webový framework?

Je to preto, lebo webový rámec uľahčuje vytváranie spoločnej backendovej logiky. To zahŕňa mapovanie rôznych adries URL na kúsky kódu Pythonu, prácu s databázami a generovanie súborov HTML, ktoré používatelia vidia vo svojich prehliadačoch.

Ktorý webový rámec Pythonu by som mal použiť?

Django a Flask sú dva z najpopulárnejších webových rámcov Pythonu. Odporúčam vám použiť jeden z nich, ak ešte len začínate.

Aký je rozdiel medzi Django a Flask?

O tejto téme je vynikajúci článok od Garetha Dwyera, tak mi ho sem citujte:

te>

Hlavné kontrasty:

  • Flask poskytuje jednoduchosť, flexibilitu a jemnozrnnú kontrolu. Je to neurčené (umožňuje vám rozhodnúť sa, ako chcete veci implementovať).
  • Django poskytuje komplexný zážitok: po vybalení získate panel administrátora, databázové rozhrania, ORM [objektovo-relačné mapovanie] a adresárovú štruktúru pre vaše aplikácie a projekty.

Pravdepodobne by ste si mali zvoliť:

  • Flask, ak sa zameriavate na skúsenosti a možnosti vzdelávania, alebo ak chcete mať väčšiu kontrolu nad tým, ktoré komponenty chcete použiť (napríklad aké databázy chcete používať a ako s nimi chcete komunikovať).
  • Django, ak sa zameriaš na konečný produkt. Najmä ak pracujete na priamočiarej aplikácii, ako je spravodajský web, e-shop alebo blog, a chcete, aby vždy existoval jediný zrejmý spôsob, ako robiť veci.

te>

Inými slovami, ak ste začiatočníci, Flask je pravdepodobne lepšou voľbou, pretože má menej komponentov na riešenie. Flask je tiež lepšou voľbou, ak chcete viac prispôsobenia.

Na druhej strane, ak sa snažíte niečo postaviť priamo, Django vás tam pravdepodobne nechá dostať rýchlejšie.

Teraz, ak sa chcete naučiť Django, odporúčam knihu s názvom Django pre začiatočníkov. Nájdete ho tu.

Tiež tu nájdete bezplatné ukážky kapitol tejto knihy.

Dobre, poďme na ďalšiu tému!

Veda o údajoch - vrátane strojového učenia, analýzy údajov a vizualizácie údajov

Po prvé, pozrime sa na to, čo strojové učenie sa .

Myslím, že najlepším spôsobom, ako vysvetliť, čo je to strojové učenie, by bolo poskytnúť vám jednoduchý príklad.

Povedzme, že chcete vyvinúť program, ktorý automaticky zistí, čo je na obrázku.

Vzhľadom na tento obrázok nižšie (obrázok 1) chcete, aby váš program rozpoznal, že je to pes.

Na základe tohto druhého nižšie (obrázok 2) chcete, aby váš program rozpoznal, že ide o tabuľku.

Možno si poviete, že na to môžem napísať nejaký kód. Napríklad ak je na obrázku veľa svetlohnedých pixelov, potom môžeme povedať, že je to pes.

Alebo môžete zistiť, ako zistiť hrany na obrázku. Potom by ste mohli povedať, že ak existuje veľa rovných hrán, potom je to tabuľka.

Tento druh prístupu je však dosť zložitý. Čo ak je na obrázku biely pes bez hnedých vlasov? Čo ak obrázok zobrazuje iba okrúhle časti stola?

Tu prichádza na rad strojové učenie.

Strojové učenie zvyčajne implementuje algoritmus, ktorý automaticky detekuje vzor v danom vstupe.

Algoritmu strojového učenia môžete dať napríklad 1 000 obrázkov psa a 1 000 obrázkov tabuľky. Potom sa naučí rozdiel medzi psom a stolom. Keď mu dáte nový obrázok psa alebo stola, bude schopný rozpoznať, o koho ide.

Myslím, že je to do istej miery podobné tomu, ako sa dieťa učí nové veci. Ako sa dieťa naučí, že jedna vec vyzerá ako pes a iná ako stôl? Pravdepodobne z množstva príkladov.

Pravdepodobne dieťaťu výslovne nepoviete: „Ak je niečo chlpaté a má svetlohnedé vlasy, potom je to pravdepodobne pes.“

Pravdepodobne by ste povedali: „To je pes. To je tiež pes. A toto je tabuľka. Ten je tiež stôl. “

Algoritmy strojového učenia fungujú takmer rovnako.

Rovnaký nápad môžete použiť na:

  • odporúčacie systémy (myslíte na YouTube, Amazon a Netflix)
  • rozpoznávanie tváre
  • rozpoznávanie hlasu

okrem iných aplikácií.

Medzi populárne algoritmy strojového učenia, o ktorých ste možno počuli, patria:

  • Neurálne siete
  • Hlboké učenie
  • Podporujte vektorové stroje
  • Náhodný les

Na vyriešenie problému s označovaním obrázkov, ktorý som už vysvetlil vyššie, môžete použiť ktorýkoľvek z vyššie uvedených algoritmov.

Python pre strojové učenie

Pre Python existujú populárne knižnice a rámce strojového učenia.

Dve z najobľúbenejších sú scikit-learn a TensorFlow .

  • scikit-learn prichádza s niektorými z populárnejších zabudovaných algoritmov strojového učenia. Niektoré z nich som spomenul vyššie.
  • TensorFlow je skôr knižnica na nízkej úrovni, ktorá umožňuje vytvárať vlastné algoritmy strojového učenia.

Ak práve začínate s projektom strojového učenia, odporúčam vám, aby ste najskôr začali scikit-learn. Ak začnete naraziť na problémy s efektívnosťou, potom by som sa začal zaoberať TensorFlow.

Ako sa mám naučiť strojové učenie?

Ak sa chcete naučiť základy strojového učenia, odporučil by som buď kurz strojového učenia od Stanfordu alebo Caltech.

Upozorňujeme, že na pochopenie niektorých materiálov v týchto kurzoch potrebujete základné znalosti z počtu a lineárnej algebry.

Potom by som si precvičil to, čo si sa naučil z jedného z týchto kurzov u Kaggle. Je to web, na ktorom ľudia súťažia o vytvorenie najlepšieho algoritmu strojového učenia pre daný problém. Majú tiež pekné návody pre začiatočníkov.

Čo analýza údajov a vizualizácia údajov?

Aby sme vám pomohli pochopiť, ako by to mohlo vyzerať, dovoľte mi tu uviesť jednoduchý príklad.

Povedzme, že pracujete pre spoločnosť, ktorá predáva niektoré produkty online.

Potom ako analytik údajov môžete nakresliť takýto stĺpcový graf.

Z tohto grafu môžeme vyčítať, že muži si túto konkrétnu nedeľu kúpili viac ako 400 kusov tohto produktu a ženy asi 350 kusov tohto produktu.

Ako analytik údajov môžete prísť s niekoľkými možnými vysvetleniami tohto rozdielu.

Jedno zjavné možné vysvetlenie je, že tento produkt je obľúbenejší u mužov ako u žien. Ďalším možným vysvetlením môže byť, že veľkosť vzorky je príliš malá a tento rozdiel bol spôsobený len náhodou. A ešte ďalším možným vysvetlením by mohlo byť, že muži majú z nejakého dôvodu tendenciu kupovať tento výrobok viac iba v nedeľu.

Aby ste pochopili, ktoré z týchto vysvetlení je správne, môžete nakresliť ďalší graf, ako je tento.

Namiesto zobrazenia údajov iba za nedeľu sa pozeráme na údaje za celý týždeň. Ako vidíte, z tohto grafu vidíme, že tento rozdiel je v priebehu rôznych dní dosť konzistentný.

Z tejto malej analýzy môžete vyvodiť záver, že najpresvedčivejším vysvetlením tohto rozdielu je, že tento produkt je jednoducho obľúbenejší u mužov ako u žien.

Na druhej strane, čo keď namiesto toho uvidíte graf ako tento?

Čo potom vysvetľuje rozdiel v nedeľu?

Mohli by ste povedať, možno majú muži z nejakého dôvodu tendenciu kupovať viac tohto produktu iba v nedeľu. Alebo to bola možno len náhoda, že muži si toho v nedeľu kúpili viac.

Toto je zjednodušený príklad toho, ako môže vyzerať analýza dát v reálnom svete.

Analýza dát, ktorú som urobil, keď som pracoval v spoločnosti Google a Microsoft, bol veľmi podobný tomuto príkladu - iba zložitejší. Na tento druh analýzy som vlastne použil Python v Google, zatiaľ čo v Microsoftu som použil JavaScript.

Na získanie údajov z našich databáz som použil SQL v oboch týchto spoločnostiach. Potom by som na vizualizáciu a analýzu týchto údajov použil buď Python a Matplotlib (v spoločnosti Google), alebo JavaScript a D3.js (v spoločnosti Microsoft).

Analýza / vizualizácia dát pomocou Pythonu

Jednou z najpopulárnejších knižníc na vizualizáciu údajov je Matplotlib.

Na začiatok je dobrá knižnica, pretože:

  • Začať je ľahké
  • Niektoré ďalšie knižnice, napríklad Seaborn, sú na nej založené. Takže učenie Matplotlib vám pomôže neskôr sa naučiť tieto ďalšie knižnice.

Ako sa mám naučiť analýzu / vizualizáciu údajov pomocou Pythonu?

Najprv by ste sa mali naučiť základy analýzy a vizualizácie údajov. Keď som hľadal pre tento účel dobré zdroje, nemohol som nájsť žiadne. Nakoniec som teda natočil video z YouTube na túto tému:

Nakoniec som tiež dokončil celý kurz na túto tému v službe Pluralsight, ktorý môžete absolvovať zadarmo po prihlásení sa na 10-dňovú bezplatnú skúšobnú verziu.

Odporučil by som ich oboch.

Po osvojení základných princípov analýzy a vizualizácie údajov vám bude nápomocné aj osvojenie základných štatistík z webových stránok, ako sú Coursera a Khan Academy.

Skriptovanie

Čo je skriptovanie?

Skriptovanie sa zvyčajne týka písania malých programov, ktoré sú určené na automatizáciu jednoduchých úloh.

Dovoľte mi tu uviesť príklad z mojej osobnej skúsenosti.

Pracoval som v malom startupe v Japonsku, kde sme mali systém e-mailovej podpory. Bol to pre nás systém reagovania na otázky, ktoré nám zákazníci poslali e-mailom.

Keď som tam pracoval, mal som za úlohu spočítať počet e-mailov obsahujúcich určité kľúčové slová, aby sme mohli analyzovať e-maily, ktoré sme dostali.

Mohli sme to urobiť ručne, ale namiesto toho som napísal jednoduchý program / jednoduchý skript na automatizáciu tejto úlohy.

V skutočnosti sme na to vtedy používali Ruby, ale Python je tiež dobrý jazyk pre tento druh úloh. Python je vhodný pre tento typ úloh hlavne preto, že má pomerne jednoduchú syntax a ľahko sa píše. Tiež je rýchle napísať s ním niečo malé a vyskúšať to.

A čo vložené aplikácie?

Nie som odborník na zabudované aplikácie, ale viem, že Python pracuje s Rasberry Pi. Zdá sa to ako populárna aplikácia medzi hardvérovými nadšencami.

A čo hranie?

Na vývoj hier by ste mohli použiť knižnicu s názvom PyGame, ale nie je to najpopulárnejší herný engine. Môžete ho použiť na vytvorenie hobby projektu, ale osobne by som si ho nevybral, ak to s vývojom hier myslíte vážne.

Skôr by som odporúčal začať s Unity s C #, čo je jeden z najpopulárnejších herných enginov. Umožňuje vám zostaviť hru pre mnoho platforiem vrátane Mac, Windows, iOS a Android.

A čo desktopové aplikácie?

Jeden by ste mohli vytvoriť pomocou Pythonu pomocou Tkintera, ale tiež sa to nezdá ako najobľúbenejšia voľba.

Namiesto toho sa zdá, že jazyky ako Java, C # a C ++ sú pre to populárnejšie.

Niektoré spoločnosti nedávno začali používať JavaScript aj na vytváranie desktopových aplikácií.

Napríklad desktopová aplikácia Slack bola postavená na niečom, čo sa volá Electron. Umožňuje vám vytvárať desktopové aplikácie pomocou JavaScriptu.

Osobne, ak by som staval desktopovú aplikáciu, šiel by som s možnosťou JavaScriptu. Umožňuje vám znova použiť časť kódu z webovej verzie, ak ju máte.

Nie som však ani odborníkom na desktopové aplikácie, takže ak s tým nesúhlasíte alebo so mnou súhlasíte, dajte mi prosím vedieť v komentári.

Python 3 alebo Python 2?

Odporučil by som Python 3, pretože je modernejší a v súčasnosti je to populárnejšia možnosť.

Poznámka pod čiarou: Poznámka o back-endovom kóde oproti front-endovému kódu (iba pre prípad, že by ste tieto pojmy nepoznali):

Povedzme, že chcete vytvoriť niečo ako Instagram.

Potom budete musieť vytvoriť front-endový kód pre každý typ zariadenia, ktoré chcete podporovať.

Môžete použiť napríklad:

  • Swift pre iOS
  • Java pre Android
  • JavaScript pre webové prehliadače

Každá sada kódu bude fungovať na každom type zariadenia / prehliadača. Bude to sada kódu, ktorá určuje, aké bude rozloženie aplikácie, ako majú tlačidlá vyzerať, keď na ne kliknete atď.

Stále však budete potrebovať možnosť ukladať informácie a fotografie používateľov. Budete ich chcieť uložiť na svojom serveri, nielen na zariadeniach svojich používateľov, aby si sledovatelia každého používateľa mohli prezerať jeho fotografie.

Toto je miesto, kde prichádza backendový kód / kód na strane servera. Budete musieť napísať nejaký backendový kód, aby ste mohli robiť napríklad tieto veci:

  • Sledujte, kto koho sleduje
  • Komprimujte fotografie, aby nezaberali toľko úložného priestoru
  • Vo funkcii objavovania odporúčajte každému používateľovi fotografie a nové účty

To je teda rozdiel medzi backendovým a front-endovým kódom.

Mimochodom, Python nie je jedinou dobrou voľbou pre zápis kódu na strane servera / na strane servera. Existuje mnoho ďalších populárnych možností, napríklad Node.js, ktorý je založený na JavaScripte.

Páčil sa vám tento článok? Potom by sa vám mohol páčiť aj môj kanál YouTube.

Mám programátorský vzdelávací kanál YouTube s názvom CS Dojo s viac ako 440 000 predplatiteľmi, kde produkujem viac obsahu, ako je tento článok.

Mohli by sa vám páčiť napríklad tieto videá:

Každopádne ďakujem za prečítanie môjho článku!