27号:关于Pandas在Python中的运用
- 矩阵转置可以用XXXXX.T来完成转置操作
x=x.iloc[:,1:].T
- pandas切片,可以用正常的list切片操作,也可以用[:,:],前者操作行,后者操作列,即可操作多维度的表
ck=x.iloc[1,:]
cp=x.iloc[0:1,:]
cp=cp.append(x.iloc[2:,:])
- 若有2个Series要合并,可以用DataFrame强制转换2个Series,然后用merge函数进行表合并,其中参数设置left_index=True 和right_index=True,这样2各表就可以按照索引进行联合
biaoti=pd.DataFrame(cp.index.values)
r=pd.DataFrame(r)
r=biaoti.merge(r,left_index=True,right_index=True)
关于灰度相关性分析:
这个算法其实就是检测其他属性对于主要测的属性的相关性分析,其中最后值在[0,1]之间。
- 首先需要进行获取数据,利用pandas就可以读取csv或者excel,甚至用数据库导入就可以获取数据
- 其次进行无量纲化,即标准化,可以用均值法,Z-score,max-min等等方法进行标准化
- 然后选取主测列和其他列,分析主测列与其他列关系
- 依据算法带入公式
- 根据算法的结果形成一个数列Series,然后查看一一对应,选取较大关系的属性,可以以0.8或者0.7为阈值,这个阈值视情况而定,不同项目需求不相同阈值
- 根据结果删除无关属性
# -*- coding: utf-8 -*-
# Time :16:56
# AUTHOR : Rexa (YUKAI)
import os
import pandas as pd
import numpy as np
import pandas as pd
x=pd.read_csv("灰色关联分析_样例数据(1).csv")
x=x.iloc[:,1:].T
# 1、数据均值化处理
x_mean=x.mean(axis=1)
for i in range(x.index.size):
x.iloc[i,:] = x.iloc[i,:]/x_mean[i]
# 2、提取参考队列和比较队列
print(x)
ck=x.iloc[0,:]
print(ck)
cp=x.iloc[1:,:]
print(cp)
# 比较队列与参考队列相减
t=pd.DataFrame()
for j in range(cp.index.size):
temp=pd.Series(cp.iloc[j,:]-ck)
t=t.append(temp,ignore_index=True)
#求最大差和最小差
mmax=t.abs().max().max()
mmin=t.abs().min().min()
rho=0.5
#3、求关联系数
ksi=((mmin+rho*mmax)/(abs(t)+rho*mmax))
#4、求关联度
r=ksi.sum(axis=1)/ksi.columns.size
#5、关联度排序,得到结果r3>r2>r1
result=r.sort_values(ascending=False)
# print(result)
数据挖掘分析大致思路
- 业务理解,了解客户需求
- 将客户的需求分解并形成可以用数据挖掘或者数据分析的问题
- 收集原始数据(或者二手数据),有些数据可以和客户沟通进行获取
- 大致了解数据的基本构型,然后将复杂的属性表连接起来,形成复杂的联表。
- 进行数据标准化,去除量纲
- 作相关度分析,比如灰色相关分析
- 根据灰色分析,去除不必要的属性,进行降维,同时也可以利用其它方法进行降维
- 选择合适的特征点,并检查数据是否唯一,检查异常和空缺值
- 对异常值和空缺值进行处理
- 再次标准化,根据数据表的特征选择标准化方法,可以用Z-score,mean,max-min等等算
- 选择模型,比如分类,svm,knn,rf,回归也可以
- 进行评估,分类算法就用F1score或者Cross validation,回归就用MSE和R方
- 如果模型评价完美,就形成报告,不完美,回到3进行反工
- 完成文档