Python操作csv文件源代码.rar
(27.59 KB, 售价: 1 E币)
部分代码:
- # -*- coding:utf-8 -*-
- #以只读的方式打开指定的扩展名为csv的文件,其编码格式为UTF-8-sig,注意这个位置的编码格式不能是utf-8
- file = open(r'E:\python\a.csv','r',encoding='utf-8-sig')
- #读取文件的内容并将其赋给变量data
- data = csv.reader(file)
- #读取变量data中的第一行(表头)
- header = next(data)
- #print('header = ' + str(header))
- #创建一个列表attributeList,专门存放数据源的属性值
- attributeList = []
- #创建一个列表resultList,专门存放对应各行记录的结果值
- resultList = []
- for row in data:
- resultList.append(row[len(row) - 1]) #将每行记录的结果值存入resultList中
- rowDictionary = {} #定义一个词典rowDictionary,用来存放每行的属性名称及其对应的属性值
- for i in range(1,len(row) - 1):
- rowDictionary[header[i]] = row[i] #向词典rowDictionary添加属性名称及其对应的属性值
- attributeList.append(rowDictionary) #将每次内层循环产生的词典添加到列表attributeList中
- # print(resultList)
- vec = DictVectorizer() #创建一个DictVectorizer的实例,DictVectorizer是字典特征提取器,用来将数据的数据类型转化为整型
- attributeArray = vec.fit_transform(attributeList).toarray() #利用vec实例将列表attributeList转化成“01”矩阵,函数fit_transform是先拟合数据,再标准化,函数toarray是将转化后的数据转变为数组
- title = vec.get_feature_names() #获取vec中所有特征向量的名称和及其能取到的值
- #print(title)
- #print(array)
- lb = preprocessing.LabelBinarizer() #初始化变量lb,preprocessing.LabelBinarizer()的作用是可将分类数据转化为“01”数据,例如可以把yes和no转化为0和1,或是把incident和normal转化为0和1
- resultArray = lb.fit_transform(resultList) #将结果值列表resultList转化为“01”矩阵
- #print(resultArray)
- transformArray = tree.DecisionTreeClassifier(criterion='entropy') #利用分类决策树tree(已引入)模块创建决策树分类器DecisionTreeClassifier,其实现算法是ID3算法(criterion=entropy)
- transformArray = transformArray.fit(attributeArray, resultArray) #根据attributeArray和resultArray生成决策树
- #利用pip安装graphviz包和pydotplus包
- dotData = tree.export_graphviz(transformArray,feature_names=title,out_file=None)#根据transformArray和title生成判定树的节点,同时让输出文件为None(out_file=None)
- graph = pydotplus.graph_from_dot_data(dotData) #根据上条语句生成的决策树结点dotData生成判定树的图形结构
- graph.write_pdf('E:/python/a.pdf') #将树形结构写入到指定的文件中
复制代码
【必读】版权免责声明
1、本主题所有言论和内容纯属会员个人意见,与本论坛立场无关。2、本站对所发内容真实性、客观性、可用性不做任何保证也不负任何责任,网友之间仅出于学习目的进行交流。3、对提供的数字内容不拥有任何权利,其版权归原著者拥有。请勿将该数字内容进行商业交易、转载等行为,该内容只为学习所提供,使用后发生的一切问题与本站无关。 4、本网站不保证本站提供的下载资源的准确性、安全性和完整性;同时本网站也不承担用户因使用这些下载资源对自己和他人造成任何形式的损失或伤害。 5、本网站所有软件和资料均为网友推荐收集整理而来,仅供学习用途使用,请务必下载后两小时内删除,禁止商用。6、如有侵犯你版权的,请及时联系我们(电子邮箱1370723259@qq.com)指出,本站将立即改正。
|