對diamonds.csv數據集的數據探索性分析及其實現(EDA)


一、數據描述

1、數據描述

(1)本次使用的是磚石(diamonds)數據集,這個數據集包含近53940的價格和其他屬性。根據該數據集,我們可以通過鑽石的切割,顏色,凈度,價格和其他屬性分析鑽石。

(2)該數據集中共有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:磚石的深度

2、數據導入

import pandas as pd df = pd.read_csv(r'C:\Users\Administrator\Desktop\diamonds.csv') df

 

3、查看數據信息

①查看數據集信息:

df.describe()

②查看數據類型:

df.info()

由此圖可知,diamonds.csv數據集中的十個字段,其中有六個float類型,三個object類型,一個int型。

二、問題提出

1、磚石的價格的分布是什么樣的?價格與克拉或顏色之間有什么關系?

2、磚石的純凈度與顏色之間有什么聯系?純凈度分布是怎樣的?

三、數據清洗和預處理

1、重復值

使用drop_duplicates()方法刪除重復行:

df.drop_duplicates()

 

由此圖可知,刪除重復項之后該數據集有53794行數據,刪除了146行重復的數據。

 2、缺失值

使用isnull()方法查看缺失值:

df.isnull()

df.isnull().any()

有上圖可知,該數據集中沒有缺失值。

四、各變量相關性數據分析與可視化

1、繪制每個數據的圖表信息

①柱狀圖:

cols=df.columns #取得列縮影 index=df.index[1:]#去除count行 plt.figure(figsize=(30,30))#控制畫布大小 for i in range(len(cols) ): a=plt.subplot(10,6,i+1) a.set_title(cols[i]) for j in range(len(index)): plt.bar(index[j],df.loc[index[j],cols[i]])#對每個特征繪制describe柱狀圖 plt.show()

②扇形圖:

import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei'] plt.pie(x=df['clarity'].value_counts(),labels=df['clarity'].value_counts().index,autopct='%.1f%%',) plt.title(u'clarity') plt. show() import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei'] plt.pie(x=df['color'].value_counts(),labels=df['color'].value_counts().index,autopct='%.1f%%',) plt.title(u'color') plt. show() import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei'] plt.pie(x=df['cut'].value_counts(),labels=df['cut'].value_counts().index,autopct='%.1f%%',) plt.title(u'cut') plt. show()

  

 

由扇形圖可知:clarity主要分布在VS2、SI1、SI2、VS1,其中的I1、IF占比很少;而color中G的占比最大,J最小;cut中切割理想(Ideal)的占比最大,失敗的很少。

2、通過柱狀圖觀看磚石價格的分布

#1
import seaborn as sns %matplotlib inline sns.distplot(df["price"],bins=300,kde=False,color="red") #2 sns.distplot(df['price'],kde=False)

 

由上面兩個圖可知,鑽石價格基本服從冪律分布。

3、通過柱形圖對磚石顏色的統計

sns.countplot(diamond.color)

4、通過dtale進行可視化

 

 通過左上角的三角形打開功能菜單(通過language可將語言切換為中文),選擇描述得到下圖:

 

 由此圖可知,我們可以通過描述功能得到該數據集的各個數據信息(數據的分布及頻率,還有最大值、中值、最小值、總和等。)。

以carat為例:

 

5、磚石的其他數據與價格之間的關系

①鑽石價格的分布情況

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")

第一副圖可以看出鑽石的價格呈正偏峰分布,多數的值都集中在較小的一端。
第二幅圖我們將價格按顏色分組,顏色好(D)的鑽石的價格多集中在價格較低的區域,而顏色差(J)的鑽石價格的分布更平均一些。
第三幅圖我們將價格按切工分組,各種切工的鑽石分布情況差不多都多集中於價格低的區域。
第四幅圖我們將價格按透明度分組,發現和第二幅圖相似,透明度較好(IF)的鑽石多集中在低價格區域,而透明度較差(l1)的鑽石的價格分布更平均一些。

②價格與克拉和純凈度之間的關系

 由散點圖可知,磚石的純凈度越高,重量越重,價格越高。

③價格與克拉之間的關系

 由此圖我們看到隨着鑽石重量的增加鑽石的價格也呈上升的趨勢,且在某些重量上相對集中。我們可以看到鑽石的重量越高其價格的離散程度越大,而在重量較低時價格的離散程度相對較小。故我認為鑽石的重量越高價格越高,鑽石的重量越高其價格受其他因素的影響越大。

④價格與切工(cut)之間的關系

切工與價格的關系如何? 我們可以首先將鑽石按照切工分組,然后計算每一個切工等級的鑽石的平均價格等。 在jupyter中,我們可以借助DataFrame的groupby函數進行分組,然后使用mean函數分組聚集計算。

diamond.groupby("cut")["price"].mean()


但從上圖來看,我們發現價格和切工並不存在很強的直接相關性。我們也可以借助seaborn的盒圖直觀地觀察

由此圖我們可以發現磚石的切工越好,其價格相對來說就越高。

⑤價格與純凈度之間的關系

 

 

 通過上面的線型圖我們發現,純凈度並不能直接覺定一個磚石的價格,但間接影響了磚石的價格。

⑥價格與純凈度、顏色之間的關系

 

 

 由扇形圖和柱狀圖可知,純凈度越高,顏色越稀有,價格越高

⑦價格和克拉,切工之間的關系

上面兩個圖表我們在看的時候太密集,不方便觀察,於是我將上面第二關圖表進行了拆分,如下圖所示:

 

 由這些圖表可知,對於任何顏色的磚石來說,重量越重,價格越高。

⑧價格與其他數據之間的相關性

 

由上圖可知價格與depth之間的相關性是負相關,故對價格的影響是價格越高,depth越低。而其他數據都對價格由影響,只是影響力度不同,其中carat的影響力最大。

 6、磚石數據集中所有數據之間的相關性

五、主要結論

克拉、切割、顏色、純度對價格的影響是呈現線性正相關關系,同等條件下,克拉越高價格越高。

 

鑽石的重量越高價格越高,鑽石的重量越高其價格受其他因素的影響越大。

 

顏色、切工、透明度越好的鑽石價格均值越低。

價格隨克拉數上升而上升,有較多的離群點。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM