HTML_TAG_177_ __HTML_TAG_178_📋 Copia Tutti i comandi pandas_HTML_TAG_179 HTML_TAG_180_📄 Genera pandas PDF Guida_HTML_TAG_181
Pandas Cheatsheet¶
Installazione¶
Tabella_184_
Comandi di base - Creazione di DataFrame & I/O¶
Tabella_185
Comandi di base - Ispezione e Informazioni¶
Tabella_186_
Comandi di base - Selezione & Filtro¶
Tabella_187_
Comandi di base - Manipolazione dei dati¶
Tabella_188_
Comandi di base - Aggregazione¶
Tabella_189_
Uso avanzato - Selezione complessa & Filtering¶
Tabella_190_
Uso avanzato - Trasformazione dei dati¶
Tabella_191_
Uso avanzato - Merging & Joining¶
Tabella_192_
Uso avanzato - Rimodellamento e pivottazione¶
Tabella_193_
Uso avanzato - GroupBy Operations¶
Tabella_194_
Uso avanzato - Time Series¶
Tabella_195_
Configurazione¶
Opzioni di visualizzazione¶
# Set maximum rows to display
pd.set_option('display.max_rows', 100)
# Set maximum columns to display
pd.set_option('display.max_columns', 50)
# Set column width
pd.set_option('display.max_colwidth', 100)
# Set float display precision
pd.set_option('display.precision', 2)
# Display all columns
pd.set_option('display.expand_frame_repr', False)
# Show full dataframe without truncation
pd.set_option('display.max_rows', None)
pd.set_option('display.max_columns', None)
# Reset all options to defaults
pd.reset_option('all')
# Get current option value
pd.get_option('display.max_rows')
Opzioni di prestazione¶
# Use copy-on-write mode (pandas 2.0+)
pd.options.mode.copy_on_write = True
# Set computation mode
pd.set_option('compute.use_bottleneck', True)
pd.set_option('compute.use_numexpr', True)
# Set chained assignment warning
pd.set_option('mode.chained_assignment', 'warn') # or 'raise' or None
Opzioni I/O¶
# Set default CSV separator
pd.set_option('io.excel.xlsx.writer', 'xlsxwriter')
# Set clipboard encoding
pd.set_option('display.clipboard.encoding', 'utf-8')
Common Use Cases¶
Use Case 1: Data Cleaning Pipeline¶
import pandas as pd
# Read data
df = pd.read_csv('raw_data.csv')
# Remove duplicates
df = df.drop_duplicates()
# Handle missing values
df['column1'].fillna(df['column1'].mean(), inplace=True)
df.dropna(subset=['critical_column'], inplace=True)
# Fix data types
df['date'] = pd.to_datetime(df['date'])
df['amount'] = pd.to_numeric(df['amount'], errors='coerce')
# Remove outliers (values beyond 3 standard deviations)
df = df[np.abs(df['value'] - df['value'].mean()) <= (3 * df['value'].std())]
# Standardize text
df['name'] = df['name'].str.strip().str.lower()
# Save cleaned data
df.to_csv('cleaned_data.csv', index=False)
Use Case 2: Exploratory Analisi dei dati¶
import pandas as pd
# Load data
df = pd.read_csv('sales_data.csv')
# Basic statistics
print(df.describe())
print(df.info())
# Check for missing values
print(df.isnull().sum())
# Analyze categorical variables
print(df['category'].value_counts())
print(df['region'].value_counts(normalize=True))
# Correlation analysis
correlation_matrix = df.corr()
print(correlation_matrix)
# Group analysis
sales_by_region = df.groupby('region').agg({
'sales': ['sum', 'mean', 'count'],
'profit': 'sum'
})
print(sales_by_region)
# Time-based analysis
df['date'] = pd.to_datetime(df['date'])
monthly_sales = df.set_index('date').resample('M')['sales'].sum()
print(monthly_sales)
Use Case 3: Integrazione dei dati da sorgenti multiple¶
import pandas as pd
# Read from different sources
customers = pd.read_csv('customers.csv')
orders = pd.read_excel('orders.xlsx')
products = pd.read_json('products.json')
# Merge datasets
df = pd.merge(orders, customers, on='customer_id', how='left')
df = pd.merge(df, products, on='product_id', how='left')
# Calculate derived metrics
df['total_price'] = df['quantity'] * df['unit_price']
df['profit'] = df['total_price'] - df['cost']
# Aggregate by customer
customer_summary = df.groupby('customer_id').agg({
'order_id': 'count',
'total_price': 'sum',
'profit': 'sum'
}).rename(columns={'order_id': 'order_count'})
# Export results
customer_summary.to_excel('customer_summary.xlsx')
Use Case 4: Analisi delle serie temporali¶
import pandas as pd
# Read time series data
df = pd.read_csv('stock_prices.csv', parse_dates=['date'])
df.set_index('date', inplace=True)
# Calculate returns
df['daily_return'] = df['close'].pct_change()
# Calculate moving averages
df['MA_7'] = df['close'].rolling(window=7).mean()
df['MA_30'] = df['close'].rolling(window=30).mean()
# Calculate exponential moving average
df['EMA_12'] = df['close'].ewm(span=12).mean()
# Resample to weekly data
weekly_df = df.resample('W').agg({
'open': 'first',
'high': 'max',
'low': 'min',
'close': 'last',
'volume': 'sum'
})
# Calculate volatility (rolling standard deviation)
df['volatility'] = df['daily_return'].rolling(window=30).std()
# Export analysis
df.to_csv('stock_analysis.csv')
Use Case 5: Data Transformation for Machine Learning¶
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
# Load data
df = pd.read_csv('ml_dataset.csv')
# Handle missing values
df.fillna(df.median(numeric_only=True), inplace=True)
# Encode categorical variables
df = pd.get_dummies(df, columns=['category', 'region'], drop_first=True)
# Create features
df['feature_ratio'] = df['feature1'] / (df['feature2'] + 1)
df['feature_interaction'] = df['feature1'] * df['feature2']
# Separate features and target
X = df.drop('target', axis=1)
y = df['target']
# Split data
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)
# Scale features
scaler = StandardScaler()
X_train_scaled = pd.DataFrame(
scaler.fit_transform(X_train),
columns=X_train.columns,
index=X_train.index
)
X_test_scaled = pd.DataFrame(
scaler.transform(X_test),
columns=X_test.columns,
index=X_test.index
)
Migliori Pratiche¶
-
Utilizza
inplace=Falseper impostazione predefinita: Evitareinplace=True_ per mantenere l'immutabilità e rendere più facile il debugging. Assegna risultati a nuove variabili invece. -
Si'. Utilizzare pandas operazioni vettoriali integrate invece di loop. Le operazioni come
df['col'] * 2_ sono molto più veloci didf['col'].apply(lambda x: x * 2). -
Le operazioni in modo efficiente... Utilizzare la catena del metodo con la corretta formattazione per il codice leggibile: Ehi!
-
** Specificare i dtypes quando si legge i dati**: Utilizzare il parametro
dtype_ inread_csv()per ridurre l'utilizzo della memoria e migliorare le prestazioni:pd.read_csv('file.csv', dtype={'col1': 'int32'}) -
Utilizza il tipo di dati categorici per le colonne a bassa definizione: Converti colonne di stringa con pochi valori unici per classificare:
df['category'] = df['category'].astype('category')per salvare la memoria. -
** Valori mancanti esplicitamente ** Controllare sempre e gestire i valori mancanti consapevolmente piuttosto che lasciarli propagare:
df.isnull().sum()prima dell'elaborazione. -
Utilizza copia() quando necessario: Quando si crea un sottoinsieme che si modifica