基础知识
1.创建DataFrame对象
传入数据可以是字典和嵌套列表。字典的创建为DataFrame对象的列名,值为数据
列表元素作为DataFrame对象的行数据显示,从0开始
pd.DataFrame(data,columns=[’ ‘,’ ‘,’ ']),columns为列表时,与传入DataFrame列表元素长度一致。
对列索引(列名)进行重新赋值。data.columns = [‘a’,‘b’,‘c’]——(新列名)
2.默认按升序对数据进行排列:
data.sort_values(by=‘列名’)
单列排序:data[‘列名’].sort_values()
3.重置索引
参数 | 说明 | 示例 |
---|---|---|
drop | 布尔值:默认为False,保留原索引;值为True,去掉原索引 | data.reset_index(drop=True) |
4.数值四舍五入
data[‘列名’]=round(data[‘列名’],2)
round(data,ndigits)函数,data为要进行四舍五入的数据,ndigits为要保留的小数位数,默认为0
5.agg()方法
定义函数 new_func()(函数名随意)
使用agg()方法将操作列的每个数据传入new_func()函数进行计算,并取得函数的返回值
传入自定义函数时,只需要写上函数名,不需要加上括号以及函数参数。agg(new_func)
方法内传入字典:dict={‘columns’:‘sum’,‘columns’:‘mean’}
eg:data.groupby(‘名称’).agg(dict)
关联分析
1.①:关联分析
各组数据之间的联系
交易中不同物品可称为一个项,k个项组成的项集,叫k项集,项集内不存在相同的项
每条交易记录可称为一个事务
②:支持度:
项集在事务中出现的概率(频率)
{X}的支持度={X}在事务中出现的次数 / 事务总数
人为设定支持度,名为最小支持度>=最小支持度的项集被称为频繁项集。
③:关联规则
探索数据之间的联系(某种关联)
{X}(前件)----->{Y}(后件)(X和Y之间存在相同项)
④:置信度
衡量关联关系的可靠程度,在前件出现的情况下,后件出现的概率。
关联规则{X}----->{Y}的置信度={X,Y}的支持度 / {X}的支持度
人为设定置信度,名为最小置信度>=最小置信度叫做强关联规则
⑤:提升度
事务各自的影响程度
{X}---->{Y}的提升度={X}---->{Y}的置信度 / {Y}的支持度
={X,Y}的支持度 / {X}、{Y}的支持度
提升度<1,抑制关系
提升度>1,促进关系
提升度=1,前件不影响后件
⑥:一个k项数据集,能产生(2^k - 1)个非空频繁项集
一个k项的频繁项集,能产生(2^k - 2)个关联规则
2.Apr算法
步骤:确定最小支持度和最小置信度(取值范围在0-1之间);找出所有频繁项集和强关联规则
执行apriori算法,,返回包含关联规则的数据apriori(transactions,min_support,min_confidence,min_lift)
参数 | 含义 |
---|---|
transactions | 事务集合 |
min_support | 最小支持度 |
min_confidence | 最小置信度 |
min_lift | 最小提升度 |
导入apyori模块下apriori函数
from apyori import apriori
是一个生成器对象,通过循环遍历访问其数据。
关系记录:RelationRecord:频繁项集,支持度,统计列表(ordered_statistics)
核心算法
list1 = []#空列表
#遍历结果数据(调用apriori函数后)
for result in results:
#获取支持度并保留3位小数
support = round(result.support,3)
#遍历ordered_statistics对象
for rule in result.ordered_statistics:
#获取前件和后件并转化成列表
head_set = list(rule,items_base)
tail_set = list(rule,items_add)
#跳过前件为空的数据
if head_set == []:continue
#将前后件拼接成关联规则的形式
related_catogory = str(head_set) + '--->' + str(tail_set)
#提取置信度并保留3位小数
confidence = round(rule.confidence,3)
#提取提升度并保留3位小数
lift = round(rule.lift,3)
#查看强关联规则
list1.append(related_catogory,support,confidence,lift)
#转变成DataFrame对象,按支持度排序