Python大数据复习题
第一章
创建一个Python脚本,命名为test1.py,实现以下功能。
定义一个元组t1=(1,2,‘py’,‘matlab’)和一个空列表list1。
以while循环的方式,用append()函数依次向list1中添加t1中的元素。
定义一个空字典,命名为dict1。
定义一个嵌套列表Li=[‘k’,[3,4,5],(1,2,6),18,50],采用for循环的方式,用setdefault()函数依次将Li中的元素添加到dict1中,其中Li元素对应的键依次为a、b、c、d、e。
答案:
t1=(1,2,'R','py','Matlab')
list1=[]
i = 0
while i<len(t1):
list1.append(t1[i])
i=i+1
print(list1)
dict1={}
Li=['k',[3,4,5],(1,2,6),18,50]
Li2=['a','b','c','d','e']
for index,value in zip(Li2,Li):
dict1.setdefault(index,value)
print(dict1)
创建一个Python脚本,命名为test2.py,实现以下功能。
定义一个函数,用于计算圆柱体的表面积、体积,函数名为comput,输入参数为底半径(r)、高(h),返回值为表面积(S)、体积(V),返回多值的函数,可以用元组来表示。
调用定义的函数comput(),计算底半径(r)=10、高(h)=11的圆柱体表面积和体积,并输出结果。
答案:
def comput(r,h):
s=r23.142+2r3.14h
v=r**23.14h
return s,v
print(comput(10,11))*
第二章
创建一个Python脚本,命名为test1.py,实现以下功能。
定义一个列表list1=[1,2,4,6,7,8],将其转化为数组N1。
定义一个元组tup1=(1,2,3,4,5,6,),将其转化为数组N2。
利用内置函数,定义一个1行6列元素全为1的数组N3。
将N1、N2、N3垂直连接,形成一个3行6列的二维数组N4。
将N4保存为Python二进制数据文件(npy格式)。
答案:
**import numpy as np
list1 = [1,2,3,4,6,8]
N1 = np.array(list1)
tup1 = (1,2,3,4,5,6)
N2 = np.array(tup1)
N3 = [[1]*6 for i in range(1)]
N3 = np.ones([1,6])
N4 = np.vstack((N1,N2,N3))
print(N4)
np.save('N4',N4**)
创建一个Python脚本,命名为test2.py,实现以下功能。
加载练习一中生成的Python二进制数据文件,获得数组N4。
提取N4第1行中的第2个、第4个元素,第3行中的第1个、第5个元素,组成一个新的二维数组N5。
将N5与练习1中的N1进行水平合并,生成一个新的二维数组N6。
答案:
import numpy as np
N4 = np.load('N4.npy')
N5 = np.array([N4[0][1],N4[0][3],N4[2][0],N4[2][4]])
N1 = np.array(N4[0])
print(N5)
print(N1)
N6 = np.hstack((N5,N1)) #数组的水平连接
print(N6)
创建一个Python脚本,命名为test3.py,实现以下功能。
生成两个2×2矩阵,并计算矩阵的乘积。
求矩阵 A=3-1-1**3的特征值和特征向量。
设有矩A=4118*7 *14-2,试对其进行奇异分解。
设有行列式D= 468469568 ,对其转置行列式D**T,并计算D和D**T。
答案:
import numpy as np
arr = np.matrix([[1,4],[1,6]])
arr1 = np.matrix([[2,4],[3,6]])
a = arr*arr1
print("*******************************")**
print(a)
print("*******************************")**
a1,a2 = np.linalg.eig(arr1)
print(a1,a2)
print("*******************************")**
arr2 = np.asmatrix("4.0,11.0,14.0;8.0,7.0,-2.0")
z1,z2,z3 = np.linalg.svd(arr2,full_matrices=False)
print(z1,z2,z3)
print("*******************************")**
arr3 = np.asmatrix("3,4;5,6")
arr4 = arr3.T
print(arr4)
print("**********************************")
q = np.linalg.det(arr3)
print(q)
第三章
1.创建一个Python脚本,命名为test1.py实现以下功能。
(1)读取以下4位同学的成绩,用一个数据框变量pd进行保存,并将成绩保存在一个TXT文件中。
(2)对数据框变量pd进行切片操作,分别获得小红、张明、小江、小李的各科成绩,它们是4个数据框变量,分别记为pd1、pd2、pd3、pd4。
(3)利用数据框中自身的聚合计算方法,计算并获得每个同学各科成绩的平均分,记为M1, M2, M3, M4。
答案:
import pandas as pd
pd = pd.read_table('test1.txt',sep=',')
print(pd)
pd1=pd.iloc[0:3]
pd2=pd.iloc[3:6]
pd3=pd.iloc[6:9]
pd4=pd.iloc[9:12]
print(pd1)
print(pd2)
print(pd3)
print(pd4)
M1=pd1.iloc[0:,2].mean()
M2=pd2.iloc[0:,2].mean()
M3=pd3.iloc[0:,2].mean()
M4=pd4.iloc[0:,2].mean()
print(M1)
print(M2)
print(M3)
print(M4)
2.创建一个Python脚本,命名为test2.py,实现以下功能。
(1)读取以下Excel表格的数据并用个数据框变量df保存。
(2)对df第3列、第4列进行切片,切片后得到一个新的数据框记为df1,并对df1利用自身的方法转化为NumPy数组Nt。
(3)基于df第2列,构造一个逻辑数组 TF,即满足交易日期小于等于2017-01-16且大于等于2017-01-05为真,否则为假。
(4)以逻辑数组 TF为索引,取数组Nt中的第2列交易量数据并求和,记为S。
答案:
import numpy as np
import pandas as pd
df=pd.read_excel('test2.xlsx')
print(df)
df1=df.iloc[:,[2,3]]
Nt=np.array(df1)
print(df1)
print("**********************************")
print(Nt)
print("*********************************")
df2=pd.read_excel('test2.xlsx',dtype=str)
index1=df2['交易日期'].values>='2017-01-05'
index2=df2['交易日期'].values<='2017-01-16'
TF=index1&index2
print(TF)
print("************************************")
S=sum(Nt[TF,1])
print(S)**
第四章
创建一个Python脚本,命名为test1.py,完成以下功能:
- 今有2018年1月1日—15日的猪肉价格和牛肉价格的数据,它们存在于一个Excel 表格中。将其读入 Python中并用一个数据框变量df保存。
- 分别绘制1月1日—10日的猪肉价格和牛肉价格走势图。
- 在同一个figure界面中,用一个2×1得子图分别绘制2018年1月前半个月的猪肉价格和牛肉价格走势图。
答案:
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import font_manager
df=pd.read_excel('data.xlsx')
print(df)
print("******************************")
#第二题(1**)
*x1 = df.iloc[:10,:][["日期"]].values[:,0]
y1 = df.iloc[:10,:][["猪肉价格"]].values[:,0]
plt.rcParams['font.sans-serif']='SimHei'
plt.figure(figsize=(25,10))
plt.subplot(1,2,1)
plt.title("猪肉价格走势图",fontsize=20)
plt.xlabel("日期",fontsize=20)
plt.ylabel("猪肉价格",fontsize=20)
plt.legend
plt.xticks(rotation=45)
plt.plot(x1,y1,'r--')
plt.show()
(2**)
*x2 = df.iloc[:10,:][["日期"]].values[:,0]
y2 = df.iloc[:10,:][["牛肉价格"]].values[:,0]
plt.rcParams['font.sans-serif']='SimHei'
plt.subplot(1,2,1)
plt.title("牛肉价格走势图",fontsize=20)
plt.xlabel("日期",fontsize=20)
plt.ylabel("牛肉价格",fontsize=20)
plt.xticks(rotation=45)
plt.plot(x2,y2,'b--')
plt.show()
第三题(1**)
*x1 = df[['日期']].vallues[:,0]
y1 = df[["猪肉价格"]].values[:,0]
plt.figure(figsize=(25,22))
plt.subplot(2,1,1)
plt.title("猪肉价格走势图",fontsize=20)
plt.xlabel("日期",fontsize=20)
plt.ylabel("猪肉价格",fontsize=20)
plt.xticks(rotation=45)
plt.plot(x1,y1,'r--')
plt.show()
#(2*)*
*x1 = df[['日期']].values[:,0]
y1 = df[["牛肉价格"]].values[:,0]
plt.figure(figsize=(25,22))
plt.subplot(2,1,1)
plt.title("牛肉价格走势图",fontsize=20)
plt.xlabel("日期",fontsize=20)
plt.ylabel("牛肉价格",fontsize=20)
plt.xticks(rotation=45)
plt.plot(x1,y1,'b--')
plt.show()
第五章
- 油气藏的储存量密度Y与生油门限以下平均地温梯度X**1、生油门限以下总有机碳百分比X**2、生油岩体积与沉淀岩体积百分比X**3,砂泥岩厚度百分比X**4、有机转化率X**5有关。
任务如下
(1)利用线性回归分析命令,求出Y与5个因素之间的线性回归关系式系数向量(包括常数项),并在命令窗口输出该系数向量。
(2)求出线性回归关系的判定系数。
(3)今有一个样本X**1
=4,X**2
=1.5,X**3
=10,X**4
=17,X**5
=9,试预测该样本的Y值。
答案:
import numpy as np
import pandas as pd
from sklearn.linear_model import LinearRegression as LR
data=pd.read_excel('1.xlsx')
x=data.iloc[:,1:6].values
y=data.iloc[:,6].values
lr=LR()
lr.fit(x,y)
Slr=lr.score(x,y)
c_x=lr.coef_
c_b=lr.intercept_
x1=np.array([4,1.5,10,17,9])
x1=x1.reshape(1,5)
Y=lr.predict(x1)
r1=x1c_x
Y=r1.sum()+c_x
print('x*回归系数为: ',c_x)
print('回归系数常数项: ',c_b)
print('判定系数: ',Slr)
print('样本预测值: ',Y)**
2.企业到金融商业机构贷款,金融商业机构需要对企业进行评估。评估结果为0和1 两种形式,0表示企业两年后破产,将拒绝贷款;而1表示企业2年后具备还款能力,可以贷款。如表5-9所示,已知前20家企业的3项评价指标值和评估结果,试建立逻辑回归模型、支持向量机模型、神经网络模型对剩余5家企业进行评估。
答案:
**import pandas as pd
data = pd.read_excel('2.xlsx')
x_train=data.iloc[:20,1:4]
y_train=data.iloc[:20,4]
x_test=data.iloc[20:,1:4]
from sklearn.linear_model import LogisticRegression as LR
clf = LR()
clf.fit(x_train,y_train)
rv=clf.score(x_train,y_train)
R=clf.predict(x_test)
print('逻辑回归模型拟合准确率: ',rv)
print('逻辑回归模型评估结果: ',R)
from sklearn import svm
clf = svm.SVC(kernel='rbf')
clf.fit(x_train,y_train)
rv=clf.score(x_train,y_train)
R=clf.predict(x_test)
print('支持向量机模型拟合准确率: ',rv)
print('支持向量机评估结果: ',R)
from sklearn.neural_network import MLPClassifier
clf = MLPClassifier(solver='lbfgs', alpha=1e-5,hidden_layer_sizes=(5,2), random_state=1)
clf.fit(x_train,y_train)
rv=clf.score(x_train,y_train)
R=clf.predict(x_test)
print('神经网络模型拟合准确率: ',rv)
print('神经网络评估结果: ',R)**
3.我国各地区普通高等教育发展状况数据:x1为每百万人口高等院校数,x2为每十万人口高等院校毕业生数,x3为每十万人口高等院校招生数,x4为母十万人口高等院校在校生数,x5为每十万人口高等院校教职工数,x_6为每十万人口高等院校专职教师数, x7为高级职称占专职教师比例,X8为平均每所高等院校的在校生数,x9为国家财政预算内普通高教经费占国内生产总值比重,x10为生均教育经费。任务如下:
(1)对以上指标数据做主成分分析,并提取主成分(累计贡献率达到0.9以上即可)。
(2)基于提取的主成分,对以下30个地区做K-均值聚类分析(K=4),并在命令窗口输出各类别的地区名称。
答案:
**import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
from sklearn.decomposition import PCA
1.**数据读取
**data = pd.read_excel('3.xlsx')
X=data.iloc[:,1:]
pca=PCA(n_components=0.90)
pca.fit(X)
f=pca.transform(X) #**主成分
**tzxl=pca.components_ #**特征向量
**tz=pca.explained_variance_ #**特征值
**gxl=pca.explained_variance_ratio_ #**贡献率
**f=pd.DataFrame(f)
#**标准化
**scaler = StandardScaler()
scaler.fit(f)
XZ=scaler.transform(f)
model = KMeans(n_clusters=4,random_state=0,max_iter=500)
model.fit(XZ)
c=model.labels_**
Fs=pd.Series(c,index=data['地区'])
Fs=Fs.sort_values(ascending=True)
print(Fs)
4.公路运量主要包括公路客运量和公路货运量两个方面。根据研究,某地区的公路运量主要与该地区的人数、机动车数量和公路面积有关表5-11给出了某个地区20年的公路运量相关数据。根据相关部门数据,该地区2010年和2011年的人数分别为73.39万和75.55万,机动车数量分别为3.9635万辆和4.0975万辆,公路面积分别为0.9880万平方千米和1.0268万平方千米。请利用 BP神经网络Q 预测该地区2010年和2011年的公路客运量和公路货运量。
答案:
**import pandas as pd
import numpy as np
from sklearn.neural_network import MLPRegressor as MP
data = pd.read_excel('4.xlsx')
x_train=data.iloc[:,1:4].values
y_train=data.iloc[:,4:6].values
clf = MP(solver='lbfgs',alpha=1e-5,hidden_layer_sizes=8,random_state=1)
clf.fit(x_train,y_train);
a=np.array([[73.39,3.9635,0.9880],[75.55,4.0957,1.0268]])
y1=clf.predict(a)
y1=pd.DataFrame(y1)
s=[2010,2012]
s=pd.DataFrame(s)
yy=pd.concat([s,y1],axis=1)
yy.columns=['时间','公路客流量','公路货运量']
print(yy)**
5.假设有以下数据集,每行代表一个顾客在超市的购买记录。
I1、西红柿、排骨、鸡蛋、毛巾、水果刀、苹果
I2、西红柿、茄子、水果刀、香蕉
I3、鸡蛋、袜子、毛巾、肥皂、苹果、水果刀
I4、西红柿、排骨、茄子、毛巾、水果刀
I5、西红柿、排骨、酸奶、苹果
I6、鸡蛋、茄子、酸奶、肥皂、苹果、香蕉
I7、排骨、鸡蛋、茄子、水果刀、苹果
I8、土豆、鸡蛋、袜子、香蕉、苹果、水果刀
I9、西红柿、排骨、鞋子、土豆、香蕉、苹果
任务如下
- 试利用关联规则支持度和置信度定义挖掘出任意两个商品之间的关联规则。
- 试利用Apriori关联规则挖掘算法函数进行关联规则挖掘。
最小支持度和最小置信度分别为0.2和0.4。
答案:
**import pandas as pd
import numpy as np
#**第一题
**data=pd.read_excel('5.xlsx')
tiem = ['西红柿', '茄子', '水果刀', '香蕉', '袜子', '毛巾', '肥皂', '排骨', '酸奶', '鸡蛋', '鞋子', '土豆']
D = dict()
for t in range(len(tiem)):
z = np.zeros((len(data)))
li = list()
for k in range(len(data.iloc[0,:])):
s = data.iloc[:,k] == tiem[t]
li.extend(list(s[s.values == True].index))
z[li] = 1
D.setdefault(tiem[t],z)
Data = pd.DataFrame(D)
print(Data)
**第二题
c = list(Data.columns)
c0 = 0.4
s0 = 0.2
list1 = []
list2 = []
list3 = []
for k in range(len(c)):
for q in range(len(c)):
if c[k]!=c[q]:
c1 = Data[c[k]]
c2 = Data[c[q]]
l1 = c1.values == 1
l2 = c2.values == 1
t12 = np.zeros((len(c1)))
t1 = np.zeros((len(c1)))
t12[l1 & l2] =1
t1[l1] = 1
sp = sum(t12)/len(c1)
co = sum(t12)/sum(t1)
if co >= c0 and sp >= s0:
list1.append(c[k]+'--'+c[q])
list2.append(sp)
list3.append(co)
R = {'rule':list1,'support':list2,'confidence':list3}
R = pd.DataFrame(R)
R.to_excel('导出数据.xlsx')
版权归原作者 Juzzi橘子 所有, 如有侵权,请联系我们删除。