本文介绍: 基于Python鸢尾植物数据处理,初步使用NumPy与Pandas库对Iris数据集进行简单操作

专栏文章目录

一、数据分析(Python入门——鸢尾植物数据集处理



今日任务1

  1. 导入鸢尾植物数据集(iris.csv)为dataframe对象
  2. 求出鸢尾属植物萼片长度的平均值、中位数和标准差,并输出
  3. 筛选具有sepal_length<5.0并且petal_length>1.5的iris数据
  4. c)的基础上,根据sepal_length列对数据集进行排序,新的数据保存csv
  5. 鸢尾属植物数据集中找到最常见的花瓣长度值,使用print函数输出
  6. 找到鸢尾属植物萼片长度的第5和第95百分位数,使用print函数输出

一、背景解析—数据集介绍

  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: strstr列表,如果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]

  1. D

    a

    t

    a

    A

    n

    a

    l

    y

    s

    i

    s

    &amp;

    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 &amp; Algorithm Design, Ziwei Li, School of Information Science and Technology, Fudan.

    DataAnalysis&amp;AlgorithmDesign,ZiweiLi,SchoolofInformationScienceandTechnology,Fudan. ↩︎

  2. 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). ↩︎

  3. 《利用Python行数据分析》. ↩︎ ↩︎

原文地址:https://blog.csdn.net/weixin_45664346/article/details/127494014

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_6923.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注