![]() |
Nel panorama della programmazione moderna, poche librerie hanno rivoluzionato il lavoro degli sviluppatori quanto pandas. Se ti occupi di analisi dati, machine learning, automazione o semplicemente manipolazione di informazioni strutturate, è quasi impossibile non imbattersi nel suo concetto fondamentale: il DataFrame.
In questo articolo ti spiego cos’è, come funziona e perché è diventato uno strumento indispensabile nel mondo dell’informatica.
📌 Cos’è un DataFrame?
Un DataFrame è una struttura dati bidimensionale, simile a un foglio Excel o a una tabella SQL. Pensalo come una matrice di dati organizzata in righe e colonne, dove ogni colonna può contenere un tipo di dato diverso (stringhe, numeri, date, booleani, ecc.).
Nel mondo di pandas, un DataFrame è potente perché combina:
- la facilità d’uso delle tabelle
- la velocità delle strutture dati C ottimizzate
- la flessibilità di Python.
import pandas as pd
df = pd.DataFrame({
"Name": ["Anna", "Mark", "Luke"],
"Age": [23, 31, 28],
"City": ["Rome", "Milan", "Turin"]
})
# Display the DataFrame in the console
print(df)
Output:
Name Age City
0 Anna 23 Rome
1 Mark 31 Milan
2 Luke 28 Turin
✅ Le righe possono essere nominate?
Sì — le righe in un DataFrame pandas possono avere etichette: si tratta dell'index. Di default l'indice è numerico (0, 1, 2, ...), ma puoi impostarlo e manipolarlo come preferisci. Qui sotto trovi alcuni esempi pratici.
1. Impostare nomi personalizzati alla creazione
import pandas as pd
df = pd.DataFrame(
{
"Name": ["Anna", "Mark", "Luke"],
"Age": [23, 31, 28],
},
index=["row_1", "row_2", "row_3"]
)
# Display the DataFrame in the console
print(df)
Output:
Name Age
row_1 Anna 23
row_2 Mark 31
row_3 Luke 28
2. Rinominare le righe dopo la creazione
# Replace the whole index
df.index = ["a", "b", "c"]
print(df)
# Or rename selected index labels
df.rename(index={"a": "first", "b": "second"}, inplace=True)
print(df)
Output dopo la sostituzione completa:
Name Age
a Anna 23
b Mark 31
c Luke 28
Output dopo rename:
Name Age
first Anna 23
second Mark 31
c Luke 28
3. Dare un nome all’indice stesso
# Give a name to the index axis
df.index.name = "ID"
print(df)
Output:
ID Name Age
first Anna 23
second Mark 31
c Luke 28
4. Impostare l'indice da una colonna (es. da CSV/Excel/SQL)
# Suppose you read a CSV that has an 'id' column you want to use as index
# df = pd.read_csv("data.csv")
# Or set index from existing DataFrame column:
df2 = pd.DataFrame({
"id": ["u1", "u2", "u3"],
"Name": ["Alice", "Bob", "Carol"],
"Age": [29, 34, 41]
})
df2.set_index("id", inplace=True)
print(df2)
Output:
id Name Age
u1 Alice 29
u2 Bob 34
u3 Carol 41
5. Multi-index (indici gerarchici)
Se vuoi etichette su più livelli (utile per dati gerarchici), puoi creare un MultiIndex:
arrays = [
["group1", "group1", "group2", "group2"],
["a", "b", "a", "b"]
]
index = pd.MultiIndex.from_arrays(arrays, names=("Group", "Label"))
df_multi = pd.DataFrame(
{"Value": [10, 20, 30, 40]},
index=index
)
print(df_multi)
Output:
Group Label Value
group1 a 10
b 20
group2 a 30
b 40
In sintesi: puoi impostare le righe alla creazione, sostituirle, rinominarle, derivarle da colonne esistenti e persino usare indici gerarchici.
🔍 Perché è così importante?
I DataFrame sono diventati lo standard per la manipolazione dei dati in Python grazie a:
✔ Facilità di manipolazione
filtered_df = df[df["Age"] > 25]
print(filtered_df)
Output:
Name Age City
1 Mark 31 Milan
2 Luke 28 Turin
✔ Operazioni veloci e ottimizzate
✔ Supporto a formati eterogenei
📄 1. CSV
Lettura:
df = pd.read_csv("data.csv")
print(df)
Scrittura:
df.to_csv("output.csv", index=False)
📊 2. Excel
Lettura:
df = pd.read_excel("data.xlsx")
print(df)
Scrittura:
df.to_excel("output.xlsx", index=False)
🧱 3. JSON
Lettura:
df = pd.read_json("data.json")
print(df)
Scrittura:
df.to_json("output.json", orient="records", indent=2)
🗄️ 4. SQL
from sqlalchemy import create_engine
import pandas as pd
engine = create_engine("sqlite:///mydb.sqlite")
# Read a table from SQL database
df = pd.read_sql("SELECT * FROM users", engine)
print(df)
# Write to SQL
df.to_sql("users_output", engine, index=False, if_exists="replace")
Esempio Output:
id name age city
0 1 Anna 23 Rome
1 2 Mark 31 Milan
2 3 Luke 28 Turin
✔ Integrazione perfetta con il machine learning
🔧 Le operazioni più comuni
1. Selezione di colonne
print(df["Name"])
2. Filtraggio
print(df[df["City"] == "Rome"])
3. Ordinamento
print(df.sort_values("Age"))
4. Aggiunta di nuove colonne
df["BirthYear"] = 2025 - df["Age"]
print(df)
5. Raggruppamento (Group by)
print(df.groupby("City")["Age"].mean())
📈 Quando usare i DataFrame?
I DataFrame brillano in tutti i contesti in cui si manipolano dati strutturati:
-
analisi statistiche
-
data cleaning
-
ETL (Extract, Transform, Load)
-
report automatici
-
machine learning
-
prototipazione rapida di pipeline dati
Che tu sia uno sviluppatore, un analista, un data scientist o un semplice appassionato, i DataFrame ti permettono di trasformare dati grezzi in informazioni utili — in modo rapido ed elegante.
🚀 Conclusione
Il DataFrame di pandas non è solo una struttura dati: è un vero alleato nell’analisi e manipolazione dei dati.
Il suo mix di semplicità, velocità e versatilità lo rende uno standard irrinunciabile nel mondo della data science e non solo.
Follow me #techelopment
Official site: www.techelopment.it
facebook: Techelopment
instagram: @techelopment
X: techelopment
Bluesky: @techelopment
telegram: @techelopment_channel
whatsapp: Techelopment
youtube: @techelopment
