Basics
df.set_index(keys="A", inplace=True)
[Link](columns=[“A”,”B”],inplace=True)
[Link](columns={“A”:”a”})
df["A"].nunique() [Link](3,"A")
[Link]().sum() df.drop_duplicates(inplace=True)
[Link]("A")["B"].mean()
quant_df=df.select_dtypes(include=[[Link]])
cat_df=df.select_dtypes(include=”object”)
df_merged=[Link](df1,df2,left_on=”lkey”,right_on=”rkey”) # through columns
with different names
df_merged=[Link](df1,df2,left_index=True,right_index=True) # through
indexes
df_merged=[Link](df1,df2,on=”id”,how=”inner”) # through columns with the
same name; how can be outer, left, right as well
[Link]([df1,df2],axis=1) # horizontally
df.sort_values(by=”A”,inplace=True)
df_pivoted = [Link](index=”id”,columns=”A”,values=”value”)
df[df[“A”]== df[“A”].max] # row with maximum ‘A’
df[“A”].idmax() # index
correlation_matrix=[Link]()
df[“A”].value_counts(normalize=True)
[Link]().sum()
df[“A”] = df[“A”].fillna(df.[“A”].median())
[Link]()
Plots
[Link](data=df,x=”A”,hue=”B”) # categorical
df[“A”].value_counts().plot(kind=”bar”)
[Link](data=df,x=”A”,bins=100,kde=True) # numerical
df[“A”].plot(kind=”hist”,bins=100)
[Link](data=df,x=”A”,y=”B”)
[Link](kind=”scatter”, x=”A”,y=”B”)
[Link]([“A”,”B”])
OneHotEncoder
from [Link] import OneHotEncoder
encoder=OneHotEncoder()
df_sparse=encoder.fit_transform(df)
feature_names=encoder.get_feature_names_out([Link])
df_dense=df_sparse.toarray()
df_encoded=[Link](df_dense,columns=feature_names)
df_encoded=pd.get_dummies(df) # easier
Numericalization
from [Link] import LabelEncoder
le=LabelEncoder()
df_num=[Link]
for col in [Link]:
df_num=le.fit_transform(df[col])
Standardization
from [Link] import StandardScaler
scaler=StandardScaler()
df= scaler.fit_transform(df)
LinearRegression
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from [Link] import mean_squared_error, r2_score
model=LinearRegression()
X=[Link](columns=[”target”])
y=df[“target”]
X_train,X_test,y_train,y _test=train_test_split(X,y,test_size=0.3,shuffle=True,rand
om_state=42) # stratify=y into brackets for classification
[Link]=(X_train,y_train)
y_pred=[Link](X_test)
mse=mean_squared_error(y_test,y_pred)
r2=r2_score(y_test,y_pred)
Libraries
from sklearn.linear_model import LogisticRegression, Ridge, RidgeClassifier
from [Link] import DecisionTreeClassifier, DecisionTreeRegressor
from [Link] import RandomForestClassifier,
RandomForestRegressor
from [Link] import SVC, SVR
from [Link] import KNeighborsClassifier, KNeighborsRegressor
from xgboost import XGBClassifier, XGBRegressor
from [Link] import accuracy_score, precision_score, recall_score,
f1_score, cohen_kappa_score, confusion_matrix, roc_auc_score, roc_curve
Auroc
y_pred_proba=model.predict_proba(X_test)[:,1] # it takes positive values
auc=roc_auc_score(y_test,y_pred_proba)
fpr, tpr, threshold = roc_curve(y_test,y_pred_proba)
Decision Trees Tuning
train_scores=[]
valid_scores=[]
for leaf in list(range(2,20)):
dtr=DecisionTreeRegressor(min_samples_leaf=leaf)
[Link](X_train,y_train)
train_scores.append([Link](X_train,y_train)
valid_scores.append([Link](X_valid,y_valid)
optimal_min_samples_leaf= list(range(2, 20))[[Link](valid_scores)]
Decision Tree Double Tuning
from sklearn.model_selection import GridSearchCV
params={“min_samples_leaf”:list(range(2,20)),”max_depth”:list(range(2,20))}
grid_search_cv=GridSearchCV(DecisionTreeRegressor(),params,cv=3,verbose=1
,n_jobs=-1)
grid_search_cv.fit(X_train, y_train)
best_tree_model=grid_search_cv.best_estimator_
score = best_tree_model.score(X_test,y_test)
KMeans
from [Link] import KMeans
# 1: inertia for different k (Elbow Method)
inertia = []
K = range(1, 10)
for k in K:
kmeans = KMeans(n_clusters=k, init="k-means++", random_state=42)
[Link](df)
[Link](kmeans.inertia_)
# 2: Scree Plot
[Link](K, inertia, 'bx-')
[Link]('k')
[Link]('Inertia')
[Link]('Elbow Method for Optimal k')
[Link]()
# 3: final model
kmeans = KMeans(
n_clusters=3,
init='k-means++',
random_state=42
)
[Link](df)
# 4: clusters to the df and centroids
df['Cluster'] = kmeans.labels_
centroids = kmeans.cluster_centers_
# 6: silhouette score
from [Link] import silhouette_score
score = silhouette_score(df, kmeans.labels_)
DBSCAN
from [Link] import DBSCAN
dbscan = DBSCAN(eps=0.5, min_samples=5, metric='euclidean')
[Link](df)
df[“cluster”] = dbscan.labels_
PCA
from [Link] import PCA
pca = PCA(n_components=0.90) # % of explained variance
X_pca = pca.fit_transform(X_scaled)
pc_number = pca.n_components_
explained_var = pca.explained_variance_ratio_
eigenvalues = pca.explained_variance_
kaiser_components = sum(eigenvalues > 1)