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