Ricerca nel sito web

16 trucchi avanzati di Python che ogni data scientist dovrebbe conoscere


In qualità di data scientist, probabilmente trascorri molto del tuo tempo a scrivere codice Python, che è noto per essere facile da imparare e incredibilmente versatile e può gestire quasi tutte le attività che gli affidi.

Ma anche se ti senti a tuo agio con le basi, ci sono alcuni trucchi avanzati che possono portare le tue abilità a un livello superiore e aiutarti a scrivere codice più pulito, veloce ed efficiente, risparmiando tempo e fatica nei tuoi progetti.

In questo articolo, esploreremo 10 trucchi avanzati di Python che ogni professionista dei dati dovrebbe conoscere. Che tu stia semplificando le attività ripetitive, ottimizzando i tuoi flussi di lavoro o semplicemente rendendo il tuo codice più leggibile, queste tecniche ti daranno un solido vantaggio nel tuo lavoro di data science.

1. Elenca le comprensioni per il codice conciso

Le comprensioni di elenchi sono un modo pythonico per creare elenchi in una singola riga di codice. Non sono solo concisi, ma anche più veloci dei loop tradizionali.

Ad esempio, invece di scrivere:

squares = []
for x in range(10):
    squares.append(x**2)

È possibile semplificarlo in:

squares = [x**2 for x in range(10)]

Questo trucco è particolarmente utile per le attività di pre-elaborazione e trasformazione dei dati.

2. Sfrutta i generatori per l'efficienza della memoria

I generatori sono un ottimo modo per gestire set di dati di grandi dimensioni senza consumare troppa memoria. A differenza delle liste, che memorizzano tutti gli elementi in memoria, i generatori producono elementi al volo.

Per esempio:

def generate_numbers(n):
    for i in range(n):
        yield i

Utilizza i generatori quando lavori con file di grandi dimensioni o flussi di dati per mantenere basso l'utilizzo della memoria.

3. Usa zip per iterare su più elenchi

La funzione zip consente di scorrere più elenchi contemporaneamente, il che è particolarmente utile quando è necessario associare punti dati correlati.

Per esempio:

names = ["Alice", "Bob", "Charlie"]
scores = [85, 90, 95]
for name, score in zip(names, scores):
    print(f"{name}: {score}")

Questo trucco può semplificare il codice quando si ha a che fare con set di dati paralleli.

4. Enumerazione principale per il monitoraggio dell'indice

Quando sono necessari sia l'indice che il valore degli elementi in un elenco, utilizzare enumerate anziché tenere traccia manualmente dell'indice.

Per esempio:

fruits = ["apple", "banana", "cherry"]
for index, fruit in enumerate(fruits):
    print(f"Index {index}: {fruit}")

Questo rende il tuo codice più pulito e leggibile.

5. Semplifica il filtraggio dei dati con il filtro

La funzione di filtro consente di estrarre da un elenco gli elementi che soddisfano una condizione specifica.

Ad esempio, per filtrare i numeri pari:

numbers = [1, 2, 3, 4, 5, 6]
evens = list(filter(lambda x: x % 2 == 0, numbers))

Si tratta di un modo pulito e funzionale per gestire il filtraggio dei dati.

6. Usa collections.defaultdict per il codice più pulito

Quando si lavora con i dizionari, defaultdict dal modulo collections può evitare di verificare se esiste una chiave.

Per esempio:

from collections import defaultdict
word_count = defaultdict(int)
for word in ["apple", "banana", "apple"]:
    word_count[word] += 1

In questo modo si elimina la necessità di istruzioni if-else ripetitive.

7. Ottimizza l'elaborazione dei dati con la mappa

La funzione map applica una funzione a tutti gli elementi in un iterabile.

Ad esempio, per convertire un elenco di stringhe in numeri interi:

strings = ["1", "2", "3"]
numbers = list(map(int, strings))

Si tratta di un modo rapido ed efficiente per applicare trasformazioni ai dati.

8. Disimballaggio con *args e **kwargs

Gli operatori di decompressione di Python (*args e **kwargs) consentono di gestire numeri variabili di argomenti nelle funzioni.

Per esempio:

def summarize(*args):
    return sum(args)

print(summarize(1, 2, 3, 4))  # Output: 10

Ciò è particolarmente utile per creare funzioni flessibili e riutilizzabili.

9. Utilizzare itertools per le iterazioni avanzate

Il modulo itertools fornisce potenti strumenti per l'uso degli iteratori. Ad esempio, itertools.combinations può generare tutte le possibili combinazioni di una lista:

import itertools
letters = ['a', 'b', 'c']
combinations = list(itertools.combinations(letters, 2))

Questo è prezioso per attività come l'ingegneria delle funzionalità o l'analisi combinatoria.

10. Automatizza i flussi di lavoro con contextlib

Il modulo contextlib consente di creare gestori di contesto personalizzati, ideali per automatizzare le attività di configurazione e smontaggio.

Per esempio:

from contextlib import contextmanager

@contextmanager
def open_file(file, mode):
    f = open(file, mode)
    try:
        yield f
    finally:
        f.close()

with open_file("example.txt", "w") as f:
    f.write("Hello, World!")

In questo modo si garantisce che le risorse siano gestite correttamente, anche se si verifica un errore.

11. Profilazione dei panda per una rapida esplorazione dei dati

L'esplorazione dei set di dati può richiedere molto tempo, ma pandas_profiling lo rende un gioco da ragazzi, poiché questa libreria genera un report dettagliato con statistiche, visualizzazioni e approfondimenti sul set di dati in una sola riga di codice:

import pandas as pd
from pandas_profiling import ProfileReport

df = pd.read_csv("your_dataset.csv")
profile = ProfileReport(df, explorative=True)
profile.to_file("report.html")

Questo trucco è perfetto per comprendere rapidamente le distribuzioni dei dati, i valori mancanti e le correlazioni.

12. Stringhe F per una formattazione delle stringhe più pulita

Le stringhe F, introdotte in Python 3.6, sono un punto di svolta per la formattazione delle stringhe. Sono concisi, leggibili e più veloci dei metodi più vecchi come la formattazione % o str.format().

Per esempio:

name = "Alice"
age = 30
print(f"{name} is {age} years old.")

È anche possibile incorporare direttamente le espressioni:

print(f"{name.upper()} will be {age + 5} years old in 5 years.")

Le stringhe F rendono il tuo codice più pulito e intuitivo.

13. Funzioni Lambda per operazioni rapide

Le funzioni Lambda sono funzioni piccole e anonime, perfette per operazioni rapide e una tantum. Sono particolarmente utili con funzioni come map(), filter() o sort().

Per esempio:

numbers = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x**2, numbers))

Le funzioni Lambda sono ideali per semplificare il codice quando non è necessaria una definizione completa della funzione.

14. Trasmissione NumPy per calcoli efficienti

La trasmissione NumPy consente di eseguire operazioni su array di forme diverse senza eseguire esplicitamente il loop.

Per esempio:

import numpy as np
array = np.array([[1, 2, 3], [4, 5, 6]])
result = array * 2  # Broadcasting multiplies every element by 2

Questo trucco è incredibilmente utile per le operazioni vettoriali, rendendo il codice più veloce ed efficiente.

15. Sottotrame Matplotlib per visualizzazioni multi-plot

Creare più grafici in una singola figura è facile con la funzione sottotrame di Matplotlib.

Per esempio:

import matplotlib.pyplot as plt

fig, axes = plt.subplots(2, 2)  # 2x2 grid of subplots
axes[0, 0].plot([1, 2, 3], [4, 5, 6])  # Plot in the first subplot
axes[0, 1].scatter([1, 2, 3], [4, 5, 6])  # Scatter plot in the second subplot
plt.show()

Questo è perfetto per confrontare più set di dati o visualizzare diversi aspetti dei dati fianco a fianco.

16. Pipeline Scikit-learn per un apprendimento automatico semplificato

La classe Pipeline di Scikit-learn consente di concatenare più passaggi di pre-elaborazione e modellazione dei dati in un unico oggetto, garantendo la riproducibilità e semplificando il flusso di lavoro.

Per esempio:

from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression

pipeline = Pipeline([
    ('scaler', StandardScaler()),
    ('classifier', LogisticRegression())
])
pipeline.fit(X_train, y_train)

Le pipeline sono un must per l'organizzazione e l'automazione dei flussi di lavoro di machine learning.

Considerazioni finali

Questi trucchi avanzati di Python possono fare una grande differenza nei tuoi progetti di data science. Quindi, la prossima volta che lavori a un progetto di data science, prova a implementare uno o più di questi trucchi. Rimarrai stupito di quanto tempo e fatica puoi risparmiare!

Se stai cercando di approfondire le tue competenze in data science, ecco alcuni corsi altamente consigliati che possono aiutarti a padroneggiare Python e la scienza dei dati:

  • Specializzazione in scienza dei dati di Coursera - Questa specializzazione completa della Johns Hopkins University copre tutto, dalla programmazione Python all'apprendimento automatico e alla visualizzazione dei dati, perfetta per principianti e studenti intermedi.
  • Python per la scienza dei dati e l'apprendimento automatico Bootcamp di Udemy – Questo corso più venduto su Udemy offre un'esperienza pratica con librerie Python come Pandas, NumPy, Matplotlib e Scikit-learn.
  • Introduzione alla scienza dei dati con Python di edX – Questo corso dell'Università di Harvard è un'eccellente introduzione alla scienza dei dati utilizzando Python che copre l'analisi dei dati, la visualizzazione e l'apprendimento automatico.
  • Data Science Career Track by DataCamp – Il percorso di carriera di DataCamp offre un percorso di apprendimento strutturato con esercizi interattivi. Copre Python, SQL, machine learning e altro ancora, rendendolo un'ottima scelta per gli aspiranti data scientist.

Iscrivendoti a questi corsi, acquisirai le conoscenze e le competenze necessarie per eccellere nella scienza dei dati applicando i trucchi avanzati di Python trattati in questo articolo.

Disclaimer: Alcuni dei link in questo articolo sono link di affiliazione, il che significa che potrei guadagnare una piccola commissione se acquisti un corso tramite loro. Questo non comporta costi aggiuntivi per te e aiuta a supportare la creazione di contenuti gratuiti e di alta qualità come questo.

Grazie per il vostro supporto!