Vai al contenuto

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=False per impostazione predefinita: Evitare inplace=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 di df['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_ in read_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