import pandas as pd
from mlxtend.frequent_patterns import apriori, association_rules
import matplotlib.pyplot as plt
import seaborn as sns
df = pd.read_excel('Online Retail.xlsx')
df.head()
| InvoiceNo | StockCode | Description | Quantity | InvoiceDate | UnitPrice | CustomerID | Country | |
|---|---|---|---|---|---|---|---|---|
| 0 | 536365 | 85123A | WHITE HANGING HEART T-LIGHT HOLDER | 6 | 2010-12-01 08:26:00 | 2.55 | 17850.0 | United Kingdom |
| 1 | 536365 | 71053 | WHITE METAL LANTERN | 6 | 2010-12-01 08:26:00 | 3.39 | 17850.0 | United Kingdom |
| 2 | 536365 | 84406B | CREAM CUPID HEARTS COAT HANGER | 8 | 2010-12-01 08:26:00 | 2.75 | 17850.0 | United Kingdom |
| 3 | 536365 | 84029G | KNITTED UNION FLAG HOT WATER BOTTLE | 6 | 2010-12-01 08:26:00 | 3.39 | 17850.0 | United Kingdom |
| 4 | 536365 | 84029E | RED WOOLLY HOTTIE WHITE HEART. | 6 | 2010-12-01 08:26:00 | 3.39 | 17850.0 | United Kingdom |
DATA preparation
df.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 541909 entries, 0 to 541908 Data columns (total 8 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 InvoiceNo 541909 non-null object 1 StockCode 541909 non-null object 2 Description 540455 non-null object 3 Quantity 541909 non-null int64 4 InvoiceDate 541909 non-null datetime64[ns] 5 UnitPrice 541909 non-null float64 6 CustomerID 406829 non-null float64 7 Country 541909 non-null object dtypes: datetime64[ns](1), float64(2), int64(1), object(4) memory usage: 33.1+ MB
df['Description'] = df['Description'].str.strip()
df = df[df['Description']!= 'POSTAGE']
# Dropping the rows without any invoice number
df.dropna(axis = 0, subset =['InvoiceNo'], inplace = True)
df['InvoiceNo'] = df['InvoiceNo'].astype('str')
# Dropping all transactions which were done on credit
df = df[~df['InvoiceNo'].str.contains('C')]
df = df[df['Description'].str.startswith('?')!=True]
df.shape
(531428, 8)
df.describe()
| Quantity | UnitPrice | CustomerID | |
|---|---|---|---|
| count | 531428.000000 | 531428.000000 | 396825.000000 |
| mean | 10.275836 | 3.790413 | 15301.354595 |
| std | 159.551926 | 40.242194 | 1709.881541 |
| min | -9600.000000 | -11062.060000 | 12346.000000 |
| 25% | 1.000000 | 1.250000 | 13975.000000 |
| 50% | 3.000000 | 2.080000 | 15159.000000 |
| 75% | 10.000000 | 4.130000 | 16801.000000 |
| max | 80995.000000 | 13541.330000 | 18287.000000 |
sns.heatmap(df.corr(),annot = True)
<AxesSubplot:>
def missing_values(x):
print(x.isna().sum())
print("*"*50)
print('Percentage of missing values is')
print(x.isnull().sum()*100/len(x))
missing_values(df)
InvoiceNo 0 StockCode 0 Description 1455 Quantity 0 InvoiceDate 0 UnitPrice 0 CustomerID 134603 Country 0 dtype: int64 ************************************************** Percentage of missing values is InvoiceNo 0.000000 StockCode 0.000000 Description 0.273791 Quantity 0.000000 InvoiceDate 0.000000 UnitPrice 0.000000 CustomerID 25.328549 Country 0.000000 dtype: float64
df = df.drop(columns = 'CustomerID')
df.head()
| InvoiceNo | StockCode | Description | Quantity | InvoiceDate | UnitPrice | Country | |
|---|---|---|---|---|---|---|---|
| 0 | 536365 | 85123A | WHITE HANGING HEART T-LIGHT HOLDER | 6 | 2010-12-01 08:26:00 | 2.55 | United Kingdom |
| 1 | 536365 | 71053 | WHITE METAL LANTERN | 6 | 2010-12-01 08:26:00 | 3.39 | United Kingdom |
| 2 | 536365 | 84406B | CREAM CUPID HEARTS COAT HANGER | 8 | 2010-12-01 08:26:00 | 2.75 | United Kingdom |
| 3 | 536365 | 84029G | KNITTED UNION FLAG HOT WATER BOTTLE | 6 | 2010-12-01 08:26:00 | 3.39 | United Kingdom |
| 4 | 536365 | 84029E | RED WOOLLY HOTTIE WHITE HEART. | 6 | 2010-12-01 08:26:00 | 3.39 | United Kingdom |
df = df.dropna()
df.info()
<class 'pandas.core.frame.DataFrame'> Int64Index: 529973 entries, 0 to 541908 Data columns (total 7 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 InvoiceNo 529973 non-null object 1 StockCode 529973 non-null object 2 Description 529973 non-null object 3 Quantity 529973 non-null int64 4 InvoiceDate 529973 non-null datetime64[ns] 5 UnitPrice 529973 non-null float64 6 Country 529973 non-null object dtypes: datetime64[ns](1), float64(1), int64(1), object(4) memory usage: 32.3+ MB
data = df[df['Quantity']>=0]
data.info()
data.head()
<class 'pandas.core.frame.DataFrame'> Int64Index: 529561 entries, 0 to 541908 Data columns (total 7 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 InvoiceNo 529561 non-null object 1 StockCode 529561 non-null object 2 Description 529561 non-null object 3 Quantity 529561 non-null int64 4 InvoiceDate 529561 non-null datetime64[ns] 5 UnitPrice 529561 non-null float64 6 Country 529561 non-null object dtypes: datetime64[ns](1), float64(1), int64(1), object(4) memory usage: 32.3+ MB
| InvoiceNo | StockCode | Description | Quantity | InvoiceDate | UnitPrice | Country | |
|---|---|---|---|---|---|---|---|
| 0 | 536365 | 85123A | WHITE HANGING HEART T-LIGHT HOLDER | 6 | 2010-12-01 08:26:00 | 2.55 | United Kingdom |
| 1 | 536365 | 71053 | WHITE METAL LANTERN | 6 | 2010-12-01 08:26:00 | 3.39 | United Kingdom |
| 2 | 536365 | 84406B | CREAM CUPID HEARTS COAT HANGER | 8 | 2010-12-01 08:26:00 | 2.75 | United Kingdom |
| 3 | 536365 | 84029G | KNITTED UNION FLAG HOT WATER BOTTLE | 6 | 2010-12-01 08:26:00 | 3.39 | United Kingdom |
| 4 | 536365 | 84029E | RED WOOLLY HOTTIE WHITE HEART. | 6 | 2010-12-01 08:26:00 | 3.39 | United Kingdom |
Next step is to check whether the data has duplicate values
def duplicate(x):
print(x.duplicated().sum())
duplicate(data)
5231
We have found that there are 5231 duplicates available in the entire dataset. hence, eliminating it
data = data.drop_duplicates()
duplicate(data)
0
Filtering the country only UK since the question asked in the assesment is, Split the data according to the region of transaction (creation of a basket)
UK = (data[data['Country']== 'United Kingdom']).groupby(['InvoiceNo','Description'])['Quantity'].sum().unstack().reset_index().fillna(0).set_index('InvoiceNo')
GER= (data[data['Country']== 'Germany']).groupby(['InvoiceNo','Description'])['Quantity'].sum().unstack().reset_index().fillna(0).set_index('InvoiceNo')
FR = (data[data['Country']== 'France']).groupby(['InvoiceNo','Description'])['Quantity'].sum().unstack().reset_index().fillna(0).set_index('InvoiceNo')
UK.head()
| Description | *Boombox Ipod Classic | *USB Office Mirror Ball | 10 COLOUR SPACEBOY PEN | 12 COLOURED PARTY BALLOONS | 12 DAISY PEGS IN WOOD BOX | 12 EGG HOUSE PAINTED WOOD | 12 HANGING EGGS HAND PAINTED | 12 IVORY ROSE PEG PLACE SETTINGS | 12 MESSAGE CARDS WITH ENVELOPES | 12 PENCIL SMALL TUBE WOODLAND | ... | returned | taig adjust | test | to push order througha s stock was | website fixed | wrongly coded 20713 | wrongly coded 23343 | wrongly marked | wrongly marked 23343 | wrongly sold (22719) barcode |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| InvoiceNo | |||||||||||||||||||||
| 536365 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | ... | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
| 536366 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | ... | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
| 536367 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | ... | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
| 536368 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | ... | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
| 536369 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | ... | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
5 rows × 4044 columns
def encode_values(x):
if x<=0:
return 0
if x>=1:
return 1
UK_basket = UK.applymap(encode_values)
GER_basket = GER.applymap(encode_values)
FR_basket = FR.applymap(encode_values)
UK_basket_filter = UK_basket[(UK_basket>0).sum(axis =1)>=2]
GER_basket_filter = GER_basket[(GER_basket>0).sum(axis =1)>=2]
FR_basket_filter = FR_basket[(FR_basket>0).sum(axis =1)>=2]
UK_frequency = apriori(UK_basket_filter, min_support = 0.03, use_colnames = True).sort_values('support', ascending ='False').reset_index(drop = True)
RULES_UK = association_rules(UK_frequency, metric ='lift', min_threshold =1).sort_values('lift', ascending = False).reset_index(drop = True)
RULES_UK
| antecedents | consequents | antecedent support | consequent support | support | confidence | lift | leverage | conviction | |
|---|---|---|---|---|---|---|---|---|---|
| 0 | (PINK REGENCY TEACUP AND SAUCER) | (GREEN REGENCY TEACUP AND SAUCER) | 0.042284 | 0.056500 | 0.034904 | 0.825465 | 14.610023 | 0.032515 | 5.405792 |
| 1 | (GREEN REGENCY TEACUP AND SAUCER) | (PINK REGENCY TEACUP AND SAUCER) | 0.056500 | 0.042284 | 0.034904 | 0.617773 | 14.610023 | 0.032515 | 2.505621 |
| 2 | (PINK REGENCY TEACUP AND SAUCER) | (ROSES REGENCY TEACUP AND SAUCER) | 0.042284 | 0.057710 | 0.033029 | 0.781116 | 13.535248 | 0.030589 | 4.304973 |
| 3 | (ROSES REGENCY TEACUP AND SAUCER) | (PINK REGENCY TEACUP AND SAUCER) | 0.057710 | 0.042284 | 0.033029 | 0.572327 | 13.535248 | 0.030589 | 2.239365 |
| 4 | (GARDENERS KNEELING PAD CUP OF TEA) | (GARDENERS KNEELING PAD KEEP CALM) | 0.045309 | 0.054262 | 0.032726 | 0.722296 | 13.311351 | 0.030268 | 3.405567 |
| 5 | (GARDENERS KNEELING PAD KEEP CALM) | (GARDENERS KNEELING PAD CUP OF TEA) | 0.054262 | 0.045309 | 0.032726 | 0.603122 | 13.311351 | 0.030268 | 2.405500 |
| 6 | (GREEN REGENCY TEACUP AND SAUCER) | (ROSES REGENCY TEACUP AND SAUCER) | 0.056500 | 0.057710 | 0.042405 | 0.750535 | 13.005345 | 0.039145 | 3.777249 |
| 7 | (ROSES REGENCY TEACUP AND SAUCER) | (GREEN REGENCY TEACUP AND SAUCER) | 0.057710 | 0.056500 | 0.042405 | 0.734801 | 13.005345 | 0.039145 | 3.557704 |
| 8 | (ALARM CLOCK BAKELIKE RED) | (ALARM CLOCK BAKELIKE GREEN) | 0.056197 | 0.052689 | 0.034057 | 0.606028 | 11.502008 | 0.031096 | 2.404514 |
| 9 | (ALARM CLOCK BAKELIKE GREEN) | (ALARM CLOCK BAKELIKE RED) | 0.052689 | 0.056197 | 0.034057 | 0.646383 | 11.502008 | 0.031096 | 2.669000 |
| 10 | (PAPER CHAIN KIT 50'S CHRISTMAS) | (PAPER CHAIN KIT VINTAGE CHRISTMAS) | 0.067631 | 0.048152 | 0.032545 | 0.481216 | 9.993705 | 0.029288 | 1.834769 |
| 11 | (PAPER CHAIN KIT VINTAGE CHRISTMAS) | (PAPER CHAIN KIT 50'S CHRISTMAS) | 0.048152 | 0.067631 | 0.032545 | 0.675879 | 9.993705 | 0.029288 | 2.876613 |
| 12 | (WOODEN FRAME ANTIQUE WHITE) | (WOODEN PICTURE FRAME WHITE FINISH) | 0.056863 | 0.064969 | 0.031940 | 0.561702 | 8.645715 | 0.028246 | 2.133324 |
| 13 | (WOODEN PICTURE FRAME WHITE FINISH) | (WOODEN FRAME ANTIQUE WHITE) | 0.064969 | 0.056863 | 0.031940 | 0.491620 | 8.645715 | 0.028246 | 1.855182 |
| 14 | (LUNCH BAG PINK POLKADOT) | (LUNCH BAG BLACK SKULL.) | 0.060795 | 0.073438 | 0.031577 | 0.519403 | 7.072694 | 0.027112 | 1.927940 |
| 15 | (LUNCH BAG BLACK SKULL.) | (LUNCH BAG PINK POLKADOT) | 0.073438 | 0.060795 | 0.031577 | 0.429984 | 7.072694 | 0.027112 | 1.647681 |
| 16 | (LUNCH BAG BLACK SKULL.) | (LUNCH BAG SUKI DESIGN) | 0.073438 | 0.061763 | 0.030186 | 0.411038 | 6.655110 | 0.025650 | 1.593035 |
| 17 | (LUNCH BAG SUKI DESIGN) | (LUNCH BAG BLACK SKULL.) | 0.061763 | 0.073438 | 0.030186 | 0.488737 | 6.655110 | 0.025650 | 1.812299 |
| 18 | (JUMBO STORAGE BAG SUKI) | (JUMBO SHOPPER VINTAGE RED PAISLEY) | 0.068356 | 0.068477 | 0.031033 | 0.453982 | 6.629666 | 0.026352 | 1.706030 |
| 19 | (JUMBO SHOPPER VINTAGE RED PAISLEY) | (JUMBO STORAGE BAG SUKI) | 0.068477 | 0.068356 | 0.031033 | 0.453180 | 6.629666 | 0.026352 | 1.703749 |
| 20 | (LUNCH BAG PINK POLKADOT) | (LUNCH BAG RED RETROSPOT) | 0.060795 | 0.084205 | 0.033513 | 0.551244 | 6.546416 | 0.028394 | 2.040740 |
| 21 | (LUNCH BAG RED RETROSPOT) | (LUNCH BAG PINK POLKADOT) | 0.084205 | 0.060795 | 0.033513 | 0.397989 | 6.546416 | 0.028394 | 1.560112 |
| 22 | (LUNCH BAG CARS BLUE) | (LUNCH BAG BLACK SKULL.) | 0.064364 | 0.073438 | 0.030428 | 0.472744 | 6.437345 | 0.025701 | 1.757330 |
| 23 | (LUNCH BAG BLACK SKULL.) | (LUNCH BAG CARS BLUE) | 0.073438 | 0.064364 | 0.030428 | 0.414333 | 6.437345 | 0.025701 | 1.597556 |
| 24 | (JUMBO BAG PINK POLKADOT) | (JUMBO STORAGE BAG SUKI) | 0.069990 | 0.068356 | 0.030549 | 0.436474 | 6.385262 | 0.025764 | 1.653239 |
| 25 | (JUMBO STORAGE BAG SUKI) | (JUMBO BAG PINK POLKADOT) | 0.068356 | 0.069990 | 0.030549 | 0.446903 | 6.385262 | 0.025764 | 1.681459 |
| 26 | (LUNCH BAG RED RETROSPOT) | (LUNCH BAG SUKI DESIGN) | 0.084205 | 0.061763 | 0.031214 | 0.370690 | 6.001832 | 0.026013 | 1.490898 |
| 27 | (LUNCH BAG SUKI DESIGN) | (LUNCH BAG RED RETROSPOT) | 0.061763 | 0.084205 | 0.031214 | 0.505387 | 6.001832 | 0.026013 | 1.851537 |
| 28 | (LUNCH BAG RED RETROSPOT) | (LUNCH BAG BLACK SKULL.) | 0.084205 | 0.073438 | 0.036719 | 0.436063 | 5.937859 | 0.030535 | 1.643025 |
| 29 | (LUNCH BAG BLACK SKULL.) | (LUNCH BAG RED RETROSPOT) | 0.073438 | 0.084205 | 0.036719 | 0.500000 | 5.937859 | 0.030535 | 1.831589 |
| 30 | (JUMBO BAG RED RETROSPOT) | (JUMBO BAG PINK POLKADOT) | 0.116327 | 0.069990 | 0.047487 | 0.408216 | 5.832519 | 0.039345 | 1.571538 |
| 31 | (JUMBO BAG PINK POLKADOT) | (JUMBO BAG RED RETROSPOT) | 0.069990 | 0.116327 | 0.047487 | 0.678479 | 5.832519 | 0.039345 | 2.748413 |
| 32 | (LUNCH BAG SPACEBOY DESIGN) | (LUNCH BAG RED RETROSPOT) | 0.062791 | 0.084205 | 0.030307 | 0.482659 | 5.731922 | 0.025019 | 1.770195 |
| 33 | (LUNCH BAG RED RETROSPOT) | (LUNCH BAG SPACEBOY DESIGN) | 0.084205 | 0.062791 | 0.030307 | 0.359914 | 5.731922 | 0.025019 | 1.464192 |
| 34 | (LUNCH BAG CARS BLUE) | (LUNCH BAG RED RETROSPOT) | 0.064364 | 0.084205 | 0.030791 | 0.478383 | 5.681147 | 0.025371 | 1.755685 |
| 35 | (LUNCH BAG RED RETROSPOT) | (LUNCH BAG CARS BLUE) | 0.084205 | 0.064364 | 0.030791 | 0.365661 | 5.681147 | 0.025371 | 1.474978 |
| 36 | (JUMBO BAG RED RETROSPOT) | (JUMBO BAG STRAWBERRY) | 0.116327 | 0.047910 | 0.031275 | 0.268851 | 5.611581 | 0.025701 | 1.302183 |
| 37 | (JUMBO BAG STRAWBERRY) | (JUMBO BAG RED RETROSPOT) | 0.047910 | 0.116327 | 0.031275 | 0.652778 | 5.611581 | 0.025701 | 2.544979 |
| 38 | (JUMBO BAG RED RETROSPOT) | (JUMBO BAG BAROQUE BLACK WHITE) | 0.116327 | 0.054685 | 0.034481 | 0.296412 | 5.420337 | 0.028119 | 1.343563 |
| 39 | (JUMBO BAG BAROQUE BLACK WHITE) | (JUMBO BAG RED RETROSPOT) | 0.054685 | 0.116327 | 0.034481 | 0.630531 | 5.420337 | 0.028119 | 2.391738 |
| 40 | (JUMBO BAG RED RETROSPOT) | (JUMBO STORAGE BAG SUKI) | 0.116327 | 0.068356 | 0.042224 | 0.362975 | 5.310028 | 0.034272 | 1.462490 |
| 41 | (JUMBO STORAGE BAG SUKI) | (JUMBO BAG RED RETROSPOT) | 0.068356 | 0.116327 | 0.042224 | 0.617699 | 5.310028 | 0.034272 | 2.311460 |
| 42 | (JUMBO SHOPPER VINTAGE RED PAISLEY) | (JUMBO BAG RED RETROSPOT) | 0.068477 | 0.116327 | 0.039744 | 0.580389 | 4.989290 | 0.031778 | 2.105933 |
| 43 | (JUMBO BAG RED RETROSPOT) | (JUMBO SHOPPER VINTAGE RED PAISLEY) | 0.116327 | 0.068477 | 0.039744 | 0.341654 | 4.989290 | 0.031778 | 1.414943 |
| 44 | (JUMBO BAG APPLES) | (JUMBO BAG RED RETROSPOT) | 0.053536 | 0.116327 | 0.030730 | 0.574011 | 4.934467 | 0.024502 | 2.074405 |
| 45 | (JUMBO BAG RED RETROSPOT) | (JUMBO BAG APPLES) | 0.116327 | 0.053536 | 0.030730 | 0.264171 | 4.934467 | 0.024502 | 1.286255 |
| 46 | (JUMBO BAG RED RETROSPOT) | (LUNCH BAG RED RETROSPOT) | 0.116327 | 0.084205 | 0.032121 | 0.276131 | 3.279255 | 0.022326 | 1.265139 |
| 47 | (LUNCH BAG RED RETROSPOT) | (JUMBO BAG RED RETROSPOT) | 0.084205 | 0.116327 | 0.032121 | 0.381466 | 3.279255 | 0.022326 | 1.428656 |
pivot = RULES_UK.pivot(index = 'consequents', columns = 'antecedents', values= 'lift')
# Generate a heatmap with annotations on and the colorbar off
sns.heatmap(pivot, annot = True, cbar=False)
plt.yticks(rotation=0)
plt.xticks(rotation=90)
plt.show()
frequency_GER = apriori(GER_basket_filter, min_support = 0.03, use_colnames = True).sort_values('support', ascending ='False').reset_index(drop = True)
RULES_GER = association_rules(frequency_GER, metric ='lift', min_threshold =1).sort_values('lift', ascending = False).reset_index(drop = True)
RULES_GER
| antecedents | consequents | antecedent support | consequent support | support | confidence | lift | leverage | conviction | |
|---|---|---|---|---|---|---|---|---|---|
| 0 | (SPACEBOY CHILDRENS BOWL) | (SPACEBOY CHILDRENS CUP) | 0.044496 | 0.046838 | 0.039813 | 0.894737 | 19.102632 | 0.037729 | 9.055035 |
| 1 | (SPACEBOY CHILDRENS CUP) | (SPACEBOY CHILDRENS BOWL) | 0.046838 | 0.044496 | 0.039813 | 0.850000 | 19.102632 | 0.037729 | 6.370023 |
| 2 | (STRAWBERRY CERAMIC TRINKET BOX) | (SWEETHEART CERAMIC TRINKET BOX) | 0.056206 | 0.035129 | 0.030445 | 0.541667 | 15.419444 | 0.028471 | 2.105174 |
| 3 | (SWEETHEART CERAMIC TRINKET BOX) | (STRAWBERRY CERAMIC TRINKET BOX) | 0.035129 | 0.056206 | 0.030445 | 0.866667 | 15.419444 | 0.028471 | 7.078454 |
| 4 | (SET OF 12 FAIRY CAKE BAKING CASES) | (SET OF 12 MINI LOAF BAKING CASES) | 0.044496 | 0.044496 | 0.030445 | 0.684211 | 15.376731 | 0.028465 | 3.025761 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 239 | (REGENCY CAKESTAND 3 TIER) | (PLASTERS IN TIN WOODLAND ANIMALS) | 0.147541 | 0.147541 | 0.030445 | 0.206349 | 1.398589 | 0.008677 | 1.074098 |
| 240 | (6 RIBBONS RUSTIC CHARM) | (ROUND SNACK BOXES SET OF4 WOODLAND) | 0.110070 | 0.262295 | 0.037471 | 0.340426 | 1.297872 | 0.008600 | 1.118456 |
| 241 | (ROUND SNACK BOXES SET OF4 WOODLAND) | (6 RIBBONS RUSTIC CHARM) | 0.262295 | 0.110070 | 0.037471 | 0.142857 | 1.297872 | 0.008600 | 1.038251 |
| 242 | (REGENCY CAKESTAND 3 TIER) | (ROUND SNACK BOXES SET OF4 WOODLAND) | 0.147541 | 0.262295 | 0.042155 | 0.285714 | 1.089286 | 0.003455 | 1.032787 |
| 243 | (ROUND SNACK BOXES SET OF4 WOODLAND) | (REGENCY CAKESTAND 3 TIER) | 0.262295 | 0.147541 | 0.042155 | 0.160714 | 1.089286 | 0.003455 | 1.015696 |
244 rows × 9 columns
frequency_FR = apriori(FR_basket_filter, min_support = 0.03, use_colnames = True).sort_values('support', ascending ='False').reset_index(drop = True)
RULES_FR = association_rules(frequency_FR, metric ='lift', min_threshold =1).sort_values('lift', ascending = False).reset_index(drop = True)
RULES_FR
| antecedents | consequents | antecedent support | consequent support | support | confidence | lift | leverage | conviction | |
|---|---|---|---|---|---|---|---|---|---|
| 0 | (DOLLY GIRL CHILDRENS BOWL, SPACEBOY CHILDRENS... | (DOLLY GIRL CHILDRENS CUP, SPACEBOY CHILDRENS ... | 0.030055 | 0.035519 | 0.030055 | 1.000000 | 28.153846 | 0.028987 | inf |
| 1 | (DOLLY GIRL CHILDRENS CUP, SPACEBOY CHILDRENS ... | (DOLLY GIRL CHILDRENS BOWL, SPACEBOY CHILDRENS... | 0.035519 | 0.030055 | 0.030055 | 0.846154 | 28.153846 | 0.028987 | 6.304645 |
| 2 | (PACK OF 20 SKULL PAPER NAPKINS, SET/6 RED SPO... | (PACK OF 6 SKULL PAPER PLATES, SET/6 RED SPOTT... | 0.032787 | 0.035519 | 0.030055 | 0.916667 | 25.807692 | 0.028890 | 11.573770 |
| 3 | (PACK OF 6 SKULL PAPER PLATES, SET/6 RED SPOTT... | (PACK OF 20 SKULL PAPER NAPKINS, SET/6 RED SPO... | 0.035519 | 0.032787 | 0.030055 | 0.846154 | 25.807692 | 0.028890 | 6.286885 |
| 4 | (PACK OF 20 SKULL PAPER NAPKINS, SET/6 RED SPO... | (PACK OF 6 SKULL PAPER PLATES, SET/6 RED SPOTT... | 0.032787 | 0.035519 | 0.030055 | 0.916667 | 25.807692 | 0.028890 | 11.573770 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 1813 | (RABBIT NIGHT LIGHT) | (RED RETROSPOT MINI CASES) | 0.196721 | 0.147541 | 0.032787 | 0.166667 | 1.129630 | 0.003762 | 1.022951 |
| 1814 | (LUNCH BAG RED RETROSPOT) | (PLASTERS IN TIN CIRCUS PARADE) | 0.163934 | 0.180328 | 0.032787 | 0.200000 | 1.109091 | 0.003225 | 1.024590 |
| 1815 | (PLASTERS IN TIN CIRCUS PARADE) | (LUNCH BAG RED RETROSPOT) | 0.180328 | 0.163934 | 0.032787 | 0.181818 | 1.109091 | 0.003225 | 1.021858 |
| 1816 | (LUNCH BAG RED RETROSPOT) | (RABBIT NIGHT LIGHT) | 0.163934 | 0.196721 | 0.035519 | 0.216667 | 1.101389 | 0.003270 | 1.025462 |
| 1817 | (RABBIT NIGHT LIGHT) | (LUNCH BAG RED RETROSPOT) | 0.196721 | 0.163934 | 0.035519 | 0.180556 | 1.101389 | 0.003270 | 1.020283 |
1818 rows × 9 columns
RULES_UK[(RULES_UK['support']>= 0.04) & (RULES_UK['confidence']>=0.08)]
| antecedents | consequents | antecedent support | consequent support | support | confidence | lift | leverage | conviction | length | |
|---|---|---|---|---|---|---|---|---|---|---|
| 6 | (GREEN REGENCY TEACUP AND SAUCER) | (ROSES REGENCY TEACUP AND SAUCER) | 0.056500 | 0.057710 | 0.042405 | 0.750535 | 13.005345 | 0.039145 | 3.777249 | 1 |
| 7 | (ROSES REGENCY TEACUP AND SAUCER) | (GREEN REGENCY TEACUP AND SAUCER) | 0.057710 | 0.056500 | 0.042405 | 0.734801 | 13.005345 | 0.039145 | 3.557704 | 1 |
| 30 | (JUMBO BAG RED RETROSPOT) | (JUMBO BAG PINK POLKADOT) | 0.116327 | 0.069990 | 0.047487 | 0.408216 | 5.832519 | 0.039345 | 1.571538 | 1 |
| 31 | (JUMBO BAG PINK POLKADOT) | (JUMBO BAG RED RETROSPOT) | 0.069990 | 0.116327 | 0.047487 | 0.678479 | 5.832519 | 0.039345 | 2.748413 | 1 |
| 40 | (JUMBO BAG RED RETROSPOT) | (JUMBO STORAGE BAG SUKI) | 0.116327 | 0.068356 | 0.042224 | 0.362975 | 5.310028 | 0.034272 | 1.462490 | 1 |
| 41 | (JUMBO STORAGE BAG SUKI) | (JUMBO BAG RED RETROSPOT) | 0.068356 | 0.116327 | 0.042224 | 0.617699 | 5.310028 | 0.034272 | 2.311460 | 1 |
RULES_GER[(RULES_GER['support']>= 0.04) & (RULES_GER['confidence']>=0.08)]
| antecedents | consequents | antecedent support | consequent support | support | confidence | lift | leverage | conviction | length | |
|---|---|---|---|---|---|---|---|---|---|---|
| 6 | (CHILDRENS CUTLERY DOLLY GIRL) | (CHILDRENS CUTLERY SPACEBOY) | 0.053864 | 0.051522 | 0.042155 | 0.782609 | 15.189723 | 0.039379 | 4.362998 | 1 |
| 7 | (CHILDRENS CUTLERY SPACEBOY) | (CHILDRENS CUTLERY DOLLY GIRL) | 0.051522 | 0.053864 | 0.042155 | 0.818182 | 15.189723 | 0.039379 | 5.203747 | 1 |
| 8 | (SET/6 RED SPOTTY PAPER PLATES) | (SET/6 RED SPOTTY PAPER CUPS) | 0.060890 | 0.053864 | 0.049180 | 0.807692 | 14.994983 | 0.045901 | 4.919906 | 1 |
| 9 | (SET/6 RED SPOTTY PAPER CUPS) | (SET/6 RED SPOTTY PAPER PLATES) | 0.053864 | 0.060890 | 0.049180 | 0.913043 | 14.994983 | 0.045901 | 10.799766 | 1 |
| 46 | (WOODLAND CHARLOTTE BAG) | (RED RETROSPOT CHARLOTTE BAG) | 0.135831 | 0.074941 | 0.063232 | 0.465517 | 6.211746 | 0.053052 | 1.730755 | 1 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 225 | (RED TOADSTOOL LED NIGHT LIGHT) | (ROUND SNACK BOXES SET OF4 WOODLAND) | 0.103044 | 0.262295 | 0.049180 | 0.477273 | 1.819602 | 0.022152 | 1.411262 | 1 |
| 230 | (PLASTERS IN TIN SPACEBOY) | (ROUND SNACK BOXES SET OF4 WOODLAND) | 0.114754 | 0.262295 | 0.051522 | 0.448980 | 1.711735 | 0.021423 | 1.338798 | 1 |
| 231 | (ROUND SNACK BOXES SET OF4 WOODLAND) | (PLASTERS IN TIN SPACEBOY) | 0.262295 | 0.114754 | 0.051522 | 0.196429 | 1.711735 | 0.021423 | 1.101639 | 1 |
| 242 | (REGENCY CAKESTAND 3 TIER) | (ROUND SNACK BOXES SET OF4 WOODLAND) | 0.147541 | 0.262295 | 0.042155 | 0.285714 | 1.089286 | 0.003455 | 1.032787 | 1 |
| 243 | (ROUND SNACK BOXES SET OF4 WOODLAND) | (REGENCY CAKESTAND 3 TIER) | 0.262295 | 0.147541 | 0.042155 | 0.160714 | 1.089286 | 0.003455 | 1.015696 | 1 |
72 rows × 10 columns
RULES_FR[(RULES_FR['support']>= 0.04) & (RULES_FR['confidence']>=0.08)]
| antecedents | consequents | antecedent support | consequent support | support | confidence | lift | leverage | conviction | |
|---|---|---|---|---|---|---|---|---|---|
| 162 | (DOLLY GIRL CHILDRENS BOWL) | (DOLLY GIRL CHILDRENS CUP) | 0.049180 | 0.043716 | 0.040984 | 0.833333 | 19.062500 | 0.038834 | 5.737705 |
| 163 | (DOLLY GIRL CHILDRENS CUP) | (DOLLY GIRL CHILDRENS BOWL) | 0.043716 | 0.049180 | 0.040984 | 0.937500 | 19.062500 | 0.038834 | 15.213115 |
| 286 | (DOLLY GIRL CHILDRENS BOWL) | (SPACEBOY CHILDRENS BOWL) | 0.049180 | 0.054645 | 0.043716 | 0.888889 | 16.266667 | 0.041028 | 8.508197 |
| 287 | (SPACEBOY CHILDRENS BOWL) | (DOLLY GIRL CHILDRENS BOWL) | 0.054645 | 0.049180 | 0.043716 | 0.800000 | 16.266667 | 0.041028 | 4.754098 |
| 306 | (PACK OF 6 SKULL PAPER PLATES) | (PACK OF 6 SKULL PAPER CUPS, PACK OF 20 SKULL ... | 0.060109 | 0.043716 | 0.040984 | 0.681818 | 15.596591 | 0.038356 | 3.005464 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 1797 | (PLASTERS IN TIN CIRCUS PARADE) | (RABBIT NIGHT LIGHT) | 0.180328 | 0.196721 | 0.043716 | 0.242424 | 1.232323 | 0.008242 | 1.060328 |
| 1798 | (ROUND SNACK BOXES SET OF4 WOODLAND) | (RABBIT NIGHT LIGHT) | 0.169399 | 0.196721 | 0.040984 | 0.241935 | 1.229839 | 0.007659 | 1.059644 |
| 1799 | (RABBIT NIGHT LIGHT) | (ROUND SNACK BOXES SET OF4 WOODLAND) | 0.196721 | 0.169399 | 0.040984 | 0.208333 | 1.229839 | 0.007659 | 1.049180 |
| 1810 | (PLASTERS IN TIN WOODLAND ANIMALS) | (RABBIT NIGHT LIGHT) | 0.183060 | 0.196721 | 0.040984 | 0.223881 | 1.138060 | 0.004972 | 1.034994 |
| 1811 | (RABBIT NIGHT LIGHT) | (PLASTERS IN TIN WOODLAND ANIMALS) | 0.196721 | 0.183060 | 0.040984 | 0.208333 | 1.138060 | 0.004972 | 1.031924 |
286 rows × 9 columns
RULES_UK['length']= RULES_UK['antecedents'].apply(lambda x:len(x))
RULES_UK[RULES_UK['length']>1].sort_values('lift',ascending = False)
| antecedents | consequents | antecedent support | consequent support | support | confidence | lift | leverage | conviction | length |
|---|
RULES_FR['length']= RULES_FR['antecedents'].apply(lambda x:len(x))
RULES_FR[RULES_FR['length']>1].sort_values('lift',ascending = False).head()
| antecedents | consequents | antecedent support | consequent support | support | confidence | lift | leverage | conviction | length | |
|---|---|---|---|---|---|---|---|---|---|---|
| 0 | (DOLLY GIRL CHILDRENS BOWL, SPACEBOY CHILDRENS... | (DOLLY GIRL CHILDRENS CUP, SPACEBOY CHILDRENS ... | 0.030055 | 0.035519 | 0.030055 | 1.000000 | 28.153846 | 0.028987 | inf | 2 |
| 1 | (DOLLY GIRL CHILDRENS CUP, SPACEBOY CHILDRENS ... | (DOLLY GIRL CHILDRENS BOWL, SPACEBOY CHILDRENS... | 0.035519 | 0.030055 | 0.030055 | 0.846154 | 28.153846 | 0.028987 | 6.304645 | 2 |
| 2 | (PACK OF 20 SKULL PAPER NAPKINS, SET/6 RED SPO... | (PACK OF 6 SKULL PAPER PLATES, SET/6 RED SPOTT... | 0.032787 | 0.035519 | 0.030055 | 0.916667 | 25.807692 | 0.028890 | 11.573770 | 3 |
| 5 | (PACK OF 6 SKULL PAPER PLATES, SET/6 RED SPOTT... | (PACK OF 20 SKULL PAPER NAPKINS, SET/6 RED SPO... | 0.035519 | 0.032787 | 0.030055 | 0.846154 | 25.807692 | 0.028890 | 6.286885 | 3 |
| 3 | (PACK OF 6 SKULL PAPER PLATES, SET/6 RED SPOTT... | (PACK OF 20 SKULL PAPER NAPKINS, SET/6 RED SPO... | 0.035519 | 0.032787 | 0.030055 | 0.846154 | 25.807692 | 0.028890 | 6.286885 | 3 |
RULES_GER['length']= RULES_GER['antecedents'].apply(lambda x:len(x))
RULES_GER[RULES_GER['length']>1].sort_values('lift',ascending = False)
| antecedents | consequents | antecedent support | consequent support | support | confidence | lift | leverage | conviction | length | |
|---|---|---|---|---|---|---|---|---|---|---|
| 34 | (ROUND SNACK BOXES SET OF4 WOODLAND, RED RETRO... | (WOODLAND CHARLOTTE BAG) | 0.032787 | 0.135831 | 0.032787 | 1.000000 | 7.362069 | 0.028333 | inf | 2 |
| 43 | (ROUND SNACK BOXES SET OF4 WOODLAND, WOODLAND ... | (RED RETROSPOT CHARLOTTE BAG) | 0.067916 | 0.074941 | 0.032787 | 0.482759 | 6.441810 | 0.027697 | 1.788447 | 2 |
| 56 | (ROUND SNACK BOXES SET OF4 WOODLAND, PLASTERS ... | (PLASTERS IN TIN WOODLAND ANIMALS) | 0.051522 | 0.147541 | 0.037471 | 0.727273 | 4.929293 | 0.029869 | 3.125683 | 2 |
| 57 | (PLASTERS IN TIN CIRCUS PARADE, PLASTERS IN TI... | (PLASTERS IN TIN WOODLAND ANIMALS) | 0.051522 | 0.147541 | 0.037471 | 0.727273 | 4.929293 | 0.029869 | 3.125683 | 2 |
| 60 | (ROUND SNACK BOXES SET OF4 WOODLAND, LUNCH BOX... | (ROUND SNACK BOXES SET OF 4 FRUITS) | 0.037471 | 0.168618 | 0.030445 | 0.812500 | 4.818576 | 0.024127 | 4.434036 | 2 |
| 63 | (ROUND SNACK BOXES SET OF 4 FRUITS, PLASTERS I... | (PLASTERS IN TIN CIRCUS PARADE) | 0.051522 | 0.124122 | 0.030445 | 0.590909 | 4.760720 | 0.024050 | 2.141036 | 2 |
| 64 | (PLASTERS IN TIN CIRCUS PARADE, ROUND SNACK BO... | (PLASTERS IN TIN WOODLAND ANIMALS) | 0.060890 | 0.147541 | 0.042155 | 0.692308 | 4.692308 | 0.033171 | 2.770492 | 2 |
| 67 | (CHARLOTTE BAG APPLES DESIGN, ROUND SNACK BOXE... | (ROUND SNACK BOXES SET OF 4 FRUITS) | 0.042155 | 0.168618 | 0.032787 | 0.777778 | 4.612654 | 0.025679 | 3.741218 | 2 |
| 69 | (PLASTERS IN TIN SPACEBOY, PLASTERS IN TIN WOO... | (PLASTERS IN TIN CIRCUS PARADE) | 0.065574 | 0.124122 | 0.037471 | 0.571429 | 4.603774 | 0.029332 | 2.043716 | 2 |
| 72 | (PLASTERS IN TIN CIRCUS PARADE, PLASTERS IN TI... | (PLASTERS IN TIN SPACEBOY) | 0.072600 | 0.114754 | 0.037471 | 0.516129 | 4.497696 | 0.029140 | 1.829508 | 2 |
| 74 | (PLASTERS IN TIN CIRCUS PARADE, ROUND SNACK BO... | (ROUND SNACK BOXES SET OF 4 FRUITS) | 0.060890 | 0.168618 | 0.044496 | 0.730769 | 4.333868 | 0.034229 | 3.087989 | 2 |
| 76 | (ROUND SNACK BOXES SET OF4 WOODLAND, PLASTERS ... | (PLASTERS IN TIN CIRCUS PARADE) | 0.079625 | 0.124122 | 0.042155 | 0.529412 | 4.265261 | 0.032271 | 1.861241 | 2 |
| 78 | (ROUND SNACK BOXES SET OF4 WOODLAND, PLASTERS ... | (PLASTERS IN TIN SPACEBOY) | 0.079625 | 0.114754 | 0.037471 | 0.470588 | 4.100840 | 0.028333 | 1.672131 | 2 |
| 85 | (ROUND SNACK BOXES SET OF 4 FRUITS, PLASTERS I... | (PLASTERS IN TIN WOODLAND ANIMALS) | 0.053864 | 0.147541 | 0.030445 | 0.565217 | 3.830918 | 0.022498 | 1.960656 | 2 |
| 91 | (ROUND SNACK BOXES SET OF4 WOODLAND, WOODLAND ... | (ROUND SNACK BOXES SET OF 4 FRUITS) | 0.067916 | 0.168618 | 0.042155 | 0.620690 | 3.681034 | 0.030703 | 2.191825 | 2 |
| 94 | (ROUND SNACK BOXES SET OF 4 FRUITS, SPACEBOY L... | (ROUND SNACK BOXES SET OF4 WOODLAND) | 0.042155 | 0.262295 | 0.039813 | 0.944444 | 3.600694 | 0.028756 | 13.278689 | 2 |
| 99 | (CHARLOTTE BAG APPLES DESIGN, ROUND SNACK BOXE... | (ROUND SNACK BOXES SET OF4 WOODLAND) | 0.035129 | 0.262295 | 0.032787 | 0.933333 | 3.558333 | 0.023573 | 11.065574 | 2 |
| 102 | (ROUND SNACK BOXES SET OF 4 FRUITS, ROUND SNAC... | (CHARLOTTE BAG APPLES DESIGN) | 0.140515 | 0.070258 | 0.032787 | 0.233333 | 3.321111 | 0.022915 | 1.212707 | 2 |
| 104 | (ROUND SNACK BOXES SET OF4 WOODLAND, PLASTERS ... | (ROUND SNACK BOXES SET OF 4 FRUITS) | 0.079625 | 0.168618 | 0.044496 | 0.558824 | 3.314134 | 0.031070 | 1.884465 | 2 |
| 106 | (ROUND SNACK BOXES SET OF 4 FRUITS, LUNCH BOX ... | (ROUND SNACK BOXES SET OF4 WOODLAND) | 0.035129 | 0.262295 | 0.030445 | 0.866667 | 3.304167 | 0.021231 | 5.532787 | 2 |
| 109 | (ROUND SNACK BOXES SET OF 4 FRUITS, PLASTERS I... | (ROUND SNACK BOXES SET OF4 WOODLAND) | 0.051522 | 0.262295 | 0.044496 | 0.863636 | 3.292614 | 0.030982 | 5.409836 | 2 |
| 111 | (ROUND SNACK BOXES SET OF 4 FRUITS, WOODLAND C... | (ROUND SNACK BOXES SET OF4 WOODLAND) | 0.049180 | 0.262295 | 0.042155 | 0.857143 | 3.267857 | 0.029255 | 5.163934 | 2 |
| 114 | (ROUND SNACK BOXES SET OF 4 FRUITS, ROUND SNAC... | (LUNCH BOX WITH CUTLERY RETROSPOT) | 0.140515 | 0.067916 | 0.030445 | 0.216667 | 3.190230 | 0.020902 | 1.189895 | 2 |
| 119 | (ROUND SNACK BOXES SET OF4 WOODLAND, SPACEBOY ... | (ROUND SNACK BOXES SET OF 4 FRUITS) | 0.074941 | 0.168618 | 0.039813 | 0.531250 | 3.150608 | 0.027176 | 1.773614 | 2 |
| 121 | (ROUND SNACK BOXES SET OF 4 FRUITS, PLASTERS I... | (ROUND SNACK BOXES SET OF4 WOODLAND) | 0.053864 | 0.262295 | 0.044496 | 0.826087 | 3.149457 | 0.030368 | 4.241803 | 2 |
| 144 | (ROUND SNACK BOXES SET OF 4 FRUITS, ROUND SNAC... | (SPACEBOY LUNCH BOX) | 0.140515 | 0.110070 | 0.039813 | 0.283333 | 2.574113 | 0.024346 | 1.241762 | 2 |
| 148 | (ROUND SNACK BOXES SET OF 4 FRUITS, ROUND SNAC... | (PLASTERS IN TIN CIRCUS PARADE) | 0.140515 | 0.124122 | 0.044496 | 0.316667 | 2.551258 | 0.027055 | 1.281773 | 2 |
| 150 | (PLASTERS IN TIN CIRCUS PARADE, PLASTERS IN TI... | (ROUND SNACK BOXES SET OF 4 FRUITS) | 0.072600 | 0.168618 | 0.030445 | 0.419355 | 2.487007 | 0.018203 | 1.431824 | 2 |
| 174 | (PLASTERS IN TIN CIRCUS PARADE, PLASTERS IN TI... | (ROUND SNACK BOXES SET OF4 WOODLAND) | 0.072600 | 0.262295 | 0.042155 | 0.580645 | 2.213710 | 0.023112 | 1.759142 | 2 |
| 177 | (ROUND SNACK BOXES SET OF 4 FRUITS, ROUND SNAC... | (WOODLAND CHARLOTTE BAG) | 0.140515 | 0.135831 | 0.042155 | 0.300000 | 2.208621 | 0.023068 | 1.234527 | 2 |
| 183 | (PLASTERS IN TIN SPACEBOY, PLASTERS IN TIN WOO... | (ROUND SNACK BOXES SET OF4 WOODLAND) | 0.065574 | 0.262295 | 0.037471 | 0.571429 | 2.178571 | 0.020271 | 1.721311 | 2 |
| 191 | (ROUND SNACK BOXES SET OF 4 FRUITS, ROUND SNAC... | (PLASTERS IN TIN WOODLAND ANIMALS) | 0.140515 | 0.147541 | 0.044496 | 0.316667 | 2.146296 | 0.023765 | 1.247501 | 2 |
| 209 | (WOODLAND CHARLOTTE BAG, RED RETROSPOT CHARLOT... | (ROUND SNACK BOXES SET OF4 WOODLAND) | 0.063232 | 0.262295 | 0.032787 | 0.518519 | 1.976852 | 0.016201 | 1.532156 | 2 |