python - pyplot - iloc 在这段代码片段中做了什么
问题描述
是的,我阅读了 pyplot 网站上的文档。不,这仍然没有意义。
下面的代码片段有什么作用?我认为它正在读取数据集的前 100 行,但不确定它对列的作用:
# select setosa and versicolor
y = df.iloc[0:100, 4].values
y = np.where(y == 'Iris-setosa', -1, 1)
# extract sepal length and petal length
X = df.iloc[0:100, [0, 2]].values
# plot data
plt.scatter(X[:50, 0], X[:50, 1],
color='red', marker='o', label='setosa')
plt.scatter(X[50:100, 0], X[50:100, 1],
color='blue', marker='x', label='versicolor')
plt.xlabel('sepal length [cm]')
plt.ylabel('petal length [cm]')
plt.legend(loc='upper left')
解决方案
该行y = df.iloc[0:100, 4].values
占用前 100 行(如您所知)和第 5(索引 4)列。最后.values
是将其转换为 numpy 数组,而不是 pandas 系列。
该行X = df.iloc[0:100, [0, 2]].values
再次采用前 100 行以及第一和第三(索引 0 和 2)列,并再次将其转换为数组。这个给了我们一个 100x2 的数组,因为我们选择了两列,我认为这就是为什么作者使用大写的变量名,而不是第一步的数组X
的小写。y
100x1
第三部分,这一行:
plt.scatter(X[:50, 0], X[:50, 1],
color='red', marker='o', label='setosa')
用 的前 50 行绘制散点图X
,其中第一列是水平位置,第二列是垂直位置。下一行:
plt.scatter(X[50:100, 0], X[50:100, 1],
color='blue', marker='x', label='versicolor')
对 .的下半部分(第 50-100 行)做同样的事情X
。如果您正在运行此代码并且没有发生任何事情,请尝试plt.show()
在最后添加。
推荐阅读
- javascript - jquery post方法需要的Javascript函数
- python - 如何在 Pandas DataFrame 中生成缺失值的列列表
- r - 如何增加ggplot R中的轴标签文本大小?
- go - 如何包装路由处理函数 gin.HandlerFunc
- c# - 为什么此代码段不起作用?(Uwp 应用内容播放媒体内容)
- swift - 核心数据 - 关系没有保存在循环中
- postgresql - Play Framework:使用h2数据库进行开发和生产模式下的postgresql以及如何通过conf-file连接到postgresql
- python - 尝试获取硒代码以在下拉菜单中选择一个选项,但不起作用(Google 表单)
- docker - Nginx 日志没有写入
- mongodb - 查询以加入 mongodb 中的两个嵌套集合