本文作者是一名地地道道的程序員,最大的樂趣就是爬各種網(wǎng)站。特別是在過去的一年里,為了娛樂和利潤而爬掉了無數(shù)網(wǎng)站。從小眾到主流電子商店再到新聞媒體和文學(xué)博客,通過使用簡單的工具(如BeautifulSoup)獲得了很多有趣且干凈的數(shù)據(jù)—我也很喜歡Chrome 的Headless模式。
本文,作者將分析從Greek wine e-shop商店(一個(gè)希臘葡萄酒網(wǎng)站)中獲得的數(shù)據(jù),來看看哪種葡萄酒最受歡迎。
scraper本身相當(dāng)簡單,可以在GitHub頁面(https://github.com/Florents-Tselai/greek-wines-analysis)找到。作者將著重于通過使用標(biāo)準(zhǔn)的Python包對得到的數(shù)據(jù)(1125個(gè)獨(dú)特的標(biāo)簽)做一些快速的探索性分析。
scraper本身暴露了一個(gè)相當(dāng)簡單的API。首先,請求葡萄酒頁面的數(shù)據(jù),并將數(shù)據(jù)返回給nicedict,如下所示:
In [2]:
In [3]:
Out[3]:
然后,定義一些matplotlib。
In [4]:
加載由houseofwine_gr.dump模塊生成的數(shù)據(jù)轉(zhuǎn)儲,開發(fā)者也可以在GitHub頁面找到.json,.csv和.xlsx的數(shù)據(jù)集。
In [5]:
以下是所擁有數(shù)據(jù)的視圖:
In [6]:
Out[6]:
用np.nan替換空的字符串,使它們更容易處理 Pandas。
In [7]:
重命名一些包含特殊字符的列名,以便將它們用作本機(jī)DataFrame存儲器。
In [8]:
我們還將適當(dāng)?shù)念愋头峙浣o列:
In [9]:
讓我們將color列值從希臘語翻譯成英語。
In [10]:
以下是數(shù)據(jù)集的顏色直方圖。
In [11]:
以下是每種葡萄酒的簡單指標(biāo)分布情況:
In [12]:
如圖所示,Average Rating列幾乎為正態(tài)分布,μ值高達(dá)85以上。 Reddit上的Kroutoner解釋了為什么會發(fā)生這種情況(并糾正了作者以前的錯(cuò)誤):
典型的葡萄酒評級是50-100,而不是0-100。所以看起來似乎只有一半分布,實(shí)際上是一個(gè)幾乎完全的分布。此外,90分以上的葡萄酒一般被認(rèn)為效果更好,銷售也更好。這個(gè)事實(shí)改變了對數(shù)據(jù)的解釋,也就是說大多數(shù)葡萄酒被評為好,只有一小部分被評為非常好。
為了進(jìn)一步推進(jìn),來看一下tags 列。
似乎每個(gè)標(biāo)簽列表可以給出有關(guān)葡萄酒的各種屬性(品種,甜味等)的信息。接下來,作者將這些屬性分開,將tags列元素從list 轉(zhuǎn)換為set列表元素,因?yàn)檫@樣會使操作更簡單。也就是說,不是在一個(gè)if x in -else-try-except-IndexError中,我們將使用set操作。
現(xiàn)在,做一些簡單操作來提取關(guān)于甜度,溫和性等信息,以下信息同樣從希臘語翻譯到了英語。
以下是4個(gè)屬性中每一個(gè)屬性的直方圖:
在這一點(diǎn)上,開發(fā)者可以(幾乎)安全地假設(shè)所有剩下的標(biāo)簽顯示每種葡萄酒的品種信息,所以定義一個(gè)新的列來存儲它們。
由于解析錯(cuò)誤,列中出現(xiàn)了一些整數(shù),我們將其過濾掉。
我們也可以添加一個(gè)布爾變量varietal。酒中的混合物只有一種的稱為varietal,至少有兩種混合物的稱作blends。
對于varietal葡萄酒,我們設(shè)定了一個(gè)single_variety - 對于其他非varietal的葡萄酒來說,這個(gè)數(shù)值將是NaN。
讓我們來看看Varietal / Blend的分布是怎樣的。
這是一些指示性的情節(jié)。
In [27]:
看起來Chardonnay是最流行的品種,而Vidal和Sangiovese是最昂貴的品種。評分最高的是Malvasia,但所有品種都非常接近。
把注意力轉(zhuǎn)移到blends上,我們做了一些Numpy和Scikit-Learn來產(chǎn)生blends的矩陣。
上面的代碼簡單地從這里得到:
對此:
這些是blends中出現(xiàn)頻率最高的品種。
In [30]:
這里是一個(gè)熱圖,顯示哪些品種通常混合在一起。
In [31]:
In [32]:
如果你有興趣,歡迎來Github頁面與作者交流。