如何基于Dataframe值自动执行函数输出

时间:2019-03-27 10:46:16

标签: python pandas

我已经用Python完成了一个简单的频繁项集分析。到目前为止,我一直在分析所有交易(我的数据由国家/地区之间的交易组成)。下面的示例:

ReceiptCode         ItemCategoryName
0000P85071000028501 Stationery  
0000P85071000028501 Food        
0000P85071000028501 Hobby       
0000P85071000028501 Kitchen     
0000P85071000028501 Stationery  
0000P85071000028501 Painting    

我正在对数据集执行以下一些操作:

import pandas as pd
import numpy as np
import pyodbc
from mlxtend.preprocessing import TransactionEncoder
from mlxtend.frequent_patterns import apriori
from mlxtend.frequent_patterns import association_rules

## Query Data into dataframe
dataset = pd.read_sql_query("""some query""", cnxn)
## Transformations 
dataset_tx = dataset.groupby(['ReceiptCode'])['ItemCategoryName'].apply(list).values.tolist()
te = TransactionEncoder()
te_ary = te.fit(dataset_tx).transform(dataset_tx)
df = pd.SparseDataFrame(te_ary, columns=te.columns_)
frequent_itemsets = apriori(df, min_support=0.009, use_colnames=True)
rules = association_rules(frequent_itemsets, metric="confidence", min_threshold=0.3)

但是我想在各个国家/地区进行此分析,因此我添加了第3列,其中包含国家/地区名称(以下示例)。

ReceiptCode         ItemCategoryName StoreCountryName
0000P85071000028501 Stationery       Ireland
0000P85071000028501 Food             Ireland
0000P85071000028501 Hobby            Ireland
0000P85071000028501 Kitchen          Ireland
0000P85071000028501 Stationery       Ireland
0000P85071000028501 Painting         Ireland

我没有对所有国家/地区重复上述步骤,而是试图将其塞入一个循环,并相应地命名所有变量,以便我能分辨出国家/地区之间的差异。 也就是说,我试图获取特定国家/地区的变量 frequent_itemsets rules 变量,而无需手动进行操作。rules_Irelandfrequent_itemsets_Ireland

到目前为止,我已经将国家/地区分组到一个DataFrameGroup中,然后使用列出

g = dataset.groupby('StoreCountryName')
dfs = [group for _,group in g]

但是,我不确定如何从这里继续。如果我遍历所有dfs[i]并创建交易列表,则不知道如何跟踪国家/地区名称。有人对此有解决方案吗?还是我完全错了?

0 个答案:

没有答案