《数据探索性分析案例实现(EDA) 》

 

一、数据描述

1.1数据集描述

diamonds数据框包含53940行,有caratcutcolorclaritydepthtablepricexyz10列,对应每个钻石的一些参数值。

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列扇形图。同理绘制colorcut列扇形图。图片如下:

 

可以看到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计数图

 

 

 

图表功能

pricex轴,其他列为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

 

posted on 2021-06-17 23:26  琋瑒  阅读(214)  评论(0编辑  收藏  举报