数据获取
从本地读取iris数据集,将列名命名为:‘sepal length’, 'sepal width ', ‘petal length’,‘petal width’, ‘species’。
#数据获取
iris_data=pd.read_csv("iris.csv",header=None,names=['sepal length','sepal width',
'petal length','petal width','species'])
iris=pd.DataFrame(iris_data)
print(iris)
数据清理
1、查看数据行列情况,判断是否有空行,如果有则删除
2、查看空值情况
#数据的清理
#查询数据行列情况
print("数据集的行数为:",iris.shape[0])
print("数据集的列数为:",iris.shape[1])
#查询空行数目
print("每列空值的数目:\n",iris.isnull().sum())
print("*****")
print("存在空行数目:",iris.isnull().T.any().sum())
print("*****")
#删除空行数目
iris.dropna(axis=0,how="all",inplace=True)
#查看空值情况
print("删除空行后")
print("每列空值的数目:\n",iris.isnull().sum())
print("存在空行数目:",iris.isnull().T.any().sum())
# 获取数据集信息
# iris_data.info()
可视化
1、直方图展示各个维度的值分布情况;(20个分箱)
plt.suptitle("鸢尾花各维分布直方图")
#画花萼长度的分布直方图
plt.subplot(221)
plt.hist(iris_data['sepal length'],bins=20,edgecolor='black',alpha=0.7)
# 显示横轴标签
plt.xlabel("取值")
# 显示纵轴标签
plt.ylabel("计数")
# 显示图标题
plt.title("花萼长度的分布直方图")
#画花萼宽度的分布直方图
plt.subplot(222)
plt.hist(iris_data['sepal width'],bins=20,edgecolor='black',alpha=0.7)
# 显示横轴标签
plt.xlabel("取值")
# 显示纵轴标签
plt.ylabel("计数")
# 显示图标题
plt.title("花萼宽度的分布直方图")
#画花瓣长度的分布直方图
plt.subplot(223)
plt.hist(iris_data['petal length'],bins=20,edgecolor='black',alpha=0.7)
# 显示横轴标签
plt.xlabel("取值")
# 显示纵轴标签
plt.ylabel("计数")
# 显示图标题
plt.title("花瓣长度的分布直方图")
#画花瓣宽度的分布直方图
plt.subplot(224)
plt.hist(iris_data['petal width'],bins=20,edgecolor='black',alpha=0.7)
# 显示横轴标签
plt.xlabel("取值")
# 显示纵轴标签
plt.ylabel("计数")
# 显示图标题
plt.title("花瓣宽度的分布直方图")
#调整子图上下之间的间距
plt.subplots_adjust(hspace=0.5)
plt.show()
2、箱式图展示三类鸢尾花的petal_length属性值的分布情况
plt.suptitle("三类鸢尾花的petal_length属性值的分布情况")
sns.boxplot(x="species",y="petal length",data=iris)
plt.title("箱型图")
plt.show()
# print(iris.describe())
3、在一个图中展示三种鸢尾花的petal_width属性的10个百分位折线图;
#产生间隔相等的10个实数
q=np.linspace(10,100,num=10)
# print(q)
#取出species值为1的sepal length值
sepal_length1=np.array(iris[iris['species']==1]['petal width'])
#np.percentile(sepal_length,q)取sepal_length的q百分位的值
plt.plot(q,np.percentile(sepal_length1,q),color='blue',linewidth=2.0)
#取出species值为2的sepal length值
sepal_length2=np.array(iris[iris['species']==2]['petal width'])
plt.plot(q,np.percentile(sepal_length2,q),color='red',linewidth=2.0)
#取出species值为3的sepal length值
sepal_length3=np.array(iris[iris['species']==3]['petal width'])
plt.plot(q,np.percentile(sepal_length3,q),color='green',linewidth=2.0)
plt.title("三种鸢尾花的petal_width属性的10个百分位折线图")
plt.legend([sepal_length1,sepal_length2,sepal_length3],labels=['山鸢尾花','杂色鸢尾花','佛及利亚鸢尾花'])
plt.show()
4、在一个图中展示花萼长与宽的散点图;
#绘制散点图
plt.scatter(iris[iris['species']==1]['sepal length'],iris[iris['species']==1]['sepal width'])
plt.scatter(iris[iris['species']==2]['sepal length'],iris[iris['species']==2]['sepal width'])
plt.scatter(iris[iris['species']==3]['sepal length'],iris[iris['species']==3]['sepal width'])
plt.title('花萼长与宽的散点图', fontsize=24)
plt.xlabel('sepal length', fontsize=14)
plt.ylabel('sepal width', fontsize=14)
plt.show()
实验总结
本实验采用matplotlib对数据集iris进行预处理及可视化