目录
将列petal_length的第10到19行设置为缺失值,并且将iris前三行设置为缺失值
将iris索引设置为iris+序号的形式,例如iris0,iris1,iris2
读取数据iris.csv
,命名为iris
import pandas as pd
iris = pd.read_csv(r'C:\Users\75559\Python\expt1\iris.csv')
iris
在这段代码中,iris
是一个变量名,它被用来存储通过 pandas 库读取的 CSV 文件的内容。pd.read_csv(r'C:\Users\75559\Python\expt1\iris.csv')
这行代码是用来从指定的文件路径(C:\Users\75559\Python\expt1\iris.csv
)读取 CSV 文件,并将其加载到一个 DataFrame 对象中。CSV 文件是一种简单的文本数据格式,常用于存储表格数据。
iris
这个名字通常与鸢尾花数据集(Iris dataset)联系在一起,这是一个经典的多类分类问题数据集。这个数据集包含了 150 朵鸢尾花的信息,每朵花有四个特征:花萼长度(sepal length)、花萼宽度(sepal width)、花瓣长度(petal length)和花瓣宽度(petal width)。数据集还包含了每个鸢尾花的种类(species),分为三种:山鸢尾(Setosa)、变色鸢尾(Versicolor)和维吉尼亚鸢尾(Virginica)。
在 Python 中,通过使用 iris
变量名,你可以方便地引用这个数据集,并进行后续的数据分析、可视化或机器学习建模等工作。
iris
这一行代码没有输出任何内容,因为它是一个赋值语句,而不是一个打印语句。如果你想查看 iris
DataFrame 的内容,你需要使用 print(iris)
或者 iris.head()
等方法来输出数据集的前几行。
数据框中有缺失值吗?
iris.loc[iris.isna().sum(axis=1)>0,:]
-
iris
: 这是一个已经加载到 DataFrame 对象中的数据集,通常是从 CSV 文件中读取的。 -
iris.isna().sum(axis=1)
: 这部分代码首先检查iris
中的每个值是否为缺失值(NaN)。isna()
函数会返回一个布尔值矩阵,其中 True 表示对应的元素是缺失值。然后,sum(axis=1)
会对每一行(即每个鸢尾花实例)进行求和,返回每行中缺失值的个数。 -
iris.loc[...]
: 这是 pandas 中用于基于条件选择 DataFrame 中的行的方法。iris.loc[iris.isna().sum(axis=1)>0,:]
中的条件iris.isna().sum(axis=1)>0
意味着选择那些缺失值个数大于 0 的行。 -
:
: 这表示选择所有列。所以,iris.loc[iris.isna().sum(axis=1)>0,:]
会选择iris
DataFrame 中所有包含至少一个缺失值的行,以及所有的列。
综上所述,iris.loc[iris.isna().sum(axis=1)>0,:]
这段代码会选择 iris
DataFrame 中所有包含至少一个缺失值的行,并返回这些行的所有列的数据。这通常用于数据清洗过程中,以便识别和处理缺失值。
统计总共有多少种类型的纸鸢花(class
)?
print(iris['class'].nunique())
这段代码是用来计算 iris
DataFrame 中 ‘class’ 列的唯一类别数量。
具体来说:
-
iris
: 这是一个已经加载到 DataFrame 对象中的数据集,通常是从 CSV 文件中读取的。 -
iris['class']
: 这表示我们关注iris
DataFrame 中的 ‘class’ 列,这一列通常包含了鸢尾花的种类信息。 -
.nunique()
: 这是 pandas 中用于计算某一列中唯一值(distinct values)数量的方法。对于分类数据,这通常用来确定有多少不同的类别。
print(iris['class'].nunique())
这段代码会打印出 iris
DataFrame 中 ‘class’ 列的唯一类别数量。这对于了解数据集中类别的多样性非常有用,也是数据预处理和机器学习建模中的一个重要步骤。例如,如果 iris['class'].nunique()
返回 3,这意味着有 3 种不同的鸢尾花类别(Setosa、Versicolor 和 Virginica)。
将列petal_length
的第10到19行设置为缺失值,并且将iris
前三行设置为缺失值
iris.iloc[9:19, 2] = None
iris.iloc[:3, :] = None
这两行代码分别用于在 iris
DataFrame 中设置特定的值为学生数组(None 在 Python 中通常表示 NoneType 类型,但在 pandas 中它代表 NaN,即 Not a Number,表示缺失值)。
-
iris.iloc[9:19, 2] = None
这行代码选择了
iris
DataFrame 中第 9 到第 19 行(包含第 9 行和第 19 行),以及第 2 列,并将这些位置的值设置为 None。这意味着这些位置原来的值将被替换为 NaN,表示缺失值。 -
iris.iloc[:3, :] = None
这行代码选择了
iris
DataFrame 的前 3 行(包含第 1 行、第 2 行和第 3 行),以及所有列,并将这些行的所有值设置为 None。同样,这意味着这些位置原来的值将被替换为 NaN,表示缺失值。
这些操作通常用于数据清洗过程中,以便在后续分析中处理缺失值。需要注意的是,一旦设置了 NaN,就可以使用各种方法来填充或删除这些缺失值,例如使用 fillna()
或 dropna()
函数。
用bfill
方式替换petal_length
列的缺失值
iris['petal_length'].fillna(method='bfill')
这行代码是使用 pandas 库中的 fillna()
方法来处理 iris
DataFrame 中 ‘petal_length’ 列的缺失值。
具体来说:
-
iris
: 这是一个已经加载到 DataFrame 对象中的数据集,通常是从 CSV 文件中读取的。 -
iris['petal_length']
: 这表示我们关注iris
DataFrame 中的 ‘petal_length’ 列,这一列通常包含了鸢尾花花瓣的长度信息。 -
.fillna(method='bfill')
: 这是iris['petal_length']
列的fillna()
方法,用于填充缺失值。method='bfill'
指定了填充缺失值的方法为 “backfill” 或 “bfill”,这是一种向前填充缺失值的方法,即用前一个非缺失值来填充缺失值。
综上所述,iris['petal_length'].fillna(method='bfill')
这段代码会用 iris['petal_length']
列中前一个非缺失值来填充该列中的缺失值。这是一种处理缺失数据的方法,可以避免缺失值对数据分析结果的影响。
删除iris
有缺失值的行
print(iris.dropna(axis=0))
这行代码用于删除 iris
DataFrame 中包含缺失值的所有行。
具体来说:
-
iris
: 这是一个已经加载到 DataFrame 对象中的数据集,通常是从 CSV 文件中读取的。 -
.dropna(axis=0)
: 这是iris
DataFrame 的dropna()
方法,用于删除包含缺失值的数据行。参数axis=0
表示沿着行轴进行操作,即删除含有缺失值的行。
综上所述,print(iris.dropna(axis=0))
这段代码会打印出删除含有缺失值的所有行之后的结果。这意味着任何包含 NaN(Not a Number,即缺失值)的行将被从 DataFrame 中移除。这是一种常见的数据预处理步骤,旨在清理数据集,消除缺失值对分析的影响。
将iris
索引设置为iris+序号的形式,例如iris0,iris1,iris2
iris.index = ["iris"+str(i) for i in iris.index]
print(iris)
这行代码是将 iris
DataFrame 的索引重新赋值为一个新列表,新列表中的每个元素都是 “iris” 加上原来索引的数字。
具体来说:
-
iris
: 这是一个已经加载到 DataFrame 对象中的数据集,通常是从 CSV 文件中读取的。 -
iris.index
: 这是iris
DataFrame 的索引。在默认情况下,索引可能是由整数组成的序列,例如[0, 1, 2, ...]
。 -
["iris"+str(i) for i in iris.index]
: 这是一个列表推导式,它遍历iris.index
中的每个元素(假设它们是整数),将 “iris” 字符串与每个整数的字符串表示形式相连接,创建一个新的字符串列表。例如,如果索引是[0, 1, 2]
,那么列表推导式将产生["iris0", "iris1", "iris2"]
。 -
iris.index = ...
: 这行代码将新的字符串列表赋值给iris
DataFrame 的索引。这样,iris
DataFrame 的索引就被更新为新的字符串形式,例如["iris0", "iris1", "iris2", ...]
。 -
print(iris)
: 这行代码打印出更新索引后的iris
DataFrame 的内容。
综上所述,这行代码的作用是将 iris
DataFrame 的索引更改为以 “iris” 开头,后面跟着一个数字的形式,例如 "iris0", "iris1", "iris2", ...
。