Cosa puoi fare esattamente con Python? Ecco le 3 principali applicazioni di Python.

Se stai pensando di imparare Python, o se hai iniziato a impararlo di recente, potresti chiederti:

"Per cosa posso usare esattamente Python?"

Questa è una domanda difficile a cui rispondere, perché ci sono così tante applicazioni per Python.

Ma nel tempo, ho osservato che ci sono 3 principali applicazioni popolari per Python:

  • Sviluppo web
  • Scienza dei dati, inclusi apprendimento automatico, analisi dei dati e visualizzazione dei dati
  • Scripting

Parliamo di ciascuno di loro a turno.

Sviluppo web

I framework web basati su Python come Django e Flask sono recentemente diventati molto popolari per lo sviluppo web.

Questi framework web ti aiutano a creare codice lato server (codice backend) in Python. Questo è il codice che viene eseguito sul tuo server, a differenza dei dispositivi e dei browser degli utenti (codice front-end). Se non hai familiarità con la differenza tra codice backend e codice front-end, consulta la mia nota a piè di pagina di seguito.

Ma aspetta, perché ho bisogno di un framework web?

Questo perché un framework Web semplifica la creazione di una logica di backend comune. Ciò include la mappatura di URL diversi su blocchi di codice Python, la gestione dei database e la generazione di file HTML che gli utenti vedono sui propri browser.

Quale framework web Python dovrei usare?

Django e Flask sono due dei framework web Python più popolari. Ti consiglio di usarne uno se hai appena iniziato.

Qual è la differenza tra Django e Flask?

C'è un ottimo articolo su questo argomento di Gareth Dwyer, quindi lasciatemi citare qui:

te>

Principali contrasti:

  • Flask offre semplicità, flessibilità e controllo a grana fine. Non è propenso (ti consente di decidere come implementare le cose).
  • Django offre un'esperienza all-inclusive: ottieni un pannello di amministrazione, interfacce di database, un ORM [mapping relazionale a oggetti] e una struttura di directory per le tue app e i tuoi progetti fuori dagli schemi.

Probabilmente dovresti scegliere:

  • Flask, se sei concentrato sull'esperienza e sulle opportunità di apprendimento o se desideri un maggiore controllo sui componenti da utilizzare (ad esempio quali database desideri utilizzare e come desideri interagire con essi).
  • Django, se ti concentri sul prodotto finale. Soprattutto se stai lavorando su un'applicazione semplice come un sito di notizie, un e-store o un blog e desideri che ci sia sempre un modo unico e ovvio di fare le cose.

te>

In altre parole, se sei un principiante, Flask è probabilmente una scelta migliore perché ha meno componenti da gestire. Inoltre, Flask è una scelta migliore se desideri una maggiore personalizzazione.

D'altra parte, se stai cercando di costruire qualcosa di semplice, Django probabilmente ti permetterà di arrivarci più velocemente.

Ora, se stai cercando di imparare Django, ti consiglio il libro chiamato Django per principianti. Potete trovare qui.

Puoi anche trovare i capitoli di esempio gratuiti di quel libro qui.

Va bene, passiamo all'argomento successivo!

Scienza dei dati, inclusi apprendimento automatico, analisi dei dati e visualizzazione dei dati

Prima di tutto, passiamo in rassegna ciò che l'apprendimento automatico è .

Penso che il modo migliore per spiegare cos'è l'apprendimento automatico sarebbe darti un semplice esempio.

Supponiamo che tu voglia sviluppare un programma che rilevi automaticamente cosa c'è in un'immagine.

Quindi, data questa immagine qui sotto (Figura 1), vuoi che il tuo programma riconosca che è un cane.

Original text


Dato questo altro sotto (Figura 2), vuoi che il tuo programma riconosca che si tratta di una tabella.

Potresti dire, beh, posso semplicemente scrivere del codice per farlo. Ad esempio, forse se ci sono molti pixel marrone chiaro nella foto, allora possiamo dire che è un cane.

O forse, puoi capire come rilevare i bordi in un'immagine. Quindi, potresti dire, se ci sono molti bordi dritti, allora è un tavolo.

Tuttavia, questo tipo di approccio diventa complicato abbastanza rapidamente. E se nella foto ci fosse un cane bianco senza capelli castani? E se l'immagine mostra solo le parti rotonde del tavolo?

È qui che entra in gioco il machine learning.

L'apprendimento automatico in genere implementa un algoritmo che rileva automaticamente un pattern nell'input specificato.

Puoi dare, diciamo, 1.000 immagini di un cane e 1.000 immagini di un tavolo a un algoritmo di apprendimento automatico. Quindi, imparerà la differenza tra un cane e un tavolo. Quando gli dai una nuova foto di un cane o di un tavolo, sarà in grado di riconoscere quale sia.

Penso che questo sia in qualche modo simile a come un bambino impara cose nuove. Come fa un bambino a imparare che una cosa assomiglia a un cane e un'altra a un tavolo? Probabilmente da un mucchio di esempi.

Probabilmente non dici esplicitamente a un bambino: "Se qualcosa è peloso e ha i capelli castano chiaro, probabilmente è un cane".

Probabilmente diresti semplicemente: “Quello è un cane. Anche questo è un cane. E questo è un tavolo. Quello è anche un tavolo. "

Gli algoritmi di apprendimento automatico funzionano allo stesso modo.

Puoi applicare la stessa idea a:

  • sistemi di raccomandazione (pensa a YouTube, Amazon e Netflix)
  • riconoscimento facciale
  • riconoscimento vocale

tra le altre applicazioni.

I popolari algoritmi di machine learning di cui potresti aver sentito parlare includono:

  • Reti neurali
  • Apprendimento profondo
  • Supporta macchine vettoriali
  • Foresta casuale

È possibile utilizzare uno qualsiasi degli algoritmi di cui sopra per risolvere il problema di etichettatura delle immagini che ho spiegato in precedenza.

Python per l'apprendimento automatico

Esistono librerie e framework di machine learning popolari per Python.

Due dei più popolari sono scikit-learn e TensorFlow .

  • scikit-learn viene fornito con alcuni dei più popolari algoritmi di apprendimento automatico integrati. Ne ho menzionati alcuni sopra.
  • TensorFlow è più una libreria di basso livello che ti consente di creare algoritmi di machine learning personalizzati.

Se hai appena iniziato con un progetto di machine learning, ti consiglio di iniziare prima con scikit-learn. Se inizi a riscontrare problemi di efficienza, inizierei a esaminare TensorFlow.

Come devo imparare il machine learning?

Per apprendere i fondamenti del machine learning, consiglierei il corso di machine learning di Stanford o Caltech.

Si prega di notare che è necessaria una conoscenza di base del calcolo e dell'algebra lineare per comprendere alcuni dei materiali di quei corsi.

Poi, metterei in pratica ciò che hai imparato da uno di quei corsi con Kaggle. È un sito Web in cui le persone competono per creare il miglior algoritmo di apprendimento automatico per un determinato problema. Hanno anche dei bei tutorial per principianti.

E per quanto riguarda l'analisi e la visualizzazione dei dati?

Per aiutarti a capire come potrebbero apparire, lascia che ti faccia un semplice esempio qui.

Supponiamo che tu stia lavorando per un'azienda che vende alcuni prodotti online.

Quindi, come analista di dati, potresti disegnare un grafico a barre come questo.

Da questo grafico, possiamo dire che gli uomini hanno acquistato oltre 400 unità di questo prodotto e le donne hanno acquistato circa 350 unità di questo prodotto questa particolare domenica.

In qualità di analista di dati, potresti trovare alcune possibili spiegazioni per questa differenza.

Una possibile spiegazione ovvia è che questo prodotto è più popolare tra gli uomini che tra le donne. Un'altra possibile spiegazione potrebbe essere che la dimensione del campione è troppo piccola e questa differenza è stata causata solo per caso. E ancora un'altra possibile spiegazione potrebbe essere che gli uomini tendono ad acquistare questo prodotto di più solo la domenica per qualche motivo.

Per capire quale di queste spiegazioni è corretta, potresti disegnare un altro grafico come questo.

Invece di mostrare i dati solo per domenica, stiamo esaminando i dati per un'intera settimana. Come puoi vedere, da questo grafico, possiamo vedere che questa differenza è abbastanza consistente in giorni diversi.

Da questa piccola analisi, potresti concludere che la spiegazione più convincente di questa differenza è che questo prodotto è semplicemente più popolare tra gli uomini che tra le donne.

D'altra parte, cosa succede se invece vedi un grafico come questo?

Allora, cosa spiega la differenza domenica?

Si potrebbe dire che forse gli uomini tendono ad acquistare più di questo prodotto solo la domenica per qualche motivo. O forse era solo una coincidenza che gli uomini ne comprassero di più domenica.

Quindi, questo è un esempio semplificato di come potrebbe apparire l'analisi dei dati nel mondo reale.

Il lavoro di analisi dei dati che ho svolto quando lavoravo in Google e Microsoft era molto simile a questo esempio, solo più complesso. In realtà ho usato Python in Google per questo tipo di analisi, mentre ho usato JavaScript in Microsoft.

Ho utilizzato SQL in entrambe le società per estrarre i dati dai nostri database. Quindi, userei Python e Matplotlib (su Google) o JavaScript e D3.js (su Microsoft) per visualizzare e analizzare questi dati.

Analisi / visualizzazione dei dati con Python

Una delle librerie più popolari per la visualizzazione dei dati è Matplotlib.

È una buona libreria con cui iniziare perché:

  • È facile iniziare
  • Alcune altre biblioteche come Seaborn sono basate su di esso. Quindi, imparare Matplotlib ti aiuterà a imparare queste altre librerie in seguito.

Come devo imparare l'analisi / visualizzazione dei dati con Python?

Dovresti prima apprendere i fondamenti dell'analisi e della visualizzazione dei dati. Quando ho cercato buone risorse per questo online, non sono riuscito a trovarne nessuna. Quindi, ho finito per fare un video su YouTube su questo argomento:

Ho anche finito per fare un corso completo su questo argomento su Pluralsight, che puoi seguire gratuitamente iscrivendoti alla loro prova gratuita di 10 giorni.

Li consiglierei entrambi.

Dopo aver appreso i fondamenti dell'analisi e della visualizzazione dei dati, sarà utile anche l'apprendimento dei fondamenti delle statistiche da siti web come Coursera e Khan Academy.

Scripting

Cos'è lo scripting?

Lo scripting di solito si riferisce alla scrittura di piccoli programmi progettati per automatizzare attività semplici.

Quindi, lasciate che vi faccia un esempio dalla mia esperienza personale qui.

Lavoravo in una piccola startup in Giappone dove avevamo un sistema di supporto e-mail. Per noi era un sistema per rispondere alle domande che i clienti ci inviavano tramite e-mail.

Quando lavoravo lì, avevo il compito di contare il numero di email contenenti determinate parole chiave in modo da poter analizzare le email che ricevevamo.

Avremmo potuto farlo manualmente, ma invece ho scritto un semplice programma / semplice script per automatizzare questa attività.

In realtà, allora abbiamo usato Ruby per questo, ma Python è anche un buon linguaggio per questo tipo di attività. Python è adatto per questo tipo di attività principalmente perché ha una sintassi relativamente semplice ed è facile da scrivere. È anche veloce scrivere qualcosa di piccolo con esso e testarlo.

E le applicazioni incorporate?

Non sono un esperto di applicazioni embedded, ma so che Python funziona con Rasberry Pi. Sembra un'applicazione popolare tra gli appassionati di hardware.

E i giochi?

Potresti usare la libreria chiamata PyGame per sviluppare giochi, ma non è il motore di gioco più popolare in circolazione. Potresti usarlo per costruire un progetto per hobby, ma personalmente non lo sceglierei se prendi sul serio lo sviluppo del gioco.

Piuttosto, consiglierei di iniziare con Unity con C #, che è uno dei motori di gioco più popolari. Ti consente di creare un gioco per molte piattaforme, inclusi Mac, Windows, iOS e Android.

E le applicazioni desktop?

Potresti crearne uno con Python usando Tkinter, ma non sembra nemmeno la scelta più popolare.

Invece, sembra che linguaggi come Java, C # e C ++ siano più popolari per questo.

Recentemente, alcune aziende hanno iniziato a utilizzare JavaScript anche per creare applicazioni desktop.

Ad esempio, l'app desktop di Slack è stata costruita con qualcosa chiamato Electron. Ti consente di creare applicazioni desktop con JavaScript.

Personalmente, se dovessi creare un'applicazione desktop, sceglierei un'opzione JavaScript. Ti consente di riutilizzare parte del codice da una versione web, se ce l'hai.

Tuttavia, non sono nemmeno un esperto di applicazioni desktop, quindi fammi sapere in un commento se non sei d'accordo o sei d'accordo con me su questo.

Python 3 o Python 2?

Consiglierei Python 3 poiché è più moderno ed è un'opzione più popolare a questo punto.

Nota a piè di pagina: una nota sul codice back-end e sul codice front-end (nel caso in cui non si abbia familiarità con i termini):

Diciamo che vuoi creare qualcosa come Instagram.

Quindi, dovresti creare codice front-end per ogni tipo di dispositivo che desideri supportare.

Potresti usare, ad esempio:

  • Swift per iOS
  • Java per Android
  • JavaScript per browser web

Ogni set di codice verrà eseguito su ogni tipo di dispositivo / browser. Questo sarà il set di codice che determina come sarà il layout dell'app, come dovrebbero apparire i pulsanti quando li fai clic, ecc.

Tuttavia, avrai comunque bisogno della possibilità di memorizzare le informazioni e le foto degli utenti. Ti consigliamo di archiviarli sul tuo server e non solo sui dispositivi dei tuoi utenti in modo che i follower di ogni utente possano visualizzare le sue foto.

È qui che entra in gioco il codice backend / codice lato server. Dovrai scrivere del codice backend per fare cose come:

  • Tieni traccia di chi sta seguendo chi
  • Comprimi le foto in modo che non occupino tanto spazio di archiviazione
  • Consiglia foto e nuovi account a ogni utente nella funzione di rilevamento

Quindi, questa è la differenza tra codice backend e codice front-end.

A proposito, Python non è l'unica buona scelta per scrivere codice backend / lato server. Ci sono molte altre scelte popolari, incluso Node.js, che si basa su JavaScript.

Ti è piaciuto questo articolo? Quindi, potrebbe piacerti anche il mio canale YouTube.

Ho un canale YouTube per l'educazione alla programmazione chiamato CS Dojo con oltre 440.000 abbonati, dove produco più contenuti come questo articolo.

Ad esempio, potrebbero piacerti questi video:

Comunque, grazie mille per aver letto il mio articolo!