最近在阅读《Python数据分析与挖掘实战》一书,其中发现不少内容没有更新,导致提供的代码直接运行会出现错误。
下面是第8章《中医证型关联规则挖掘》的“代码清单8-1 数据聚类离散化代码”:
#-*- coding:utf-8 -*-
from __future__ import print_function
import pandas as pd
from sklearn.cluster import KMeans
datafile = '../data/data.xls'
processedfile = '../tmp/data_processed.xls'
typelabel = {u'肝气郁结证型系数':'A', u'热毒蕴结证型系数':'B', u'冲任失调证型系数':'C', u'气血两虚证型系数':'D', u'脾胃虚弱证型系数':'E', u'肝肾阴虚证型系数':'F'}
k = 4
data = pd.read_excel(datafile)
keys = list(typelabel.keys())
result = pd.DataFrame()
if __name__ == '__main__':
for i in range(len(keys)):
print(u'正在进行“%s”的聚类...' % keys[i])
kmodel = KMeans(n_clusters=k, n_jobs=4)
kmodel.fit(data[[keys[i]]].as_matrix())
r1 = pd.DataFrame(kmodel.cluster_centers_, columns=[typelabel[keys[i]]])
r2 = pd.Series(kmodel.labels_).value_counts()
r2 = pd.DataFrame(r2, columns=[typelabel[keys[i]] + 'n'])
r = pd.concat([r1, r2], axis=1).sort(typelabel[keys[i]])
r.index = [1,2,3,4]
r[typelabel[keys[i]]] = pd.rolling_mean(r[typelabel[keys[i]]], 2)
r[typelabel[keys[i]]][1] = 0.0
result = result.append(r.T)
result = result.sort()
result.to_excel(processedfile)
其中,第25、31行中会出现 ‘DataFrame’ object has no attribute ‘sort’ 错误,第27行会出现 module ‘pandas’ has no attribute ‘rolling_mean’ 的错误。
关于 ‘DataFrame’ object has no attribute ‘sort’
sort 已经弃用,代替使用的是 sort_values 或者 sort_index 。
- sort_values 基本用法:
- 根据“col1”排序:
df.sort_values(by=['col1'])
- 根据多个排序:
df.sort_values(by=['col1', 'col2'])
- 倒叙排序(省略为默认正序):
df.sort_values(by='col1', ascending=False)
- 缺省值NaNs显示在前(省略默认在后):
df.sort_values(by='col1', ascending=False, na_position='first')
- 注意:只有by是必须的,其他可缺省。
- 根据“col1”排序:
- sort_index 基本用法:
- 直接使用,不需要添加参数:
df.sort_index()
- 直接使用,不需要添加参数:
关于 module ‘pandas’ has no attribute ‘rolling_mean’
pandas包中关于“rolling_mean”已经更新用法,代替使用的是 rolling。
“rolling_mean” 的用法应该对应为df.rolling(2).mean()
。
修改版代码
#-*- coding:utf-8 -*-
from __future__ import print_function
import pandas as pd
from sklearn.cluster import KMeans
datafile = '../data/data.xls'
processedfile = '../tmp/data_processed.xls'
typelabel = {u'肝气郁结证型系数':'A', u'热毒蕴结证型系数':'B', u'冲任失调证型系数':'C', u'气血两虚证型系数':'D', u'脾胃虚弱证型系数':'E', u'肝肾阴虚证型系数':'F'}
k = 4
data = pd.read_excel(datafile)
keys = list(typelabel.keys())
result = pd.DataFrame()
if __name__ == '__main__':
for i in range(len(keys)):
print(u'正在进行“%s”的聚类...' % keys[i])
kmodel = KMeans(n_clusters=k, n_jobs=4)
kmodel.fit(data[[keys[i]]].as_matrix())
r1 = pd.DataFrame(kmodel.cluster_centers_, columns=[typelabel[keys[i]]])
r2 = pd.Series(kmodel.labels_).value_counts()
r2 = pd.DataFrame(r2, columns=[typelabel[keys[i]] + 'n'])
r = pd.concat([r1, r2], axis=1).sort_values(typelabel[keys[i]])
r.index = [1,2,3,4]
r[typelabel[keys[i]]] = r[typelabel[keys[i]]].rolling(2).mean()
r[typelabel[keys[i]]][1] = 0.0
result = result.append(r.T)
result = result.sort_index()
result.to_excel(processedfile)
本文由 小TiD笔记 发布在小TiD笔记,转载此文请保持文章完整性,并请附上文章来源(小TiD笔记)及本页链接。
原文链接: https://www.tidnotes.ga/2019/11/python-error-sort.html
[JS]纯代码版基于JQuery的颜色选择器
本文介绍一个基于Jquery的自制颜色选择器,本文会将颜色选择器的制作思路和代码供大家学习、参考。想直接引用的 […]
[Python]关于DataFrame和NumPy数组如何打乱数据
之前在《[Python]关于‘DataFrame’对象没有‘sort’属性》一文中,发现了《Python数据分 […]