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

专栏文章目录

一、数据分析(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维数组矢量数学运算)包括:

  • ndarray,具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组
  • 对数组数据进行快速运算的标准数学函数
  • 读写磁盘数据的工具及操作内存映射文件的工具
  • 线性代数、随机数生成及傅里叶变换功能
  • 集成C、C++、Fortran等语言编写的代码的工具

  Pandas3含有使数据分析变得更简单的高级数据结构和操作工具,是基于NumPy构建的。它

  • 提供SeriesDataFrame数据结构
  • 数据分析操作,包括数据清洗、预处理、排序、统计等。

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]

  1. 数据分析(Python)入门—鸢尾植物数据集处理 ↩︎

  2. 数据分析(Python)入门—鸢尾植物数据集处理 ↩︎

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

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
心中带点小风骚的头像心中带点小风骚普通用户
上一篇 2023年3月29日
下一篇 2023年3月29日

相关推荐