1)数据源:Iris也称鸢尾花卉数据集,是一类多重变量分析的数据集。它共有4个属性列和一个品种类别列:sepal length(萼片长度)、sepal width(萼片宽度)、petal length(花瓣长度)、petal width (花瓣宽度),单位都是厘米。3个品种类别(Setosa(山鸢尾),Versicolour(杂色鸢尾),Virginica(维吉尼亚鸢尾)),样本数量150个,每类50个。 2)基于上述数据集用python进行如下的数据分析: ①以花萼长度、花萼宽度、花瓣长度、花瓣宽度、类别设置为DataFrame对象的列索引,并读取数据集的前10行。 ②显示数据集描述性统计分析的结果(转置后的结果) ③按品种划分,每个品种的花萼的长度和宽度的最大值分别是多少? ④按品种划分,每个品种的花瓣的长度和宽度的最小值分别是多少? ⑤把花瓣宽度小于0.5厘米且花萼宽度小于3.1厘米的鸢尾花其花萼长度的值都增加0.1,并读取数据集的前10行
时间: 2023-06-14 07:02:56 浏览: 123
下面是代码实现:
```python
import pandas as pd
# 读取数据集
iris = pd.read_csv('iris.csv')
# 将花萼长度、花萼宽度、花瓣长度、花瓣宽度、类别设置为DataFrame对象的列索引,并读取数据集的前10行
iris.columns = ['sepal_length', 'sepal_width', 'petal_length', 'petal_width', 'species']
print(iris.head(10))
# 显示数据集描述性统计分析的结果
iris_desc_transposed = iris.describe().T
print(iris_desc_transposed)
# 按品种划分,每个品种的花萼的长度和宽度的最大值分别是多少?
sepal_max = iris.groupby('species')[['sepal_length', 'sepal_width']].max()
print(sepal_max)
# 按品种划分,每个品种的花瓣的长度和宽度的最小值分别是多少?
petal_min = iris.groupby('species')[['petal_length', 'petal_width']].min()
print(petal_min)
# 把花瓣宽度小于0.5厘米且花萼宽度小于3.1厘米的鸢尾花其花萼长度的值都增加0.1,并读取数据集的前10行
iris.loc[(iris['petal_width'] < 0.5) & (iris['sepal_width'] < 3.1), 'sepal_length'] += 0.1
print(iris.head(10))
```
解释一下上面的代码。
首先,我们使用 `pd.read_csv` 读取数据集。然后,我们将花萼长度、花萼宽度、花瓣长度、花瓣宽度、类别设置为DataFrame对象的列索引,并读取数据集的前10行,使用 `print(iris.head(10))` 输出结果。
接下来,我们使用 `describe()` 方法对数据集进行描述性统计分析,并使用 `.T` 转置结果,使用 `print(iris_desc_transposed)` 输出结果。
然后,我们按品种划分数据集,使用 `groupby()` 方法对品种进行分组,然后使用 `max()` 和 `min()` 方法计算每个品种的花萼和花瓣的长度和宽度的最大值和最小值,分别存储在 `sepal_max` 和 `petal_min` 变量中,并使用 `print(sepal_max)` 和 `print(petal_min)` 输出结果。
最后,我们使用 `loc` 方法选择符合条件的数据行,并将其中的花萼长度加上0.1。使用 `print(iris.head(10))` 输出修改后的结果。
阅读全文