第1题
在ftp://125.220.71.247/%BC%C6%CB%E3%BB%FA%D1%A7%D4%BA/dingsong/bigdata/1122exp/ 目录下
有一个timu1.csv,里面有三个缺失的数据,请你把这三个缺失的数据的index找出来,求和 作为一行提交的数据
利用拉格朗日插值法,求这三个数值(取缺失数据的最接近的前3个数字和后三个数字)
求出的缺失数字之和的整数部分作为提交的第二行数据
import numpy as np
import pandas as pd
from scipy.interpolate import interp1d
from scipy.interpolate import lagrange
t1=pd.read_csv(r"G:\大数据实验数据库\3.大数据实验数据\timu1.csv",header=None)
ser1=t1[t1[1].isnull()]
number=list(ser1.index)
print("三个缺失的数据的index之和为",sum(number))
t2=[]
t3=[]
sum1=0
for i in number:
x=(list(t1.loc[i-3:i-1,0])+list(t1.loc[i+1:i+3,0]))
y=(list(t1.loc[i-3:i-1,1])+list(t1.loc[i+1:i+3,1]))
lvl=lagrange(x,y)
sum1+=int(lvl(i))
print("缺失数字之和的整数部分为",sum1)
第2题 P165面 实训3
在ftp://125.220.71.247/%BC%C6%CB%E3%BB%FA%D1%A7%D4%BA/dingsong/bigdata/1122exp/ 目录下
有一个model.xls文件 ,完成实训3布置的任务。将第1列 电量趋势下降指标 列采用标准差标准化法(P155面),对该列将标准化后的数据进行求和,保留2位小数。提交到第3行。
import numpy as np
import pandas as pd
t1=pd.read_excel(r"G:\大数据实验数据库\3.大数据实验数据\model.xls")
def stdscaler(data):
data=(data-data.min())/(data.std())
return data
print(type(t1))
d1=stdscaler(t1.iloc[:,0])
stdscaler_sum=sum(d1)
print("最终结果为%0.2f"%stdscaler_sum)
第3题 P166面 2操作题
(1)第1小题
t=[200,300,400,600,1000]
t=pd.DataFrame(t)
#1.最大最小规范化
def minmaxscale(data):
data=(data-data.min())/(data.max()-data.min())
return data
d1=minmaxscale(t)
print("最大最小规范化")
print(d1)
#2.标准差标准化
def stdscaler(data):
data=(data-data.min())/(data.std())
return data
d1=stdscaler(t)
print("标准差标准化")
print(d1)
#3.小数定标标准化
def DecimalScaler(data):
data=data/10**np.ceil(np.log10(data.abs()/data.max()))
return data
d2=DecimalScaler(t)
print("小数定标标准化")
print(d2)
(2) 第2小题
t=[5,10,11,13,15,35,50,55,72,92,204,215]
t=pd.DataFrame(t)
pd.cut(t[0],3)
(3)第3小题
t=[5,10,11,13,15,35,50,55,72,92,204,215,np.nan]
t=pd.DataFrame(t)
def fun(t):
t.drop_duplicates() #去重
for i in range(t.shape[1]):
t1=t[t[i].notnull()] #去空列表
x=np.median(t1[i]) #求中位数
t[t.isnull()]=x #赋值
fun(t)
print(t)
第4题
第4题 在ftp://125.220.71.247/%BC%C6%CB%E3%BB%FA%D1%A7%D4%BA/dingsong/bigdata/1122exp/ 目录下
有一个timu2.csv,求第1列 中位数为x,1/4位数为y(从小到大),1/10位分位数为z,s为你的学号,已知w=x+y+z,t=w+s提交t到第4行
import numpy as np
import pandas as pd
t1=pd.read_csv(r"G:\大数据实验数据库\3.大数据实验数据\timu2.csv",header=None)
t1=t1[1]
s=1750300142
x=np.median(t1) #中位数
y=np.percentile(t1, 25) #25%分位数
z=np.percentile(t1, 10) #10%分位数
w=x+y+z
t=w+s
print("最终和为",t)