Kaj natančno lahko storite s Pythonom? Tu so 3 glavne aplikacije Pythona.

Če razmišljate o učenju Pythona - ali če ste se ga pred kratkim začeli učiti - se morda vprašate:

"Za kaj natančno lahko uporabim Python?"

No, na to težavno vprašanje je odgovoriti, ker je za Python toliko aplikacij.

Toda sčasoma sem opazil, da obstajajo 3 glavne priljubljene aplikacije za Python:

  • Spletni razvoj
  • Podatkovna znanost - vključno s strojnim učenjem, analizo in vizualizacijo podatkov
  • Skriptiranje

Pogovorimo se o vsakem od njih po vrsti.

Spletni razvoj

Spletni okviri, ki temeljijo na Pythonu, kot sta Django in Flask, so v zadnjem času zelo priljubljeni za spletni razvoj.

Ti spletni okviri vam pomagajo ustvariti kodo na strani strežnika (stransko kodo) v Pythonu. To je koda, ki se izvaja na vašem strežniku, v nasprotju z napravami in brskalniki uporabnikov (čelna koda). Če niste seznanjeni z razliko med zaledno kodo in vmesno kodo, si oglejte spodnjo opombo.

Toda počakajte, zakaj rabim spletni okvir?

To je zato, ker spletni okvir olajša gradnjo skupne zaledne logike. To vključuje preslikavo različnih URL-jev na koščke kode Python, obravnavo baz podatkov in ustvarjanje datotek HTML, ki jih uporabniki vidijo v svojih brskalnikih.

Kateri spletni okvir Python naj uporabim?

Django in Flask sta dva najbolj priljubljena spletna ogrodja Python. Če šele začenjate, priporočam uporabo enega od njih.

Kakšna je razlika med Django in Flaskom?

O tej temi je odličen članek Garetha Dwyerja, zato naj ga citiram tukaj:

te>

Glavni kontrasti:

  • Bučka zagotavlja preprostost, prilagodljivost in natančen nadzor. Je nenastalen (omogoča vam, da se odločite, kako želite stvari izvajati).
  • Django ponuja vseobsegajočo izkušnjo: takoj dobite skrbniško ploščo, vmesnike baze podatkov, ORM [objektno-relacijsko preslikavo] in strukturo imenikov za vaše aplikacije in projekte.

Verjetno bi morali izbrati:

  • Bučka, če ste osredotočeni na izkušnje in možnosti učenja ali če želite več nadzora nad tem, katere komponente uporabljati (na primer katere zbirke podatkov želite uporabiti in kako želite z njimi sodelovati).
  • Django, če si osredotočen na končni izdelek. Še posebej, če delate na neposredni aplikaciji, kot je spletno mesto z novicami, e-trgovina ali spletni dnevnik, in želite, da vedno obstaja en sam, očiten način.

te>

Z drugimi besedami, če ste začetnik, je Flask verjetno boljša izbira, saj ima manj komponent, s katerimi se lahko spopadete. Tudi Flask je boljša izbira, če želite več prilagoditev.

Po drugi strani pa vam bo Django verjetno pustil hitreje, če želite zgraditi nekaj naravnost naprej.

Če se želite naučiti Django, priporočam knjigo Django za začetnike. Najdete ga tukaj.

Tu lahko najdete tudi brezplačna vzorčna poglavja te knjige.

V redu, pojdimo na naslednjo temo!

Podatkovna znanost - vključno s strojnim učenjem, analizo in vizualizacijo podatkov

Najprej Oglejmo si, kaj strojno učenje je .

Menim, da bi bil najboljši način, da razložim, kaj je strojno učenje, preprost primer.

Recimo, da želite razviti program, ki samodejno zazna, kaj je na sliki.

Glede na spodnjo sliko (slika 1) želite, da vaš program prepozna, da gre za psa.

Glede na to spodaj (slika 2) želite, da vaš program prepozna, da je tabela.

Lahko bi rekli, no, za to lahko napišem samo kodo. Na primer, če je na sliki veliko svetlo rjavih pik, potem lahko rečemo, da gre za psa.

Ali pa lahko ugotovite, kako zaznati robove na sliki. Potem bi lahko rekli, če je veliko ravnih robov, potem je to miza.

Vendar je takšen pristop precej hiter. Kaj če je na sliki bel pes brez rjave dlake? Kaj če slika prikazuje samo okrogle dele tabele?

Tu nastopi strojno učenje.

Strojno učenje običajno izvaja algoritem, ki samodejno zazna vzorec v danem vnosu.

Algoritmu strojnega učenja lahko daste recimo 1000 slik psa in 1000 slik mize. Nato se bo naučil razlike med psom in mizo. Ko mu daste novo sliko psa ali mize, bo lahko zaznal, za katero gre.

Mislim, da je to nekoliko podobno temu, kako se otrok nauči novih stvari. Kako se otrok nauči, da je ena stvar videti kot pes, druga pa miza? Verjetno iz kopice primerov.

Verjetno dojenčku izrecno ne rečete: "Če je nekaj dlakavo in ima svetlo rjave lase, potem je verjetno pes."

Verjetno bi samo rekli: »To je pes. To je tudi pes. In ta je miza. Ta je tudi miza. "

Algoritmi strojnega učenja delujejo približno enako.

Isto idejo lahko uporabite za:

  • priporočilni sistemi (mislite YouTube, Amazon in Netflix)
  • prepoznavanje obrazov
  • prepoznavanje glasu

med drugimi aplikacijami.

Priljubljeni algoritmi strojnega učenja, o katerih ste morda že slišali, vključujejo:

  • Nevronske mreže
  • Globoko učenje
  • Podporni vektorski stroji
  • Naključni gozd

S katerim koli od zgornjih algoritmov lahko rešite težavo z označevanjem slik, ki sem jo razložil prej.

Python za strojno učenje

Obstajajo priljubljene knjižnice strojnega učenja in okviri za Python.

Dva izmed najbolj priljubljenih sta scikit-learn in TensorFlow .

  • scikit-learn prihaja z nekaterimi bolj priljubljenimi algoritmi strojnega učenja. Nekatere sem omenil zgoraj.
  • TensorFlow je bolj knjižnica na nizki ravni, ki vam omogoča izdelavo algoritmov strojnega učenja po meri.

Če šele začenjate s projektom strojnega učenja, vam priporočam, da najprej začnete s scikit-learn. Če začnete naleteti na težave z učinkovitostjo, bi začel iskati TensorFlow.

Kako naj se naučim strojnega učenja?

Če se želite naučiti osnov strojnega učenja, priporočam tečaj strojnega učenja na Stanfordu ali Caltechu.

Prosimo, upoštevajte, da potrebujete osnovno znanje računanja in linearne algebre, da boste razumeli nekatera gradiva na teh tečajih.

Potem bi s Kagglejem vadil, kar ste se naučili na enem od tečajev. To je spletno mesto, na katerem ljudje tekmujejo, kdo bo zgradil najboljši algoritem strojnega učenja za določeno težavo. Imajo lepe vaje tudi za začetnike.

Kaj pa analiza podatkov in vizualizacija podatkov?

Da bi vam pomagali razumeti, kako bi to lahko izgledalo, naj vam tukaj dam preprost primer.

Recimo, da delate v podjetju, ki nekatere izdelke prodaja prek spleta.

Nato lahko kot analitik podatkov narišete črtni graf, kot je ta.

Iz tega grafa lahko razberemo, da so moški v to nedeljo kupili približno 400 enot tega izdelka, ženske pa približno 350 enot tega izdelka.

Kot analitik podatkov boste morda našli nekaj možnih razlag za to razliko.

Očitna možna razlaga je, da je ta izdelek bolj priljubljen pri moških kot pri ženskah. Druga možna razlaga je lahko, da je velikost vzorca premajhna in je to razliko povzročilo naključje. In še ena možna razlaga je, da moški ta izdelek iz nekega razloga navadno kupujejo šele v nedeljo.

Če želite razumeti, katera od teh razlag je pravilna, lahko narišete še en graf, kot je ta.

Namesto da prikazujemo podatke samo za nedeljo, si jih ogledamo celoten teden. Kot lahko vidite, iz tega grafa vidimo, da je ta razlika v različnih dneh precej konstantna.

Iz te majhne analize bi lahko sklepali, da je najbolj prepričljiva razlaga te razlike ta, da je ta izdelek preprosto bolj priljubljen pri moških kot pri ženskah.

Kaj pa, če namesto tega vidite tak graf?

Kaj potem pojasnjuje razliko v nedeljo?

Lahko bi rekli, da moški zaradi tega razloga večino tega izdelka kupijo le v nedeljo. Ali pa je bilo zgolj naključje, da so ga moški v nedeljo kupili več.

Torej, to je poenostavljen primer, kako bi lahko bila analiza podatkov videti v resničnem svetu.

Analiza podatkov, ki sem jo opravljal v Googlu in Microsoftu, je bila zelo podobna temu primeru - le bolj zapletena. Za tovrstno analizo sem v Googlu dejansko uporabljal Python, pri Microsoftu pa JavaScript.

V obeh podjetjih sem uporabil SQL za pridobivanje podatkov iz naših zbirk podatkov. Nato bi za vizualizacijo in analizo teh podatkov uporabil Python in Matplotlib (pri Googlu) ali JavaScript in D3.js (pri Microsoftu).

Analiza / vizualizacija podatkov s Pythonom

Ena izmed najbolj priljubljenih knjižnic za vizualizacijo podatkov je Matplotlib.

Za začetek je dobra knjižnica, ker:

  • Začeti je enostavno
  • Nekatere druge knjižnice, kot je Seaborn, temeljijo na njem. Torej, učenje Matplotliba vam bo kasneje pomagalo pri učenju teh drugih knjižnic.

Kako naj se naučim analize / vizualizacije podatkov s Pythonom?

Najprej se morate naučiti osnov analize in vizualizacije podatkov. Ko sem iskal dobre vire za to na spletu, nisem našel nobenega. Tako sem na koncu ustvaril videoposnetek v YouTubu na to temo:

Končal sem tudi celoten tečaj o tej temi na Pluralsight, ki ga lahko brezplačno obiščete, tako da se prijavite na njihov 10-dnevni brezplačni preskus.

Priporočam oba.

Po učenju osnov analize podatkov in vizualizacije bodo v pomoč tudi učenja osnov statistike s spletnih mest, kot sta Coursera in Khan Academy.

Skriptiranje

Kaj je skriptiranje?

Skriptiranje se običajno nanaša na pisanje majhnih programov, ki so namenjeni avtomatizaciji preprostih nalog.

Torej, naj vam dam primer iz moje osebne izkušnje tukaj.

Včasih sem delal v majhnem zagonskem podjetju na Japonskem, kjer smo imeli sistem za podporo po e-pošti. To je bil sistem, na katerega smo odgovorili na vprašanja, ki so nam jih stranke poslale po e-pošti.

Ko sem delal tam, sem imel nalogo prešteti število e-poštnih sporočil, ki vsebujejo določene ključne besede, da smo lahko analizirali prejeta e-poštna sporočila.

Lahko bi to storili ročno, vendar sem namesto tega napisal preprost program / preprost skript za avtomatizacijo te naloge.

Pravzaprav smo takrat že uporabljali Ruby, toda Python je tudi dober jezik za tovrstne naloge. Python je primeren za to vrsto opravil predvsem zato, ker ima razmeroma preprosto sintakso in je enostaven za pisanje. Hitro tudi z njim napišete nekaj malega in preizkusite.

Kaj pa vdelane aplikacije?

Nisem strokovnjak za vdelane aplikacije, vem pa, da Python deluje z Rasberry Pi. Zdi se, da je priljubljena aplikacija med ljubitelji strojne opreme.

Kaj pa igre na srečo?

Knjižnico PyGame bi lahko uporabili za razvoj iger, vendar to ni najbolj priljubljen igralni stroj. Z njim bi lahko ustvarili hobi projekt, vendar se osebno ne bi odločil, če se resno ukvarjate z razvojem iger.

Namesto tega priporočam začetek uporabe Unity s C #, ki je eden izmed najbolj priljubljenih igralnih mehanizmov. Omogoča vam izdelavo igre za številne platforme, vključno z Macom, Windowsom, iOSom in Androidom.

Kaj pa namizne aplikacije?

S Pythonom bi ga lahko naredili s pomočjo Tkinterja, vendar se tudi to ne zdi najbolj priljubljena izbira.

Namesto tega se zdi, da so jeziki, kot so Java, C # in C ++, bolj priljubljeni za to.

V zadnjem času so nekatera podjetja začela uporabljati tudi JavaScript za ustvarjanje namiznih aplikacij.

Na primer, namizna aplikacija Slack je bila zgrajena z nečim, imenovanim Electron. Omogoča vam izdelavo namiznih aplikacij z JavaScriptom.

Če bi gradil namizno aplikacijo, bi osebno uporabil možnost JavaScript. Omogoča vam, da ponovno uporabite nekaj kode iz spletne različice, če jo imate.

Vendar pa tudi nisem strokovnjak za namizne programe, zato me prosim obvestite v komentarju, če se s tem ne strinjate ali strinjate.

Python 3 ali Python 2?

Priporočam Python 3, ker je bolj sodoben in je v tem trenutku bolj priljubljena možnost.

Opomba: Opomba o vmesni kodi in vmesni kodi (za vsak primer, če pogojev ne poznate):

Recimo, da želite narediti nekaj podobnega Instagramu.

Nato morate ustvariti čelno kodo za vsako vrsto naprave, ki jo želite podpirati.

Lahko uporabite na primer:

  • Swift za iOS
  • Java za Android
  • JavaScript za spletne brskalnike

Vsak niz kode se bo zagnal na vsaki vrsti naprave / brskalnika. To bo nabor kode, ki določa, kakšna bo postavitev aplikacije, kako naj bodo gumbi videti, ko jih kliknete itd.

Kljub temu boste še vedno potrebovali možnost shranjevanja informacij in fotografij uporabnikov. Shranili jih boste želeli v strežniku in ne le v napravah svojih uporabnikov, da si bodo lahko sledilci vsakega uporabnika ogledali njegove fotografije.

Tu pride notranja koda / koda na strani strežnika. Za nekaj takega boste morali napisati nekaj stranske kode:

  • Spremljajte, kdo koga spremlja
  • Stisnite fotografije, da ne bodo zavzele toliko prostora za shranjevanje
  • Priporočite fotografije in nove račune vsakemu uporabniku v funkciji odkrivanja

To je torej razlika med zaledno kodo in vmesno kodo.

Mimogrede, Python ni edina dobra izbira za pisanje zaledne / strežniške kode. Obstaja veliko drugih priljubljenih izbir, vključno z Node.js, ki temelji na JavaScriptu.

Ta članek vam je bil všeč? Potem vam bo morda všeč tudi moj YouTube kanal.

Imam YouTubov kanal za izobraževanje o programiranju, imenovan CS Dojo, z več kot 440.000 naročniki, kjer ustvarjam več vsebin, kot je ta članek.

Na primer, morda vam bodo všeč ti videoposnetki:

Kakorkoli, hvala lepa za branje mojega članka!