数据分析-Numpy数值计算

NumPy数值计算

1.编写程序:使用 numpy 数组计算由 5 个坐标:(1,9)、(5,12)、(8,20)、(11,10)、(2,8) 构成的图形的周长。

在这里插入图片描述

v1=np.array([(1,9),(5,12),(8,20),(11,10),(2,8)])
v2=np.array([(2,8),(1,9),(5,12),(8,20),(11,10)])
# 相邻两个点求距离,再求和就好了,首尾两个点也要求一下。
dis1=np.sum(np.sqrt(np.sum(np.square(v1-v2),axis=1)))
print(dis1)
2.编写程序,实现以下功能:
(1)利用下列’iris.data’创建数组 iris_data,实现将该文件内容以数组形式读取并加载到程序中。

文件内容如下图所示:
在这里插入图片描述

(2) 在 iris_data 数据集的前四列中,寻找 20 个随机位插入 np.nan 值。
(3) 在 iris_data 的 第 2 列中查找缺失值的数量和位置。
(4) 过滤出具有第 3 列> 1.5 和 第 1 列 <5.0 所有行出来。
(5) 使用 0 替换数组中 nan(最好将数组复制到一个新对象中处理)。
(6) 针对iris_data 的花瓣长度(第 3 列)数据进行判断,如果花瓣长度为<3 则为’小’,3-5 则为’中’,’> = 5 则为’大’,将此判断结果组成一个文本数组列添加到iris_data中。
(7) 在 iris_data 中创建一个新列newv,该列的值通过公式计算所得,公式如下:(pi *第3列 * 第1列^2)/ 3,并将新数组以txt形式存放在’iris_data.txt’文件中。
(8) 查找在 iris_data数据集的第 4 列花瓣宽度中第一次出现值大于 1.0 的位置。
# 2_1.利用下列'iris.data'创建数组 iris_2d
url='iris.data'
iris_2d=np.genfromtxt(url, delimiter=',', dtype= 'float')
print(iris_2d)
print(iris_2d.shape)     #150,5
# 2_2:在 iris_2d 数据集的前四列中,寻找 20 个随机位插入 np.nan 值
iris_2d[np.random.randint(0,150,size=20),np.random.randint(0,4,size=20)]=np.nan
print(iris_2d)

# 2_3:在 iris_2d 的 第 2 列中查找缺失值的数量和位置
print(np.sum(np.isnan(iris_2d[:,1])))
print(np.where(np.isnan(iris_2d[:,1])))

# 2_4:过滤出具有第 3 列> 1.5 和 第 1 列 <5.0 所有行出来
filter_end = iris_2d[(iris_2d[:,2]> 1.5) & (iris_2d[:,0]<5.0)]
print(filter_end)

# 2_5:使用 0 替换数组中 nan(最好将数组复制到一个新对象中处理)
r1 = iris_2d[::]
r1[np.isnan(r1)] = 0
print(r1)

# 2_6:针对iris_2d 的花瓣长度(第 3 列)数据进行判断,如果花瓣长度为<3 则为’小’,3-5 则为’中’,
# ’> = 5 则为’大’,将此判断结果组成一个文本数组列添加到iris_2d中;
petal_length_bin = np.digitize(iris_2d[:, 2].astype('float'), [0, 3, 5, 10])
label_map = {1: 'small', 2: 'medium', 3: 'large', 4: np.nan}
petal_length_cat = [label_map[x] for x in petal_length_bin]
r = np.array(petal_length_cat).reshape(150,1)
iris_2d= np.hstack((iris_2d,r))
print(iris_2d)

#2_7:在 iris_2d 中创建一个新列newv,该列的值通过公式计算所得,公式如下:(pi *第3列 * 第1列^2)/ 3
#并将新数组以txt形式存放在'iris_2d.txt'文件中。
i_0 = iris_2d[:, 0].astype('float')
i_2 = iris_2d[:, 2].astype('float')
newv = (np.pi * i_2 * ((i_0)**2))/3
newv = newv[:, np.newaxis]
out = np.hstack([iris_2d, newv])
print(out)
np.savetxt('iris_2d.txt',out,fmt = '%s',delimiter=',')

#2_8:查找在 iris 数据集的第 4 列花瓣宽度中第一次出现值大于 1.0 的位置
r1 = np.argwhere(iris_2d[:, 3].astype(float) > 1.0)[0]
print(r1)
3.编写程序,对电话卡"CustomerSurvival.csv"数据进行分析统计。
(1)读取文件(不知道怎么上传附件,文件内容如下图所示)

在这里插入图片描述

(2)分析数据–求extra_time、extra_flow、use_month平均值、最大值、最小值
(3)分析数据–数据占比统计,统计所有额外剩余通话(流量)时长的人数占总人数的比例。
(4)数据数量统计,统计每一类套餐的人数与总人数的占比。
#3:对电话卡"CustomerSurvival.csv"数据进行分析统计。
#3_1读取文件
import numpy as np
data = []
header = []
with open('CustomerSurvival.csv','r') as f:
    for index,line in enumerate(f.readlines()):
        if index ==0:
            header = line[:-1].split(',')
        else:
            data.append(tuple(line[:-1].split(',')))
result = np.array(data,dtype={'names':header,'formats':['i2','U10','f8','f8','f8','i2','i1']})
print(result)
#3_2分析数据--求extra_time、extra_flow、use_month平均值、最大值、最小值
extra_time = result['extra_time']
print(max(extra_time))
print(min(extra_time))
print(sum(extra_time)/len(extra_time))
#3_3分析数据--数据占比统计,统计所有有额外剩余通话(流量)时长的人数占总人数的比例
extra_flow = result['extra_flow']
extra_flow_re = extra_flow[extra_flow>0]
print(len(extra_flow_re)/len(extra_flow))
#3_4分析数据--数据数量统计,统计每一类套餐的人数与总人数的占比
pack_type = result['pack_type']
types = set(pack_type)
for i in types:
    print('套餐{}:'.format(i))
    l = len(pack_type[pack_type==i])
    print(l/len(pack_type))
4.编写程序,读取"iris.csv"数据集中的花萼数据,并对花萼数据(iris_sepal)进行排序输出,同时将相同数据去重,并求出和、均值、标准差、方差、最小值、最大值。

(不知道怎么上传文件,文件内容如下图所示
在这里插入图片描述

iris_sepal = np.loadtxt(r"iris.csv", delimiter=",",skiprows=1,dtype='float32')  #读取文件
print(iris_sepal)
print('花萼长度表为:',len(iris_sepal))    #花萼长度
iris_sepal.sort(axis=0)              #对数据进行排序
print('排序后的花萼长度为:',iris_sepal)
print('去重后的花萼长度为:',len(np.unique(iris_sepal)))#去除重复值
print('花萼长度表的总和为:',np.sum(iris_sepal,axis=0))  #计算数组总和
print('花萼长度表的均值为:',np.mean(iris_sepal,axis=0))  #计算数组均值
print('花萼长度表的标准差为:',np.std(iris_sepal,axis=0))#计算数组标准差
print('花萼长度表的方差为:',np.var(iris_sepal,axis=0))  #计算数组方差
print('花萼长度表的最小值为:',np.min(iris_sepal,axis=0))  #计算最小值
print('花萼长度表的最大值为:',np.max(iris_sepal,axis=0))  #计算最大值

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值