专栏文章目录
一、背景解析—数据集介绍
Iris数据集是常用的分类实验数据集,由Fisher, 1936收集整理。Iris也称为鸢尾花卉数据集,是一类多重变量分析的数据集。包含了三类不同鸢尾属植物:Iris Setosa(山鸢尾)、Iris Versicolour(杂色鸢尾),以及Iris Virginica(维吉尼亚鸢尾)。每类包含50个样本,整个数据集150个样本,每个样本包含4个特征分别为:sepal_length(花萼长度),sepal_width(花萼宽度),pepal_length(花瓣长度),pepal_width(花瓣宽度)2。
二、快速进入任务
1.导入模型库
import numpy as np # 导入numpy库并简写为np
import pandas as pd # 导入Pandas库并简写为pd
NumPy (Numerical Python) 3是高性能科学计算和数据分析的基础包。主要功能(N维数组、矢量数学运算)包括:
Pandas3含有使数据分析变得更简单的高级数据结构和操作工具,是基于NumPy构建的。它
2.读取鸢尾植物数据集(iris.csv)为dataframe对象
# 1.导入鸢尾植物数据集(iris.csv),保存为dataframe对象
iris_data = pd.read_csv('iris.csv') # 导入鸢尾植物数据集(iris.csv),保存为dataframe对象
print(iris_data[0:10],'n') # 输出前十行看看效果
# 输出结果:
# sepal_length sepal_width petal_length petal_width species
# 0 5.1 3.5 1.4 0.2 setosa
# 1 4.9 3.0 1.4 0.2 setosa
# 2 4.7 3.2 1.3 0.2 setosa
# 3 4.6 3.1 1.5 0.2 setosa
# 4 5.0 3.6 1.4 0.2 setosa
# 5 5.4 3.9 1.7 0.4 setosa
# 6 4.6 3.4 1.4 0.3 setosa
# 7 5.0 3.4 1.5 0.2 setosa
# 8 4.4 2.9 1.4 0.2 setosa
# 9 4.9 3.1 1.5 0.1 setosa
iris_data = np.loadtxt("iris.csv", dtype=object, delimiter=',', skiprows=1)
sepalLength = iris_data[:, 0].astype(float) # 读取第一列鸢尾属植物萼片长度
petalLength = iris_data[:, 2].astype(float) # 读取第三列鸢尾属植物花瓣长度
3.求出鸢尾属植物萼片长度的平均值、中位数和标准差,并输出
print('鸢尾属植物萼片长度的平均值:', np.mean(sepalLength)) #5.843333333333334
print('鸢尾属植物萼片长度的中位数:', np.median(sepalLength)) #5.8
print('鸢尾属植物萼片长度的标准差:', np.std(sepalLength), 'n') #0.8253012917851409
4.筛选具有sepal_length<5.0并且petal_length>1.5的iris数据行
index = np.where(np.logical_and(petalLength > 1.5, sepalLength < 5.0))
print('具有sepal_length<5.0并且petal_length>1.5的iris数据行:n', iris_data[index], 'n')
5.在4)的基础上,根据sepal_length列对数据集进行排序,新的数据集保存为csv
df = pd.DataFrame(iris_data[index], columns=['sepal_length', 'sepal_width', 'petal_length', 'petal_width', 'species'])
df.sort_values('sepal_length', axis=0, ascending = True, inplace = True, kind ='quicksort', na_position='last')
df.to_csv('out.csv')
print('在3)的基础上,根据sepal_length列对数据集的排序结果:n', df, 'n')
6. 在鸢尾属植物数据集中找到最常见的花瓣长度值,使用print函数输出
vals, counts = np.unique(petalLength, return_counts=True)
print('鸢尾属植物数据集中找到最常见的花瓣长度值:', vals[np.argmax(counts)]) # 1.4
print('鸢尾属植物数据集中找到最常见的花瓣长度值出现次数:', np.amax(counts)) # 13
7.找到鸢尾属植物萼片长度的第5和第95百分位数,使用print函数输出
x = np.percentile(sepalLength, [5, 95])
print('鸢尾属植物萼片长度的第5和第95百分位数:',x) # [4.6 7.255]
三、总结(划重点)
1.部分函数使用说明
DataFrame.sort_values(by,axis = 0,ascending = True,inplace = False,kind =' quicksort ',na_position ='last' )
参数说明
by: str或str的列表,如果axis=0或axis='index',那么by='列名';如果axis=1或axis='columns',那么by='行名'
axis: {0或'index';1或'columns'} 默认为0,即纵向排序,如果为1,则为横向排序
ascending: 布尔型,默认为True,即升序
inplace: 布尔型,是否用排序后的数据代替现有数据
kind: 排序算法, {'quicksort','mergesort','heapsort'},默认'quicksort'
na_position: {'first','last'},默认'last' ,即将缺失值放在最后。
四、附录
1.最终输出效果
sepal_length sepal_width petal_length petal_width species
0 5.1 3.5 1.4 0.2 setosa
1 4.9 3.0 1.4 0.2 setosa
2 4.7 3.2 1.3 0.2 setosa
3 4.6 3.1 1.5 0.2 setosa
4 5.0 3.6 1.4 0.2 setosa
5 5.4 3.9 1.7 0.4 setosa
6 4.6 3.4 1.4 0.3 setosa
7 5.0 3.4 1.5 0.2 setosa
8 4.4 2.9 1.4 0.2 setosa
9 4.9 3.1 1.5 0.1 setosa
鸢尾属植物萼片长度的平均值: 5.843333333333334
鸢尾属植物萼片长度的中位数: 5.8
鸢尾属植物萼片长度的标准差: 0.8253012917851409
具有sepal_length<5.0并且petal_length>1.5的iris数据行:
[['4.8' '3.4' '1.6' '0.2' 'setosa']
['4.8' '3.4' '1.9' '0.2' 'setosa']
['4.7' '3.2' '1.6' '0.2' 'setosa']
['4.8' '3.1' '1.6' '0.2' 'setosa']
['4.9' '2.4' '3.3' '1.0' 'versicolor']
['4.9' '2.5' '4.5' '1.7' 'virginica']]
在3)的基础上,根据sepal_length列对数据集的排序结果:
sepal_length sepal_width petal_length petal_width species
2 4.7 3.2 1.6 0.2 setosa
0 4.8 3.4 1.6 0.2 setosa
1 4.8 3.4 1.9 0.2 setosa
3 4.8 3.1 1.6 0.2 setosa
4 4.9 2.4 3.3 1.0 versicolor
5 4.9 2.5 4.5 1.7 virginica
鸢尾属植物数据集中找到最常见的花瓣长度值: 1.4
鸢尾属植物数据集中找到最常见的花瓣长度值出现次数: 13
鸢尾属植物萼片长度的第5和第95百分位数: [4.6 7.255]
2.完整代码
# -*- coding: utf-8 -*-
'''
Data: 20221020
Author: Pingqian
Description:
'''
import numpy as np # 导入numpy库并简写为np
import pandas as pd # 导入Pandas库并简写为pd
# 1.导入鸢尾植物数据集(iris.csv),保存为dataframe对象
iris_data = pd.read_csv('iris.csv') # 导入鸢尾植物数据集(iris.csv),保存为dataframe对象
print(iris_data[0:10],'n') # 输出前十行看看效果
iris_data = np.loadtxt("iris.csv", dtype=object, delimiter=',', skiprows=1)
sepalLength = iris_data[:, 0].astype(float) # 读取第一列鸢尾属植物萼片长度
petalLength = iris_data[:, 2].astype(float) # 读取第三列鸢尾属植物花瓣长度
# 2.求出鸢尾属植物萼片长度的平均值、中位数和标准差,使用print函数输出
print('鸢尾属植物萼片长度的平均值:', np.mean(sepalLength)) #5.843333333333334
print('鸢尾属植物萼片长度的中位数:', np.median(sepalLength)) #5.8
print('鸢尾属植物萼片长度的标准差:', np.std(sepalLength), 'n') #0.8253012917851409
# 3.筛选具有sepal_length<5.0并且petal_length>1.5的iris数据行
index = np.where(np.logical_and(petalLength > 1.5, sepalLength < 5.0))
print('具有sepal_length<5.0并且petal_length>1.5的iris数据行:n', iris_data[index], 'n')
# 4.在3)的基础上,根据sepal_length列对数据集进行排序,新的数据集保存为csv
df = pd.DataFrame(iris_data[index], columns=['sepal_length', 'sepal_width', 'petal_length', 'petal_width', 'species'])
df.sort_values('sepal_length', axis=0, ascending = True, inplace = True, kind ='quicksort', na_position='last')
df.to_csv('out.csv')
print('在3)的基础上,根据sepal_length列对数据集的排序结果:n', df, 'n')
# 5.在鸢尾属植物数据集中找到最常见的花瓣长度值,使用print函数输出
vals, counts = np.unique(petalLength, return_counts=True)
print('鸢尾属植物数据集中找到最常见的花瓣长度值:', vals[np.argmax(counts)]) # 1.4
print('鸢尾属植物数据集中找到最常见的花瓣长度值出现次数:', np.amax(counts)) # 13
# 6.找到鸢尾属植物萼片长度的第5和第95百分位数,使用print函数输出
x = np.percentile(sepalLength, [5, 95])
print('鸢尾属植物萼片长度的第5和第95百分位数:',x) # [4.6 7.255]
-
D
a
t
a
A
n
a
l
y
s
i
s
&
A
l
g
o
r
i
t
h
m
D
e
s
i
g
n
,
Z
i
w
e
i
L
i
,
S
c
h
o
o
l
o
f
I
n
f
o
r
m
a
t
i
o
n
S
c
i
e
n
c
e
a
n
d
T
e
c
h
n
o
l
o
g
y
,
F
u
d
a
n
.
Data Analysis & Algorithm Design, Ziwei Li, School of Information Science and Technology, Fudan.
DataAnalysis&AlgorithmDesign,ZiweiLi,SchoolofInformationScienceandTechnology,Fudan. ↩︎
-
”
I
R
I
S
,
”
百度百科
.
h
t
t
p
s
:
/
/
b
a
i
k
e
.
b
a
i
d
u
.
c
o
m
/
i
t
e
m
/
I
R
I
S
/
4061453
?
f
r
=
a
l
a
d
d
i
n
(
a
c
c
e
s
s
e
d
O
c
t
.
24
,
2022
)
.
“IRIS,” 百度百科. https://baike.baidu.com/item/IRIS/4061453?fr=aladdin (accessed Oct. 24, 2022).
“IRIS,“百度百科.https://baike.baidu.com/item/IRIS/4061453?fr=aladdin(accessedOct.24,2022). ↩︎
原文地址:https://blog.csdn.net/weixin_45664346/article/details/127494014
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_6923.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!