Undersampling

# Undersampling
temp = data.sample(frac=1)
class1 = temp.loc[temp['Class'] == 1]
class0 = temp.loc[temp['Class'] == 0][:class1.shape[0]]

# udf = undersample dataframe
udf = pd.concat([class1, class0]).sample(frac=1)
print(udf.shape)
print(udf['Class'].value_counts())

Oversampling

# Oversampling
from imblearn.over_sampling import SMOTE

# o = oversample
oX = data.drop(['Time', 'Amount', 'Class'], axis=1)
oy = data['Class']
oversample = SMOTE()
oX, oy = oversample.fit_resample(oX, oy)
print(oy.value_counts())