本文作者是一个不折不扣的程序员,最大的乐趣就是爬各种网站。尤其是在过去的一年里,为了好玩和利益而被抓取的网站数不胜数。从利基市场到主流电子产品商店,再到新闻媒体和文学博客,使用BeautifulSoup等简单工具可以获得大量有趣且干净的数据——我也喜欢Chrome的Headless模式。在本文中,作者将分析从Greekwinee-shop(希腊葡萄酒网站)获得的数据,看看哪些葡萄酒最受欢迎。爬虫本身相当简单,可以在GitHub页面(https://github.com/Florents-Tselai/greek-wines-analysis)上找到。作者将专注于使用标准Python包对结果数据(1125个唯一标签)进行一些快速探索性分析。抓取器本身公开了一个相当简单的API。首先,请求wine页面的数据,返回数据给nicedict,如下:In[2]:In[3]:Out[3]:然后,定义一些matplotlib。在[4]:加载houseofwine_gr.dump模块生成的数据转储,开发者还可以在GitHub页面上找到.json、.csv和.xlsx数据集。In[5]:这是您拥有的数据的视图:In[6]:Out[6]:用np.nan替换空字符串,使它们更容易用Pandas处理。在[7]中:重命名一些包含特殊字符的列名,以便将它们用作本机DataFrame存储。In[8]:让我们也为列分配适当的类型:In[9]:让我们将颜色列值从希腊语翻译成英语。在[10]中:下面是数据集的颜色直方图。In[11]:以下是各款酒的简单指标分布情况:In[12]:如图所示,AverageRating栏目几乎呈正态分布,μ值高达85以上。Reddit上的Kroutoner解释了为什么会发生这种情况(并纠正了作者之前的错误):典型的葡萄酒评级是50-100,而不是0-100。所以看起来是半分布实际上是近乎完美的分布。此外,90分以上的葡萄酒通常被认为表现更好,销量更好。这一事实改变了对数据的解释,即大多数葡萄酒被评为好,只有一小部分被评为非常好。要进一步推进,请查看标签列。似乎每个标签列表都可以给出有关酒的各种属性(品种、甜度等)的信息。接下来,作者将这些属性分离出来,将tagscolumn元素从list转换为setlist元素,因为这样操作会更简单。也就是说,我们将使用set操作,而不是在ifxin-else-try-except-IndexError内部。现在,做一些简单的操作来提取甜味、温和等信息。以下信息也从希腊语翻译成英语。以下是4个属性中每个属性的直方图:此时,开发人员可以(几乎)安全地假设所有剩余标签显示每种葡萄酒的品种信息,因此定义一个新列来存储它们。由于解析错误,列中出现了一些整数,我们将其过滤掉。我们还可以添加一个布尔变量varietal。只有一种混合物的葡萄酒被称为品种,而至少有两种混合物的葡萄酒被称为混合。对于品种葡萄酒,我们设置single_variety-对于其他非品种葡萄酒,该值将为NaN。让我们看看Varietal/Blend的分布是什么样的。这里有一些指示性的情节。在[27]中:看起来霞多丽是最受欢迎的品种,而维达尔和桑娇维塞是最昂贵的。评价最高的是Malvasia,但所有品种都非常接近。将注意力转向混合,我们做了一些Numpy和Scikit-Learn来生成混合矩阵。上面的代码简单地取自这里:为此:这些是混合物中最常出现的品种。在[30]中:这是一张热图,显示哪些品种通常混合在一起。In[31]:In[32]:如果你有兴趣,欢迎到Github页面与作者交流。
