实验4.1:Numpy数据分析
题目描述:利用numpy库完成2项编程任务。实验效果如图1所示。
(1)创建一个一维数组arr1,存放10个[10, 99]随机整数,计算其最大值,最小值和平均值。
(2)创建一个二维数组arr2,存放5行5列共25个[10, 99]随机整数,计算其最大值,最小值和平均值。
提示:方法1:使用numpy.array( )函数创建,通过列表生成数组对象。
方法2:使用numpy.random.randint(10,99,size=[1,10])创建随机整数数组,max、min等参见9-1讲P18的元素计算。(注:方法2可以见证Numpy的显著优势)
图1
import numpy as np
import random
#1
list1 = []
for i in range(10):
n = int(random.uniform(10,100))
if n in list1:
pass
else:
list1.append(n)
#print(list1)
arr1 = np.array(list1)
print(arr1)
print("最大值={0} 最小值={1} 平均值={2}".format(arr1.max(),arr1.min(),arr1.sum()/10))
#2
list2 = []
for i in range(5):
temp1 = []
for j in range(5):
temp = int(random.uniform(10,100))
temp1.append(temp)
list2.append(temp1)
arr2 = np.array(list2)
print(arr2)
print("最大值={0} 最小值={1} 平均值={2}".format(arr2.max(),arr2.min(),arr2.sum()/25))
实验4.2:Pandas数据分析
题目描述:利用pandas库完成2项编程任务。
(1)利用列表、元组和字典分别创建3个一级索引的数据结构Series。实验效果如图2-1所示。
(2)利用字典和Series分别创建2个二级索引的数据结构DataFrame。实验效果如图2-2所示。
提示:参见9-2讲P3和P6使用pandas.Series( )和pandas.DataFrame( )分别创建一维Series和二维DataFrame数据结构.
图2-1
图2-2
import pandas
from pandas import Series
from pandas import DataFrame
#1
print("通过列表创建第一个数据结构:")
series_list1 = Series([98,88,78,68],index=["No1","No2","No3","No4"])
print(series_list1)
print("通过元组创建第二个数据结构:")
series_tuple1 = Series(('c++程序设计','Python程序设计','Java程序设计','物联网工程'),
index=["CId0001","CId0002","CId0003","CId0004"])
print(series_tuple1)
print("通过字典创建第三个数据结构:")
series_dict1 = Series({'202101':['张三',18,'男','计科2002'],
'202102':['李四',18,'男','计科2002'],
'202103':['萌萌',18,'男','计科2002'],
'202104':['王五',18,'女','计科2002']})
print(series_dict1)
#2
print("创建2个二级索引的DataFrame数据结构:")
obj1 = {
"学号":["201801","201802","201803","201804","201805"],
"姓名":["张珊","李斯","王武","赵柳","周琪"],
"年龄":["18","19","19","18","18"],
"性别":["女","男","男","女","女"],
"班级":["计算机1801","计算机1802","计算机1803","计算机1804","计算机1801"]
}
series_dict1 = Series(["2001002",'张珊',38,'女','副教授'],
index=["学号","姓名","年龄","性别","职称"])
series_dict2 = Series(["2001021",'李斯',39,'男','副教授'],
index=["学号","姓名","年龄","性别","职称"])
series_dict3 = Series(["2001023",'王武',39,'男','副教授'],
index=["学号","姓名","年龄","性别","职称"])
series_dict4 = Series(["2001024","赵柳",38,'女','副教授'],
index=["学号","姓名","年龄","性别","职称"])
series_dict5 = Series(["2001025","周琪",38,'女','副教授'],
index=["学号","姓名","年龄","性别","职称"])
df_obj1 = DataFrame(obj1)
df_obj2 = DataFrame([series_dict1,series_dict2,series_dict3,series_dict4,series_dict5])
print("通过字典创建第一个DataFrame数据结构:")
print(df_obj1)
print("通过Series创建第二个DataFrame数据结构:")
print(df_obj2)
实验4.3:Scipy数据分析
题目描述:利用scipy库完成编程任务。
求解线性方程组。如公式(1)所示。 (1)
提示:参见9-3讲P3使用scipy.mat( )和scipy.linalg.solve( ) 求解线性方程组.
import numpy as np
from scipy import linalg
import scipy
#求解线性方程式
a = scipy.mat('[5 2 3;2 3 -4;3 -4 -5]')
b = scipy.mat('[6;7;8]')
solve = scipy.linalg.solve(a, b)
print(solve)