task5

import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
iris=load_iris()

iris_data=iris.data
target=iris.target

iris_data
iris_target=load_iris.target

鸢尾属植物数据集处理.


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O9C6hQXc-1606835684849)(https://img.shields.io/badge/python-3.8-blue)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VSuJLkbX-1606835684855)(https://img.shields.io/badge/numpy-1.18.5-pink)]

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

导入鸢尾属植物数据集,保持文本不变

所用知识,numpy的输入与输出

import numpy as np
with open('Iris数据集/iris.csv',encoding = 'utf-8') as f:
    data = np.loadtxt(f,str,delimiter = ",")
data = data[:,1:]

求出鸢尾属植物萼片长度的平均值、中位数和标准差(第1列,sepallength)

所用知识,统计相关

print(data[:,0])
# ['"Sepal.Length"' '5.1' '4.9' '4.7' '4.6' '5.0' '5.4' '4.6' '5.0' '4.4'
#  '4.9' '5.4' '4.8' '4.8' '4.3' '5.8' '5.7' '5.4' '5.1' '5.7' '5.1' '5.4'
#  '5.1' '4.6' '5.1' '4.8' '5.0' '5.0' '5.2' '5.2' '4.7' '4.8' '5.4' '5.2'
#  '5.5' '4.9' '5.0' '5.5' '4.9' '4.4' '5.1' '5.0' '4.5' '4.4' '5.0' '5.1'
#  '4.8' '5.1' '4.6' '5.3' '5.0' '7.0' '6.4' '6.9' '5.5' '6.5' '5.7' '6.3'
#  '4.9' '6.6' '5.2' '5.0' '5.9' '6.0' '6.1' '5.6' '6.7' '5.6' '5.8' '6.2'
#  '5.6' '5.9' '6.1' '6.3' '6.1' '6.4' '6.6' '6.8' '6.7' '6.0' '5.7' '5.5'
#  '5.5' '5.8' '6.0' '5.4' '6.0' '6.7' '6.3' '5.6' '5.5' '5.5' '6.1' '5.8'
#  '5.0' '5.6' '5.7' '5.7' '6.2' '5.1' '5.7' '6.3' '5.8' '7.1' '6.3' '6.5'
#  '7.6' '4.9' '7.3' '6.7' '7.2' '6.5' '6.4' '6.8' '5.7' '5.8' '6.4' '6.5'
#  '7.7' '7.7' '6.0' '6.9' '5.6' '7.7' '6.3' '6.7' '7.2' '6.2' '6.1' '6.4'
#  '7.2' '7.4' '7.9' '6.4' '6.3' '6.1' '7.7' '6.3' '6.4' '6.0' '6.9' '6.7'
#  '6.9' '5.8' '6.8' '6.7' '6.7' '6.3' '6.5' '6.2' '5.9']

a = data[1:,0].astype(float)
print(a.mean()) # 5.843333333333334
print(np.median(a)) # 5.8
print(np.std(a)) # 0.8253012917851409

创建一种标准化形式的鸢尾属植物萼片长度,其值正好介于0和1之间,这样最小值为0,最大值为1(第1列,sepallength)

所用知识,统计相关

print((a - np.min(a)) / (np.max(a)-np.min(a)))
# [0.22222222 0.16666667 0.11111111 0.08333333 0.19444444 0.30555556
#  0.08333333 0.19444444 0.02777778 0.16666667 0.30555556 0.13888889
#  0.13888889 0.         0.41666667 0.38888889 0.30555556 0.22222222
#  0.38888889 0.22222222 0.30555556 0.22222222 0.08333333 0.22222222
#  0.13888889 0.19444444 0.19444444 0.25       0.25       0.11111111
#  0.13888889 0.30555556 0.25       0.33333333 0.16666667 0.19444444
#  0.33333333 0.16666667 0.02777778 0.22222222 0.19444444 0.05555556
#  0.02777778 0.19444444 0.22222222 0.13888889 0.22222222 0.08333333
#  0.27777778 0.19444444 0.75       0.58333333 0.72222222 0.33333333
#  0.61111111 0.38888889 0.55555556 0.16666667 0.63888889 0.25
#  0.19444444 0.44444444 0.47222222 0.5        0.36111111 0.66666667
#  0.36111111 0.41666667 0.52777778 0.36111111 0.44444444 0.5
#  0.55555556 0.5        0.58333333 0.63888889 0.69444444 0.66666667
#  0.47222222 0.38888889 0.33333333 0.33333333 0.41666667 0.47222222
#  0.30555556 0.47222222 0.66666667 0.55555556 0.36111111 0.33333333
#  0.33333333 0.5        0.41666667 0.19444444 0.36111111 0.38888889
#  0.38888889 0.52777778 0.22222222 0.38888889 0.55555556 0.41666667
#  0.77777778 0.55555556 0.61111111 0.91666667 0.16666667 0.83333333
#  0.66666667 0.80555556 0.61111111 0.58333333 0.69444444 0.38888889
#  0.41666667 0.58333333 0.61111111 0.94444444 0.94444444 0.47222222
#  0.72222222 0.36111111 0.94444444 0.55555556 0.66666667 0.80555556
#  0.52777778 0.5        0.58333333 0.80555556 0.86111111 1.
#  0.58333333 0.55555556 0.5        0.94444444 0.55555556 0.58333333
#  0.47222222 0.72222222 0.66666667 0.72222222 0.41666667 0.69444444
#  0.66666667 0.66666667 0.55555556 0.61111111 0.52777778 0.44444444]

找到鸢尾属植物萼片长度的第5和第95百分位数(第1列,sepallength)

所用知识,统计相关

print(np.percentile(a, [5, 95])) # [4.6   7.255]

把iris_data数据集中的20个随机位置修改为np.nan值

所用知识,随机抽用

site = np.random.randint(low=5,high=len(data) * 5,size=20)
x = (site / 5).astype(int)
y = site % 5

print(x) # [137   4  81  13  51 123 134  56  54  31  29  64  74  24 134 110  98  73 145  23]
print(y) #[2 3 1 2 1 1 3 1 1 3 2 2 1 4 2 4 1 1 3 3]

data[x,y] = np.nan
#截取nan化的一段
print(data)
# ['5.1', '3.5', '1.4', '0.2', '"setosa"'],
# ['4.9', '3', '1.4', '0.2', '"setosa"'],
# ['4.7', '3.2', '1.3', '0.2', '"setosa"'],
# ['4.6', '3.1', '1.5', 'nan', '"setosa"'],
# ['5', '3.6', '1.4', '0.2', '"setosa"'],
# ['5.4', '3.9', '1.7', '0.4', '"setosa"'],
# ['4.6', '3.4', '1.4', '0.3', '"setosa"'],
# ['5', '3.4', '1.5', '0.2', '"setosa"'],
# ['4.4', '2.9', '1.4', '0.2', '"setosa"'],
# ['4.9', '3.1', '1.5', '0.1', '"setosa"'],
# ['5.4', '3.7', '1.5', '0.2', '"setosa"'],
# ['4.8', '3.4', '1.6', '0.2', '"setosa"'],
# ['4.8', '3', 'nan', '0.1', '"setosa"'],

在iris_data的sepallength中查找缺失值的个数和位置(第1列)

所用知识:逻辑函数与搜索

a = data[1:,0].astype(float) # 4
np.isnan(a).sum()

筛选具有 sepallength(第1列)< 5.0 并且 petallength(第3列)> 1.5 的 iris_data行

所用知识:搜索

a = data[1:,0:4].astype(float)
np.where((a[:,0]<5) & (a[:,2]>1.5))
# (array([ 11,  24,  29,  30,  57, 106], dtype=int64),)

选择没有任何 nan 值的 iris_data行。

所用知识:逻辑函数、搜索

a = data[1:,:4].astype(float)
index = np.where(np.isnan(a))
np.delete(a,index[0],axis=0)

计算 iris_data 中sepalLength(第1列)和petalLength(第3列)之间的相关系数。

a = data[1:,:4].astype(float)
print(np.corrcoef(a[:,0], a[:,2]))
# array([[1.        , 0.87175378],
#        [0.87175378, 1.        ]])

Q10判断空值

np.isnan(iris_data).any()

Q11填充0

iris_data[np.isnan(iris_data)]=0

Q12唯一值数量

np.unique(iris_data)
array([0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 1. , 1.1, 1.2, 1.3, 1.4, 1.5, 1.6,
1.7, 1.8, 1.9, 2. , 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9,
3. , 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 4. , 4.1, 4.2,
4.3, 4.4, 4.5, 4.6, 4.7, 4.8, 4.9, 5. , 5.1, 5.2, 5.3, 5.4, 5.5,
5.6, 5.7, 5.8, 5.9, 6. , 6.1, 6.2, 6.3, 6.4, 6.5, 6.6, 6.7, 6.8,
6.9, 7. , 7.1, 7.2, 7.3, 7.4, 7.6, 7.7, 7.9])

Q13唯一值数量

df=pd.DataFrame(iris_data[:,2],columns=[‘f3’])
df[‘str’]=‘small’

df.loc[(df[‘f3’]>=3)&(df[‘f3’]<=5),‘str’]=‘medium’
df.loc[df[‘f3’]>5,‘str’]=‘large’
df

Q14创建一个新列

volume = np.pi*iris_data[:,2]*iris_data[:,1]**2/3
np.c_[iris_data,volume]
volume

Q15随机抽鸢尾属植物的种类,使得Iris-setosa的数量是Iris-versicolor和Iris-virginica数量的两倍

species = np.array([‘Iris‐setosa’, ‘Iris‐versicolor’, ‘Iris‐virginica’])
species_out = np.random.choice(species, 10000, p=[0.5, 0.25, 0.25])
print(np.unique(species_out, return_counts=True))

Q16根据 sepallength 列对数据集进行排序

sepallength = iris_data[:,0]
index = np.argsort(sepallength)
iris_data[index][0:10]

Q17在鸢尾属植物数据集中找到最常见的花瓣长度值(第3列)

petallength = iris_data[:, 2]
vals, counts = np.unique(petallength, return_counts=True)
print(vals[np.argmax(counts)])
print(np.amax(counts))

Q18在鸢尾花数据集的 petalwidth(第4列)中查找第一次出现的值大于1.0的位置

petalWidth = iris_data[:, 3]
index = np.where(petalWidth > 1.0)
print(index)
print(index[0][0])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值