今日任务1:
- 导入鸢尾植物数据集(iris.csv)为dataframe对象
- 求出鸢尾属植物萼片长度的平均值、中位数和标准差,并输出
- 筛选具有sepal_length<5.0并且petal_length>1.5的iris数据行
- 在c)的基础上,根据sepal_length列对数据集进行排序,新的数据集保存为csv
- 在鸢尾属植物数据集中找到最常见的花瓣长度值,使用print函数输出
- 找到鸢尾属植物萼片长度的第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。
import numpy as np # 导入numpy库并简写为np
import pandas as pd # 导入Pandas库并简写为pd
NumPy (Numerical Python) 3是高性能科学计算和数据分析的基础包。主要功能(N维数组、矢量数学运算)包括:
- ndarray,具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组
- 对数组数据进行快速运算的标准数学函数
- 读写磁盘数据的工具及操作内存映射文件的工具
- 线性代数、随机数生成及傅里叶变换功能
- 集成C、C++、Fortran等语言编写的代码的工具
Pandas3含有使数据分析变得更简单的高级数据结构和操作工具,是基于NumPy构建的。它
- 提供Series和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) # 读取第三列鸢尾属植物花瓣长度
print('鸢尾属植物萼片长度的平均值:', np.mean(sepalLength)) #5.843333333333334
print('鸢尾属植物萼片长度的中位数:', np.median(sepalLength)) #5.8
print('鸢尾属植物萼片长度的标准差:', np.std(sepalLength), '\n') #0.8253012917851409
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')
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')
vals, counts = np.unique(petalLength, return_counts=True)
print('鸢尾属植物数据集中找到最常见的花瓣长度值:', vals[np.argmax(counts)]) # 1.4
print('鸢尾属植物数据集中找到最常见的花瓣长度值出现次数:', np.amax(counts)) # 13
x = np.percentile(sepalLength, [5, 95])
print('鸢尾属植物萼片长度的第5和第95百分位数:',x) # [4.6 7.255]
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' ,即将缺失值放在最后。
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]
# -*- 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). ↩︎
《利用Python进行数据分析》. ↩︎ ↩︎