《Python数据分析与挖掘实战》第四章案例代码总结与修改分析第四章案例代码总结与修改分析
【有问题或错误,请私信我将及时改正;借鉴⽂章标明出处,谢谢】
每个案例代码全部为书中源代码,出现错误按照每个案例下⾯给出的代码错误,原因,及怎样修改进⾏修改即可解决每个案例错误4-1
#拉格朗⽇插值代码
import pandas as pd #导⼊数据分析库Pandas
from scipy.interpolate import lagrange #导⼊拉格朗⽇插值函数
inputfile = 'F:/⼤⼆下合集/Python数据分析与挖掘/catering_sale.xls' #销量数据路径
outputfile = 'F:/⼤⼆下合集/Python数据分析与挖掘/sales.xls' #输出数据路径
data = pd.read_excel(inputfile) #读⼊数据
data[u'销量'][(data[u'销量'] < 400) | (data[u'销量'] > 5000)] = None #过滤异常值,将其变为空值
python数据分析基础教程答案#⾃定义列向量插值函数
#s为列向量,n为被插值的位置,k为取前后的数据个数,默认为5
def ployinterp_column(s, n, k=5):
y = s[list(range(n-k, n)) + list(range(n+1, n+1+k))] #取数
y = ull()] #剔除空值
return lagrange(y.index, list(y))(n) #插值并返回插值结果
#逐个元素判断是否需要插值
for i lumns:
for j in range(len(data)):
if (data[i].isnull())[j]: #如果为空即插值。
data[i][j] = ployinterp_column(data[i], j)
<_excel(outputfile) #输出结果,写⼊⽂件
代码错误:
第⼀个错误原因:
data[u'销量'][(data[u'销量'] < 400) | (data[u'销量'] > 5000)] = None #过滤异常值,将其变为空值
修改为:
row_indexs = (data[u'销量'] < 400) | (data[u'销量'] > 5000)
data.loc[row_indexs, u'销量'] = None  # 过滤异常值,将其变为空值
第⼆个错误原因:(需要改两个地⽅代码)
第①处
y = s[list(range(n-k, n)) + list(range(n+1, n+1+k))] #取数
修改为:
y = s.reindex(list(range(n - k, n)) + list(range(n + 1, n + 1 + k)))  # 取数
第②处
data[i][j] = ployinterp_column(data[i], j)
修改为:
data[i, j] = ployinterp_column(data[i], j)
4-2
#-*- coding: utf-8 -*-
#数据规范化
import pandas as pd
import numpy as np
datafile = 'F:/⼤⼆下合集/Python数据分析与挖掘/normalization_data.xls' #参数初始化data = pd.read_excel(datafile, header = None) #读取数据
(data - data.min())/(data.max() - data.min()) #最⼩-最⼤规范化
(data - an())/data.std() #零-均值规范化
data/10**np.ceil(np.log10(data.abs().max())) #⼩数定标规范化
代码错误:
没有报错,但是在idea中运⾏没有结果
原因:
(data - data.min())/(data.max() - data.min()) #最⼩-最⼤规范化
(data - an())/data.std() #零-均值规范化
data/10**np.ceil(np.log10(data.abs().max())) #⼩数定标规范化
ppt模板免费下载网站幼儿园
修改为:
print((data - data.min()) / (data.max() - data.min())) #最⼩-最⼤规范化
print((data - an()) / data.std()) #零-均值规范化
print(data / 10 ** np.ceil(np.log10(data.abs().max()))) #⼩数定标规范化
4-3
#-*- coding: utf-8 -*-
#数据规范化
import pandas as pd
datafile = 'F:/⼤⼆下合集/Python数据分析与挖掘/discretization_data.xls' data = pd.read_excel(datafile)
data = data[u'肝⽓郁结证型系数'].copy()
k = 4
d1 = pd.cut(data, k, labels = range(k))
#等频率离散化
w = [1.0*i/k for i in range(k+1)]
w = data.describe(percentiles = w)[4:4+k+1]
w[0] = w[0]*(1-1e-10)
d2 = pd.cut(data, w, labels = range(k))
from sklearn.cluster import KMeans
kmodel = KMeans(n_clusters = k, n_jobs = 4)
kmodel.shape((len(data), 1)))
c = pd.DataFrame(kmodel.cluster_centers_).sort(0)
w = pd.rolling_mean(c, 2).iloc[1:]
w = [0] + list(w[0]) + [data.max()]
d3 = pd.cut(data, w, labels = range(k))
def cluster_plot(d, k):
import matplotlib.pyplot as plt
plt.figure(figsize = (8, 3))
for j in range(0, k):
plt.plot(data[d==j], [j for i in d[d==j]], 'o')
plt.ylim(-0.5, k-0.5)
return plt
cluster_plot(d1, k).show()
cluster_plot(d2, k).show()
cluster_plot(d3, k).show()
代码错误1:
错误原因:(需要改两个地⽅代码)
第①个地⽅
kmodel.shape((len(data), 1)))
修改为:
kmodel.fit(shape((len(data),1)))
第②个地⽅
c = pd.DataFrame(kmodel.cluster_centers_).sort(0)
修改为:
c=pd.DataFrame(kmodel.cluster_centers_).sort_values(0)
解决完第⼀个错误再次运⾏发现错误2:
gulped down
原因:
w = pd.rolling_mean(c, 2).iloc[1:]
修改为:
lling(2).mean().iloc[1:]
4-4
#线损率属性构造
import pandas as pd
inputfile= 'F:/⼤⼆下合集/Python数据分析与挖掘/electricity_data.xls' #供⼊供出电量数据outputfile = 'F:/⼤⼆下合集/Python数据分析与挖掘/electricity_data.xls' #属性构造后数据⽂件data = pd.read_excel(inputfile) #读⼊数据
data[u'线损率'] = (data[u'供⼊电量'] - data[u'供出电量'])/data[u'供⼊电量']
django admin下载文件_excel(outputfile, index = False) #保存结果
这个案例代码没问题
4-5
#-*- coding: utf-8 -*-
#利⽤⼩波分析进⾏特征分析
#参数初始化
inputfile= 'F:/⼤⼆下合集/Python数据分析与挖掘/leleccum.mat' #提取⾃Matlab的信号⽂件from scipy.io import loadmat #mat是MATLAB专⽤格式,需要⽤loadmat读取它
mat = loadmat(inputfile)
signal = mat['leleccum'][0]
import pywt #导⼊PyWavelets
coeffs = pywt.wavedec(signal, 'bior3.7', level = 5)
#返回结果为level+1个数字,第⼀个数组为逼近系数数组,后⾯的依次是细节系数数组代码整体没有错误,但是运⾏没有结果需要在代码最后加⼀⾏
print(coeffs)
4-6
import pandas as pd
inputfile = 'F:/⼤⼆下合集/Python数据分析与挖掘/principal_component.xls' outputfile = 'F:/⼤⼆下合集/Python数据分析与挖掘/1.xls'
data = pd.read_excel(inputfile, header = None)
from sklearn.decomposition import PCA
pca = PCA()
pca.fit(data)
pcaponents_
print("-----------4-6.2-----------------")
pca=PCA(3)
pca.fit(data)
low_ansform(data)
pd.DataFrame(low_d).to_excel(outputfile)
low_d
pca.inverse_transform(low_d)
纯css唯美效果
代码错误:
没有报错,但是在idea中运⾏没有结果,⽽且最后两⾏标红
①将:
pcaponents_
修改为:(即添加print)
print(pcaponents_)
plained_variance_ratio_)
②将:
low_d
pca.inverse_transform(low_d)
修改为:(即添加print)google chrome app
print(low_d)
print(pca.inverse_transform(low_d))
4-7(即预处理函数的两个实例)
import numpy as np
import pandas as pd
print("-----------------unique---------------------")
D=pd.Series([1,1,2,3,5])
D.unique()
np.unique(D)
print("---------------isnull/notnull---------------------")
from sklearn.decomposition import PCA
D=np.random.rand(10,4)
pca=PCA()
pca.fit(D)
pcaponents_        #返回模型的各个特征向量
代码错误:
没有报错,但是在idea中运⾏没有结果,⽽且最后两⾏标红

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。