Numpy入门(下)Datawhale学习笔记—— 大作业

本次练习使用 鸢尾属植物数据集.\iris.data,在这个数据集中,包括了三类不同的鸢尾属植物:Iris Setosa,Iris Versicolour,Iris Virginica。每类收集了50个样本,因此这个数据集一共包含了150个样本。

sepallength:萼片长度
sepalwidth:萼片宽度
petallength:花瓣长度
petalwidth:花瓣宽度

以上四个特征的单位都是厘米(cm)。

在这里插入图片描述

1. 导入鸢尾属植物数据集,保持文本不变。
from sklearn.datasets import load_iris
import numpy as np
import pandas as pd
iris = load_iris()
data = iris.data
pd.DataFrame(data=iris.data, columns=iris.feature_names)

在这里插入图片描述

2. 求出鸢尾属植物萼片长度的平均值、中位数和标准差(第1列,sepallength)
# 求出鸢尾属植物萼片长度的平均值、中位数和标准差(第1列,sepal length)
average = np.mean(data, axis=0)
print(average[0])

medium = np.median(data, axis=0)
print(medium[0])

std = np.std(data, axis=0)
print(std[0])

在这里插入图片描述

3. 创建一种标准化形式的鸢尾属植物萼片长度,其值正好介于0和1之间,这样最小值为0,最大值为1(第1列,sepallength)
# 创建一种标准化形式的鸢尾属植物萼片长度,其值正好介于0和1之间,这样最小值为0,最大值为1(第1列,sepal length)
sepal_min = np.amin(data, axis=0)[0]
# print(sepal_min)
stardardized_sepal = (data[:, 0] - sepal_min )/ average[0]
print(stardardized_sepal)

在这里插入图片描述

4.找到鸢尾属植物萼片长度的第 5 和第 95 百分位数(第1列,sepal length)
# 找到鸢尾属植物萼片长度的第 5 和第 95 百分位数(第1列,sepal length)
decimal = np.percentile(data[:, 0], [5, 95])
print(decimal)

在这里插入图片描述

5. 把iris_data数据集中的20个随机位置修改为np.nan值
# 把 iris_data 数据集中的 20 个随机位置修改为 np.nan 值
rng = np.random.RandomState(20201129)
missing_samples = rng.randint(0, data.shape[0], 20)
missing_features = rng.randint(0, data.shape[1], 20)
data[missing_samples, missing_features] = np.nan
print(np.isnan(data).sum())  # 统计 数据集中缺失值的个数
# 20
6. 在iris_data的sepallength中查找缺失值的个数和位置(第1列)
# 在 iris_data 的 sepallength 中查找缺失值的个数和位置(第1列)
print(np.isnan(data[:, 0]).sum())  # 统计缺失值的数量
print(np.where(np.isnan(data[:, 0])))  # 寻找缺失值的位置

在这里插入图片描述

7. 筛选具有 sepallength(第1列)< 5.0 并且 petallength(第3列)> 1.5 的 iris_data行
# 筛选具有 sepal length(第1列)< 5.0 并且 petal length(第3列)> 1.5 的 iris_data 行
index = np.where((data[:, 0] < 5.0) & (data[:, 2] > 1.5))
print((index))
# a = np.arange(16).reshape((4, 4))
# print(a)
# print(np.where((a[:, 0] > 1) & (a[:, 1] < 10)))

在这里插入图片描述

8. 选择没有任何 nan 值的 iris_data行
# 选择没有任何 nan 值的 iris_data 行
data1 = data[~np.isnan(data).any(axis=1)]
# data[~np.isnan(data).any(axis=1), :]
print(len(data1))
# print(data1)
# 130
9.计算 iris_data 中sepalLength(第1列)和petalLength(第3列)之间的相关系数
# 计算 iris_data 中 sepal Length(第1列)和 petal Length(第3列)之间的相关系数
x = data1[:, 0]
y = data1[:, 2]
z = np.corrcoef(x, y)
print(z)
a = np.dot((x - np.mean(data1[:, 0])), (y - np.mean(data1[:, 2])))
b = np.sqrt(np.dot((x - np.mean(data1[:, 0])), (x - np.mean(data1[:, 0]))))
c = np.sqrt(np.dot((y - np.mean(data1[:, 2])), (y - np.mean(data1[:, 2]))))
print(a / (b * c))

在这里插入图片描述

10. 找出iris_data是否有任何缺失值
# 找出 iris_data 是否有任何缺失值
np.isnan(data1).any()
# False
11. 在numpy数组中将所有出现的nan替换为0
# 在 numpy 数组中将所有出现的 nan 替换为 0
np.nan_to_num(data, copy=False)
12. 找出鸢尾属植物物种中的唯一值和唯一值出现的数量
# 找出鸢尾属植物物种中的唯一值和唯一值出现的数量
np.unique(data, return_counts=True)

在这里插入图片描述

13. 将 iris_data 的花瓣长度(第3列)以形成分类变量的形式显示。定义:Less than 3 --> ‘small’;3-5 --> ‘medium’;’>=5 --> ‘large’
# 将 iris_data 的花瓣长度(第3列)以形成分类变量的形式显示。定义:Less than 3 --> ‘small’;3-5 --> ‘medium’;’>=5 --> ‘large’
x = data[:, 2]
less = np.where(x <= 3)
print(less)
medium = np.where((x > 3) & (x < 5))
print(medium)
large = np.where(x >= 5)
print(large)

在这里插入图片描述

14. 在 iris_data 中创建一个新列,其中 volume 是 (pi x petallength x sepallength ^ 2)/ 3
# 在 iris_data 中创建一个新列,其中 volume 是 (pi x petal length x sepal length ^ 2)/ 3
volume = [(np.pi*data[:, 2]*data[:, 0]**2)/3]
df = pd.DataFrame({'volume': volume[0]})
pd.concat([pd.DataFrame(data), df], axis=1)

在这里插入图片描述

15. 随机抽鸢尾属植物的种类,使得Iris-setosa的数量是Iris-versicolor和Iris-virginica数量的两倍
16. 根据 sepallength 列对数据集进行排序
# 根据 sepal length 列对数据集进行排序
np.sort(data, axis=0)
17. 在鸢尾属植物数据集中找到最常见的花瓣长度值(第3列)
# 在鸢尾属植物数据集中找到最常见的花瓣长度值(第3列)
length = pd.DataFrame(data[:, 2]).mode()
print(length[0][0])
# 1.4
18. 在鸢尾花数据集的 petalwidth(第4列)中查找第一次出现的值大于1.0的位置
# 在鸢尾花数据集的 petal width(第4列)中查找第一次出现的值大于1.0的位置
np.where(data[:, 3] > 1.0)[0][0]
# 50
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值