《数据探索性分析案例实现(EDA) 》
一、数据描述
1.1数据集描述
diamonds数据框包含53940行,有carat、cut、color、clarity、depth、table、price、x、y、z共10列,对应每个钻石的一些参数值。
carat:克拉,钻石的重量
cut:代表了钻石的切工,由低到高依次为Fair, Good, Very Good, Premium, Ideal
color:代表了钻石的颜色从最低的J到最高的D
clarity:钻石的纯净度,代表了钻石的透明程度从低到高依次为I1, SI1, SI2, VS1, VS2, VVS1, VVS2, IF
depth:深度比例
table:代表了钻石的桌面比例
price:代表了钻石的价格
x,y,z:分别代表了钻石的长/宽/高
1.2数据展示
二、问题提出
1、每个数据有什么特征?
3、价格和什么成正比?
2、克拉、切割、颜色、钻石的纯净度对价格的影响?
三、数据清洗和预处理
3.1查找缺失值
pd.isnull(df).sum()
可以看出,该数据集没有缺失值。
3.2查看数据集类型
df.info()
查看数据集类型,可以看到一个10x3的列表,该数据集有10列,53940条数据。Not-Null记录该列是否有空值,Dtype描述每列数据的类型。
四、各变量相关性数据分析与可视化
4.1通过库,用代码实现可视化
查看数据描述
df.describe()
对每个特征绘制柱状图
扇形图
如上绘制clarity列扇形图。同理绘制color、cut列扇形图。图片如下:
可以看到clarity主要分布在VS2、SI1、SI2、VS1,I1、IF占比很少。
可以看到,color为G占比最大,J最小。
可以看出,cut切割理想(Ideal)的占比最大,失败的很少。
单个特征的分布情况(直方图)
sns.distplot(df['price'],kde=False)
由直方图可以看出加出价格的分布情况。
#将数据储存在向量p中 p <- ggplot(diamonds, aes(x=carat,y=price)) #绘制散点图 p + geom_point()
我们看到随着钻石重量的增加钻石的价格也呈上升的趋势,且在某些重量上相对集中,是因为钻石一般都有其规格,故钻石的克拉数多相对集中。我们可以看到钻石的重量越高其价格的离散程度越大,而在重量较低时价格的离散程度相对较小。初步的判断为:钻石的重量越高价格越高,钻石的重量越高其价格受其他因素的影响越大。
#以不同的颜色代表钻石不同的颜色,以不同的形状代表不同的切工 p + geom_point(aes(color = color,shape = cut))
#钻石价格的分布情况 p1 <- ggplot(diamonds,aes(x = price)) + #以价格为x轴绘制核密度图 geom_density(lwd = 1) + #添加标题 ggtitle("Density of Price") p2 <- ggplot(diamonds,aes(x = price)) + #以价格为x轴,按照切工分组绘制核密度图 geom_density(lwd = 1,aes(color = cut)) + #调整图例位置 theme(legend.position = c(0.85,0.7)) + #添加标题 ggtitle("Price,by CUT") p3 <- ggplot(diamonds,aes(x = price)) + geom_density(lwd = 1,aes(color = color)) + theme(legend.position = c(0.91,0.6)) + ggtitle("Price,by Color") p4 <- ggplot(diamonds,aes(x = price)) + geom_density(lwd = 1,aes(color = clarity)) + theme(legend.position = c(0.9,0.56)) + ggtitle("Price,by Clarity")
图1可以看出钻石的价格呈正偏峰分布,多数的值都集中在较小的一端。
图2价格按颜色分组,颜色好(D)的钻石的价格多集中在价格较低的区域,而颜色差(J)的钻石价格的分布更平均一些。
图3将价格按切工分组,各种切工的钻石分布情况差不多都多集中于价格低的区域。
图4将价格按透明度分组,发现和第二幅图相似,透明度较好(IF)的钻石多集中在低价格区域,而透明度较差(l1)的钻石的价格分布更平均一些。
p5 <- ggplot(diamonds,aes(x = carat,y = price,color = color)) + #添加散点 geom_point() + #添加平滑曲线 geom_smooth() + #添加轴须图 geom_rug() + #根据color变量分面 facet_grid(~color) + #去掉图例 theme(legend.position = "none")
按color变量分层,分析不同颜色的钻石的价格随克拉数变化的情况。
不同颜色的钻石的价格都随着克拉数的升高而升高,与未按颜色分层时得出的结论一致;轴须图在x轴和y轴上标出了变量的分布情况,不同颜色钻石价格的分布情况与核密度图结果一致,克拉数的分布与价格的分布情况相似。从斜率上看随着颜色D-J的变化,回归曲线越来越平缓,即单价更低,得出结论为钻石的价格随克拉数的升高而升高,颜色越好(D)的钻石的单价越高。
p6 <- ggplot(diamonds,aes(x = carat,y = price,color = cut)) + geom_point() + geom_smooth() + geom_rug() + facet_grid(~cut) + theme(legend.position = "none")
按cut变量分层,分析不同切工的钻石的价格随克拉数变化的情况。
不同切工的钻石的价格都随着克拉数的升高而升高,与未按颜色分层时得出的结论一致。轴须图结果显示,不同切工钻石价格的分布情况与核密度图结果一致,克拉数的分布与价格的分布情况相似。从斜率上看随着钻石切工Fair-Ideal的变化,回归曲线越来越陡峭,结论为钻石的价格随克拉数的升高而升高,切工越好(Ideal)的钻石的单价越高。
p7 <- ggplot(diamonds,aes(x = carat,y = price,color = clarity)) + geom_point() + geom_smooth() + geom_rug() + facet_grid(~clarity) + theme(legend.position = "none")
按clarity变量分层,分析不同透明度钻石的价格随克拉数变化的情况。
不同透明度的钻石的价格都随着克拉数的升高而升高,与未按颜色分层时得出的结论一致。轴须图结果显示,不同透明度钻石价格的分布情况与核密度图结果一致,克拉数的分布与价格的分布情况相似。单从斜率上看随着钻石透明度l1-IF的变化,回归曲线越来越陡峭,结论为钻石的价格随克拉数的升高而升高,透明度越好(IF)的钻石的单价越高,但是由于样本多集中于中间水平,两端的样本量较少,故结果的准确性还有待商榷。
p8 <- ggplot(diamonds,aes(x = color,y = price,fill = color)) + #箱线图的大小代表数量 geom_boxplot(varwidth = TRUE) + #去掉图例 theme(legend.position = 'none') + #添加标题 ggtitle("Price,by Color") p9 <- ggplot(diamonds,aes(x = cut,y = price,fill = cut)) + geom_boxplot(varwidth = TRUE) + theme(legend.position = 'none') + ggtitle("Price,by Cut") p10 <- ggplot(diamonds,aes(x = clarity,y = price,fill = clarity)) + geom_boxplot(varwidth = TRUE) + theme(legend.position = 'none') + ggtitle("Price,by Clarity")
图1发现颜色越好(D)的钻石数量越多价格的中位数越低,而颜色较差(J)的钻石数量更少价格更高。
图2发现切工作为一个人力可控的因素,切工越好的钻石越多,而切工对价格的影响不是很明显,只有切工最好的钻石价格中位数看起来和其他四组有一定的差距。
图3发现钻石的透明度于中等水平相对集中,两端相对较少,而价格中位数随着透明度的提高而呈现降低的趋势。
图4的结论是颜色、切工、透明度越好的钻石价格均值越低。我们得到了看似与上面相反的结论,但是仔细思考发现在前面我们的结论其实是颜色/切工/透明度越好钻石的单价越高,但是根据核密度图的结果我们发现颜色/切工/透明度越高钻石的克拉数多分布于偏小的区域。
4.2使用dtale可视化数据
查看数据
结果如下:
通过左上角的三角形打开功能菜单(通过language可将语言切换为中文)
描述
以price为例详细展开说明:
查看描述,可知价格分布及频率,还有最大值、中值、最小值、总和等。通过箱式图可知道:
最小值:326
1/4分位点:950
中位数:2401
3/4分位点:5324.25
最大值:18823
直方图:
可以看到价格为1250左右的最多,2000-7000其次,更贵就更少了。
细分
500个数据
从此细分计数图可以看出,价格为600左右的最多。
price-carat
可以看出price-carat是正比例相关,价格越高,carat越高
以下给出了其他列和price计数图
图表功能
以price为x轴,其他列为y轴,可以得到如下结果:
carat by price
随着钻石重量的增加钻石的价格也呈上升的趋势
depth by price
cut by price
color by price
clarity by price
可以得出,克拉和价格成正相关,质量越重,价格越高,而价格高的钻石的切工、纯净度不会太差,而颜色没有太大相关。
ScatterPlot-散点图
Wordcloud-词云图
相关性
可以知道影响价格的最重要因素是carat。
五、主要结论
钻石的重量越高价格越高,钻石的重量越高其价格受其他因素的影响越大。
颜色、切工、透明度越好的钻石价格均值越低。
钻石的价格随克拉数的升高而升高,透明度越好(IF)的钻石的单价越高。
钻石的价格随克拉数的升高而升高,切工越好(Ideal)的钻石的单价越高。
钻石的价格随克拉数的升高而升高,颜色越好(D)的钻石的单价越高。
参考文献
https://zhuanlan.zhihu.com/p/135405141
https://www.cnblogs.com/Qqun821460695/p/11911246.html
https://zhuanlan.zhihu.com/p/32718466