Ako razmišljate o učenju Pythona - ili ako ste ga nedavno započeli - možda se pitate:
"Za što točno mogu koristiti Python?"Pa, na to je škakljivo pitanje odgovoriti, jer postoji toliko mnogo aplikacija za Python.
No s vremenom sam primijetio da postoje 3 glavne popularne aplikacije za Python:
- Web razvoj
- Znanost podataka - uključujući strojno učenje, analizu podataka i vizualizaciju podataka
- Skriptiranje
Razgovarajmo o svakom od njih redom.
Web razvoj
Web okviri koji se temelje na Pythonu poput Djanga i Flaska nedavno su postali vrlo popularni za web razvoj.
Ovi web okviri pomažu vam u stvaranju koda na strani poslužitelja (pozadinski kod) u Pythonu. To je kôd koji se izvodi na vašem poslužitelju, za razliku od korisničkih uređaja i preglednika (prednji kôd). Ako niste upoznati s razlikom između pozadinskog i prednjeg koda, pogledajte moju fusnotu u nastavku.
Ali pričekajte, zašto trebam web framework?
To je zato što web okvir olakšava izgradnju zajedničke pozadinske logike. To uključuje mapiranje različitih URL-ova na dijelove Python koda, bavljenje bazama podataka i generiranje HTML datoteka koje korisnici vide u svojim preglednicima.
Koji Python web framework trebam koristiti?
Django i Flask dva su najpopularnija Python web okvira. Preporučio bih jedan od njih ako tek započinjete.
Koja je razlika između Djanga i Flaska?
Postoji izvrstan članak o ovoj temi Gareth Dwyer, pa dopustite mi da ga citiram ovdje:
Glavni kontrasti:
- Tikvica pruža jednostavnost, fleksibilnost i fino zrnastu kontrolu. Neprimjeren je (omogućuje vam da odlučite kako želite implementirati stvari).
- Django pruža sveobuhvatno iskustvo: odmah ćete dobiti administratorsku ploču, sučelja baze podataka, ORM [objektno-relacijsko mapiranje] i strukturu direktorija za vaše aplikacije i projekte.
Vjerojatno biste trebali odabrati:
- Tikvica, ako ste usredotočeni na iskustvo i mogućnosti učenja ili ako želite veću kontrolu nad tim koje komponente koristiti (kao što su baze podataka koje želite koristiti i način na koji želite komunicirati s njima).
- Django, ako si usredotočen na konačni proizvod. Pogotovo ako radite na izravnoj aplikaciji, poput web stranice s vijestima, e-trgovine ili bloga, i želite da uvijek postoji jedan, očit način rada.
te>
Drugim riječima, ako ste početnik, Flask je vjerojatno bolji izbor jer ima manje komponenata za rješavanje. Također, Flask je bolji izbor ako želite više prilagodbi.
S druge strane, ako tražite nešto ravno prema naprijed, Django će vam vjerojatno omogućiti da brže stignete.
Ako želite naučiti Django, preporučujem knjigu Django za početnike. Možete ga pronaći ovdje.
Ovdje možete pronaći i besplatna poglavlja te knjige.
Dobro, idemo na sljedeću temu!
Znanost podataka - uključujući strojno učenje, analizu podataka i vizualizaciju podataka
Prije svega, pogledajmo što stroj za učenje je .
Mislim da bi najbolji način da objasnim što je strojno učenje bio dati vam jednostavan primjer.
Recimo da želite razviti program koji automatski otkriva ono što je na slici.
Dakle, s obzirom na ovu donju sliku (slika 1), želite da vaš program prepozna da je to pas.

S obzirom na ovaj drugi u nastavku (slika 2), želite da vaš program prepozna da je to tablica.

Možete reći, pa, mogu samo napisati neki kôd za to. Na primjer, možda ako na slici ima puno svijetlosmeđih piksela, onda možemo reći da je to pas.
Ili možda, možete otkriti kako otkriti rubove na slici. Tada, možete reći, ako ima mnogo ravnih rubova, onda je to stol.
Međutim, ovakav pristup postaje prilično težak. Što ako je na slici bijeli pas bez smeđe dlake? Što ako slika prikazuje samo okrugle dijelove stola?
Tu dolazi do strojnog učenja.
Strojno učenje obično implementira algoritam koji automatski otkriva obrazac u zadanom inputu.
Recimo, 1.000 slika psa i 1.000 slika stola možete dati algoritmu strojnog učenja. Tada će naučiti razliku između psa i stola. Kad mu date novu sliku psa ili stola, moći će prepoznati koji je to.
Mislim da je ovo pomalo slično onome kako beba uči nove stvari. Kako beba nauči da jedna stvar izgleda poput psa, a druga kao stol? Vjerojatno iz gomile primjera.
Vjerojatno djetetu izričito ne kažete: "Ako je nešto dlakavo i ima svijetlosmeđu kosu, onda je to vjerojatno pas."
Vjerojatno biste samo rekli: „To je pas. Ovo je također pas. A ovaj je stol. Taj je također stol. "
Algoritmi strojnog učenja rade gotovo na isti način.
Istu ideju možete primijeniti na:
- sustavi za preporuke (mislite YouTube, Amazon i Netflix)
- prepoznavanje lica
- prepoznavanje glasa
između ostalih aplikacija.
Popularni algoritmi strojnog učenja o kojima ste možda čuli uključuju:
- Neuronske mreže
- Duboko učenje
- Podržavaju vektorski strojevi
- Slučajna šuma
Možete koristiti bilo koji od gornjih algoritama za rješavanje problema s označavanjem slika koji sam ranije objasnio.
Python za strojno učenje
Postoje popularne knjižnice strojnog učenja i okviri za Python.
Dvije najpopularnije su scikit-learn i TensorFlow .
- scikit-learn dolazi s ugrađenim nekim od popularnijih algoritama strojnog učenja. Gore sam spomenuo neke od njih.
- TensorFlow je više biblioteka niske razine koja vam omogućuje izradu prilagođenih algoritama strojnog učenja.
Ako tek započinjete s projektom strojnog učenja, preporučio bih da prvo započnete s scikit-learnom. Ako počnete nailaziti na probleme s učinkovitošću, onda bih počeo tražiti TensorFlow.
Kako bih trebao naučiti strojno učenje?
Da bih naučio osnove strojnog učenja, preporučio bih ili Stanfordov ili Caltechov tečaj strojnog učenja.
Napominjemo da vam je potrebno osnovno znanje računa i linearne algebre da biste razumjeli neke od materijala na tim tečajevima.
Tada bih s Kaggleom vježbao ono što ste naučili na jednom od tih tečajeva. To je web stranica na kojoj se ljudi natječu u izradi najboljeg algoritma strojnog učenja za određeni problem. Imaju lijepe vodiče i za početnike.
Što je s analizom podataka i vizualizacijom podataka?
Da bih vam pomogao razumjeti kako bi to moglo izgledati, ovdje ću vam dati jedan jednostavan primjer.
Recimo da radite za tvrtku koja neke proizvode prodaje na mreži.
Tada biste, kao analitičar podataka, mogli nacrtati trakasti grafikon poput ovog.

Iz ovog grafikona možemo vidjeti da su muškarci ove nedjelje kupili preko 400 jedinica ovog proizvoda, a žene oko 350 jedinica ovog proizvoda.
Kao analitičar podataka, mogli biste iznijeti nekoliko mogućih objašnjenja ove razlike.
Jedno očito moguće objašnjenje je da je ovaj proizvod popularniji kod muškaraca nego kod žena. Drugo moguće objašnjenje moglo bi biti da je veličina uzorka premala i da je ta razlika nastala slučajno. A još jedno moguće objašnjenje može biti da muškarci iz nekog razloga teže kupuju ovaj proizvod više samo u nedjelju.
Da biste razumjeli koje je od ovih objašnjenja točno, možete nacrtati još jedan graf poput ovog.

Umjesto da prikazujemo podatke samo za nedjelju, podatke gledamo punih tjedan dana. Kao što vidite, na ovom grafikonu možemo vidjeti da je ta razlika prilično konzistentna tijekom različitih dana.
Iz ove male analize mogli biste zaključiti da je najuvjerljivije objašnjenje ove razlike to što je ovaj proizvod jednostavno popularniji kod muškaraca nego kod žena.
S druge strane, što ako umjesto njega vidite ovakav grafikon?

Što onda objašnjava razliku u nedjelju?
Mogli biste reći, možda muškarci iz nekog razloga teže kupuju više ovog proizvoda samo u nedjelju. Ili je možda bila slučajnost što su je muškarci u nedjelju kupili više.
Dakle, ovo je pojednostavljeni primjer kako bi analiza podataka mogla izgledati u stvarnom svijetu.
Rad na analizi podataka koji sam radio dok sam radio u Googleu i Microsoftu bio je vrlo sličan ovom primjeru - samo složeniji. Zapravo sam koristio Python u Googleu za ovu vrstu analize, dok sam koristio JavaScript u Microsoftu.
Koristio sam SQL u obje te tvrtke za izvlačenje podataka iz naših baza podataka. Tada bih za vizualizaciju i analizu tih podataka koristio Python i Matplotlib (na Googleu) ili JavaScript i D3.js (na Microsoftu).
Analiza / vizualizacija podataka s Pythonom
Jedna od najpopularnijih knjižnica za vizualizaciju podataka je Matplotlib.
Dobra je knjižnica za početak jer:
- Lako je započeti
- Na njemu se temelje i neke druge knjižnice poput Seaborn. Dakle, učenje Matplotliba pomoći će vam da kasnije naučite ove druge knjižnice.
Kako da naučim analizu / vizualizaciju podataka s Pythonom?
Prvo biste trebali naučiti osnove analize i vizualizacije podataka. Kad sam tražio dobre resurse za ovo na mreži, nisam ih mogao pronaći. Tako sam na kraju napravio YouTube video na ovu temu:
Također sam završio čitav tečaj o ovoj temi na Pluralsightu, koji možete besplatno pohađati ako se prijavite na njihovo desetodnevno besplatno probno razdoblje.
Preporučio bih obojicu.
Nakon što naučite osnove analize podataka i vizualizacije, bit će vam od pomoći i učenje osnova statistike s web stranica poput Coursere i Khan Academy.
Skriptiranje
Što je skriptiranje?
Skriptiranje se obično odnosi na pisanje malih programa koji su dizajnirani za automatizaciju jednostavnih zadataka.
Dakle, dopustite mi da vam dam primjer iz mog osobnog iskustva ovdje.
Prije sam radio u malom startupu u Japanu, gdje smo imali sustav podrške putem e-pošte. To nam je bio sustav za odgovaranje na pitanja koja su nam kupci poslali e-poštom.
Kad sam tamo radio, imao sam zadatak prebrojati broj e-adresa koje sadrže određene ključne riječi kako bismo mogli analizirati e-poštu koju smo dobili.
Mogli smo to učiniti ručno, ali umjesto toga, napisao sam jednostavan program / jednostavnu skriptu za automatizaciju ovog zadatka.
Zapravo smo tada koristili Ruby za to, ali Python je također dobar jezik za ovu vrstu zadataka. Python je pogodan za ovu vrstu zadatka uglavnom zato što ima relativno jednostavnu sintaksu i lako ga je napisati. Uz to je brzo i nešto malo napisati i testirati.
Što je s ugrađenim aplikacijama?
Nisam stručnjak za ugrađene aplikacije, ali znam da Python radi s Rasberry Pi. Čini se kao popularna aplikacija među hardverskim hobistima.
Što je s igrama?
Biblioteku nazvanu PyGame mogli biste koristiti za razvoj igara, ali to nije najpopularniji gaming motor. Pomoću njega biste mogli napraviti hobi projekt, ali osobno ga ne bih odabrao ako se ozbiljno bavite razvojem igara.
Umjesto toga, preporučio bih da započnete s Unity s C #, koji je jedan od najpopularnijih igraćih motora. Omogućuje vam izgradnju igre za mnoge platforme, uključujući Mac, Windows, iOS i Android.
Što je s računalnim aplikacijama?
Mogli biste ga napraviti s Pythonom koristeći Tkinter, ali ni to se ne čini najpopularnijim izborom.
Umjesto toga, čini se da su jezici poput Java, C # i C ++ popularniji za to.
Nedavno su i neke tvrtke počele koristiti JavaScript za stvaranje stolnih aplikacija.
Na primjer, Slackova stolna aplikacija izgrađena je s nečim nazvanim Electron. Omogućuje vam izradu aplikacija za radne površine s JavaScriptom.
Osobno, ako bih gradio aplikaciju za radnu površinu, išao bih s JavaScript opcijom. Omogućuje vam ponovno korištenje dijela koda iz web verzije ako ga imate.
Međutim, nisam stručnjak ni za stolne programe, pa vas molim da me obavijestite u komentaru ako se s tim ne slažete ili se slažete sa mnom.
Python 3 ili Python 2?
Preporučio bih Python 3 jer je moderniji i u ovom je trenutku popularnija opcija.
Fusnota: Napomena o pozadinskom kodu u odnosu na prednjem kodu (samo u slučaju da niste upoznati s pojmovima):
Recimo da želite napraviti nešto poput Instagrama.
Zatim ćete trebati izraditi internetski kôd za svaku vrstu uređaja koji želite podržati.
Možete koristiti, na primjer:
- Swift za iOS
- Java za Android
- JavaScript za web preglednike
Svaki skup koda pokrenut će se na svakoj vrsti uređaja / preglednika. Ovo će biti skup koda koji određuje kakav će biti izgled aplikacije, kako bi trebali izgledati gumbi kada ih kliknete itd.
Ipak, i dalje će vam trebati mogućnost pohrane podataka i fotografija korisnika. Morat ćete ih pohraniti na svoj poslužitelj, a ne samo na uređaje svojih korisnika kako bi sljedbenici svakog korisnika mogli pregledavati njegove fotografije.
Ovdje dolazi pozadinski kôd / kôd na strani poslužitelja. Morat ćete napisati neki pozadinski kôd da biste učinili sljedeće:
- Pratite tko koga prati
- Stisnite fotografije tako da ne zauzimaju toliko prostora za pohranu
- Preporučite fotografije i nove račune svakom korisniku u značajci otkrivanja
Dakle, ovo je razlika između pozadinskog i prednjeg koda.
Inače, Python nije jedini dobar izbor za pisanje pozadinskog koda / koda na strani poslužitelja. Postoje mnogi drugi popularni izbori, uključujući Node.js, koji se temelji na JavaScript-u.
Svidio vam se ovaj članak? Tada bi vam se mogao svidjeti i moj YouTube kanal.
Imam YouTube kanal za edukaciju o programiranju pod nazivom CS Dojo s više od 440 000 pretplatnika, gdje proizvodim više sadržaja poput ovog članka.
Na primjer, mogli bi vam se svidjeti ovi videozapisi: