【天池】WineQuality葡萄酒品质--数据分析练习

一、问题描述

1、数据集

数据下载地址:Wine Quality
根据数据说明可知,Wine Quality数据集中包含两个数据子集,分别是红葡萄酒(red wine)和白葡萄酒(white wine)的样本,样本量如下:

数据集 数据量
红葡萄酒(red wine) 1599
白葡萄酒(white wine) 4898

每个样本数据的输入、输出规则都是一样的,其中输入条件包含11个客观条件,都是葡萄酒的物化性质,记录为数值;输出结果只有1个,那就是专业品酒师的主观评分(至少取到三次评分的中位数),评分跨度0—10分,0分代表非常糟糕,10分代表非常出色。输入输出指标说明如下:

输入指标 说明
fixed acidity 固定酸
volatile acidity 挥发性酸
citric acid 柠檬酸
residual sugar 残留糖
chlorides 氯化物
free sulfur dioxide 游离二氧化硫
total sulfur dioxide 二氧化硫总量
density 密度
pH 酸碱值
sulphates 硫酸盐
alcohol 酒精
输出指标 说明
quality 品质(得分介于0-10)

另外还需要了解到,试验中提供的葡萄酒都来自于葡萄牙的"Vinho Verde"葡萄酒,但葡萄酒的质量并不是均匀分布的,即普通的葡萄酒要远多于劣质葡萄酒或优质葡萄酒,因此可以通过离群点有效甄别出那些少量的劣质葡萄酒或优质葡萄酒。

数据说明原文如下:

Citation Request:
  This dataset is public available for research. The details are described in [Cortez et al., 2009]. 
  Please include this citation if you plan to use this database:

  P. Cortez, A. Cerdeira, F. Almeida, T. Matos and J. Reis. 
  Modeling wine preferences by data mining from physicochemical properties.
  In Decision Support Systems, Elsevier, 47(4):547-553. ISSN: 0167-9236.

  Available at: [@Elsevier] http://dx.doi.org/10.1016/j.dss.2009.05.016
                [Pre-press (pdf)] http://www3.dsi.uminho.pt/pcortez/winequality09.pdf
                [bib] http://www3.dsi.uminho.pt/pcortez/dss09.bib

1. Title: Wine Quality 

2. Sources
   Created by: Paulo Cortez (Univ. Minho), Antonio Cerdeira, Fernando Almeida, Telmo Matos and Jose Reis (CVRVV) @ 2009
   
3. Past Usage:

  P. Cortez, A. Cerdeira, F. Almeida, T. Matos and J. Reis. 
  Modeling wine preferences by data mining from physicochemical properties.
  In Decision Support Systems, Elsevier, 47(4):547-553. ISSN: 0167-9236.

  In the above reference, two datasets were created, using red and white wine samples.
  The inputs include objective tests (e.g. PH values) and the output is based on sensory data
  (median of at least 3 evaluations made by wine experts). Each expert graded the wine quality 
  between 0 (very bad) and 10 (very excellent). Several data mining methods were applied to model
  these datasets under a regression approach. The support vector machine model achieved the
  best results. Several metrics were computed: MAD, confusion matrix for a fixed error tolerance (T),
  etc. Also, we plot the relative importances of the input variables (as measured by a sensitivity
  analysis procedure).
 
4. Relevant Information:

   The two datasets are related to red and white variants of the Portuguese "Vinho Verde" wine.
   For more details, consult: http://www.vinhoverde.pt/en/ or the reference [Cortez et al., 2009].
   Due to privacy and logistic issues, only physicochemical (inputs) and sensory (the output) variables 
   are available (e.g. there is no data about grape types, wine brand, wine selling price, etc.).

   These datasets can be viewed as classification or regression tasks.
   The classes are ordered and not balanced (e.g. there are munch more normal wines than
   excellent or poor ones). Outlier detection algorithms could be used to detect the few excellent
   or poor wines. Also, we are not sure if all input variables are relevant. So
   it could be interesting to test feature selection methods. 

5. Number of Instances: red wine - 1599; white wine - 4898. 

6. Number of Attributes: 11 + output attribute
  
   Note: several of the attributes may be correlated, thus it makes sense to apply some sort of
   feature selection.

7. Attribute information:

   For more information, read [Cortez et al., 2009].

   Input variables (based on physicochemical tests):
   1 - fixed acidity
   2 - volatile acidity
   3 - citric acid
   4 - residual sugar
   5 - chlorides
   6 - free sulfur dioxide
   7 - total sulfur dioxide
   8 - density
   9 - pH
   10 - sulphates
   11 - alcohol
   Output variable (based on sensory data): 
   12 - quality (score between 0 and 10)

8. Missing Attribute Values: None

2、分析思路

因为这次数据量不大,就不进数据库了,直接使用python进行分析。
由于对葡萄酒不太了解,先去百度一下可以知道以下有用信息:
以下数值标准主要参考自最新国家标准:《葡萄酒》(GB 15037-2006)》,国外标准有别于国内,仅供参考。

  1. 葡萄酒的四大基本特征:酸度、单宁、酒精和甜味。优质的葡萄酒的四个基本特征一定都是处于很好的平衡状态。

  2. 酸主要可分为固定酸和挥发酸,常说的总酸就是两者的总和。葡萄酒中含有许多种酸,主要是酒石酸、苹果酸、柠檬酸、琥珀酸、乳酸、醋酸,挥发酸是葡萄酒中以游离状态或以盐的形式存在的所有乙酸等脂肪酸的总和,但不包括乳酸、琥珀酸以及CO2和SO2,其中醋酸是主要的挥发酸。挥发酸的含量是葡萄酒健康状态的“体温表”,因为它是发酵、贮藏管理不良留下的标记,通过挥发酸含量的测定可以了解葡萄酒是否生病、病害的严重性以及预测贮藏的困难程度。在国标中对挥发酸和柠檬酸做了明确规定。
    在这里插入图片描述
    在这里插入图片描述

  3. PH值是衡量葡萄酒中酸度的程度,一般来说,白葡萄酒的酸度一般在3.1至3.5之间,高于红葡萄酒的3.5至4的区间值。相较而言酸度是衡量葡萄酒中酸含量的多少。

  4. 一般来说,酸度对葡萄酒口感的影响要大于PH值,但如果PH值位于一个极端的位置,就会产生较大的影响。总酸度是告诉我们这款酒的浓度,而PH值显示的是这款酒品尝起来口感的浓郁度。例如,在PH值相同的情况下,一款总酸度为6g/L的葡萄酒品尝起来会比总酸度为4g/L的葡萄酒更酸。

  5. 残留糖分(简称残糖)是衡量葡萄酒中甜度的标准。通常,残留糖分低于4克/升的葡萄酒为干型葡萄酒,许多干型葡萄酒几乎不含残糖。
    在这里插入图片描述

  6. 酒精度指葡萄酒中所含酒精的百分比,大部分葡萄酒的酒精度都在10-15%之间,但也有些特殊的葡萄酒,如阿斯蒂(Moscato d’Asti)(酒精度非常低),波特酒(Port)(酒精度非常高)。
    在这里插入图片描述

  7. 氯化物和硫酸盐都属于葡萄酒中的矿物盐成分,一般来说含量分别是0.1-0.4g/L和0.25-0.85g/L。值得一提的是,虽然这些矿物质成分存在葡萄酒中且可以增强葡萄酒的风味,但它们并不是某些葡萄酒带有矿物风味的主要原因。一般而言,红葡萄酒所含的矿物质多于白葡萄酒。

  8. 并不是所有葡萄酒中都会有二氧化硫,但二氧化硫能起到如杀菌、抗氧化、澄清酒液和提高色素和酚类物质含量等作用,因此一般葡萄酒中或多或少地带有一定的二氧化硫,只是整体而言其含量非常少,多为 80-200mg/L,个别葡萄酒中还含有 10-50mg/L 的游离态二氧化硫。不过,适当的摇杯或者醒酒等可以令其挥发掉,因此几乎可以忽略不计。
    在这里插入图片描述
    在欧盟,干红葡萄酒中二氧化硫的最高含量为 160mg/L,白葡萄酒和桃红葡萄酒为 210mg/L,甜型葡萄酒中的二氧化硫含量可能更高。

根据查到的信息,更新输入变量表格如下:

输入指标 说明 备注
fixed acidity 固定酸(g/L) 总酸组成之一
volatile acidity 挥发性酸(g/L) 总酸组成之一
citric acid 柠檬酸(g/L) 属于固定酸
residual sugar 残留糖(g/L) 基本指标之一
chlorides 氯化物(g/L) 矿物盐成分
free sulfur dioxide 游离二氧化硫(mg/L) 防腐保鲜剂
total sulfur dioxide 二氧化硫总量(mg/L) 防腐保鲜剂
density 密度(g/ml)
pH 酸碱值 酸度的另一种测量角度
sulphates 硫酸盐(g/L) 矿物盐成分
alcohol 酒精 (%vol) 基本指标之一

由此可知,11种输入变量可以大致划分成三类,第一类是基本指标及其内含的个别具体指标,第二类是附加指标(矿物盐、二氧化硫),第三类是密度这个物理性质。
根据以上信息,拟定分析内容如下图所示:
在这里插入图片描述

二、数据分析(Python)

0.数据清洗

使用Jupyter Notebook进行代码工作,首先加载需要用到的库:

%matplotlib inline
#%config InlineBackend.figure_format = 'retina'

import numpy as np 
import pandas as pd 
import matplotlib.pyplot as plt
import seaborn as sns

# 颜色
color = sns.color_palette()
# 数据print精度
pd.set_option('precision',3) 

这里开局就报错了,good。问题出在seaborn这个库,解决过程详见:Python seaborn库导入报错的解决,简而言之就是在anaconda中创建一个虚拟环境,安装python3.6的环境,再安装这几个库。
安装完毕后,重新输入上述代码,运行完毕。然后读取文件:

dfr = pd.read_csv(r'G:\1数据集\WineQuality\winequality-red.csv',sep = ';') #dfr short for dataframe_red
dfw = pd.read_csv(r'G:\1数据集\WineQuality\winequality-white.csv',sep = ';') #dfw short for dataframe_white

结果如下:
在这里插入图片描述
因为总酸作为葡萄酒基本指标值之一,是固定酸和挥发酸的合,所以可以在表中增加一列"total acid"作为总酸,并放置在表格首列:

#增加总酸
dfr['total acid'] = dfr['fixed acidity'] + dfr['volatile acidity']
dfw['total acid'] = dfw['fixed acidity'] + dfw['volatile acidity']
#移动dfr总酸到列首
r = dfr.columns.tolist()
r.insert(0,r.pop())
dfr = dfr.reindex(columns=r)
#移动dfw总酸到列首
r = dfw.columns.tolist()
r.insert(0,r.pop())
dfw = dfw.reindex(columns=r)

然后就可以看到:
在这里插入图片描述

因为不存在值必须唯一的变量且需要分析分类数量,故此处不对数据集进行去重(经试验两个数据集都存在一定数量的重复值)。
经检查不存在异常值。
至此分析用的数据准备就算完成了。

1.分类讨论

11种输入变量可以大致划分成三类,第一类是基本指标及其内含的个别具体指标,第二类是附加指标(矿物盐、二氧化硫),第三类是密度这个物理性质。

1-1 描述统计

1-1-1 数值描述
首先对两种葡萄酒作描述统计,这个可以.describe()方法直接得到结果

dfr.describe()
dfw.describe()

在这里插入图片描述
由上面结果首先可以知道参与测试的红葡萄酒获得的评分分布在3-8分,白葡萄酒在3-9分,且各分位数数据一致,这说明两种葡萄酒的品质在大体上无明显区别,但具体是否存在细节上的差距还需要进一步分析。另外对于输入变量的各参数,数据表格展示的形式太繁杂不直观,一时看不出什么信息,需要进一步加工成图像便于分析比对。
1-1-2 箱线图
进一步,绘制两种葡萄酒每个变量的箱线图

#红葡单变量箱线图
colnm = dfr.columns.tolist()
plt.figure(figsize = (10, 6))
plt.suptitle('红葡萄酒单变量箱线图', y=1.05) #总标题
"""画第一行的图"""
for i in range(7):
    plt.subplot(2,7,i+1)
    sns.boxplot(dfr[colnm[i]], orient="v", width = 0.4, color = color[0])
    plt.ylabel(colnm[i],fontsize = 12)
plt.tight_layout()
"""画第二行的图"""
for i in range(6):
    plt.subplot(2,6,i+7)
    sns.boxplot(dfr[colnm[i+7]], orient="v", width = 0.4, color = color[0])
    plt.ylabel(colnm[i+7],fontsize = 12)
plt.tight_layout()

在这里插入图片描述
结合箱线图和刚才的数据表格可以直观了解到各个变量的分布特征,大致归纳如下

红葡萄酒变量 分布特征
total acidity 整体呈正偏,尾长较为对称,高浓度部分存在一定量离群点
fixed acidity 整体呈正偏,尾长较为对称,高浓度部分存在一定量离群点,整体分布与总酸相近
volatile acidity 整体呈正偏,尾长较为对称,高浓度部分存在一定量离群点,浓度范围低总酸一个数量级
citric acid 整体呈正偏,上尾长较长,最小值取到0,有极个别离群点取到1
residual sugar 整体呈高度正偏,尾长较为对称,存在大量高浓度离群点
chlorides 整体呈高度正偏,尾长较为对称,存在少量低浓度离群点和大量高浓度离群点
free sulfur dioxide 整体呈正偏,上尾长较长,存在一定量高浓度离群点
total sulfur dioxide 整体呈正偏,上尾长较长,存在一定量高浓度离群点且离群点间断大
density 整体几乎呈正态分布,上下各有一定量离群点
pH 整体呈轻度正偏,尾长较为对称,存在少量低值离群点和一定量高值离群点
sulphates 整体呈正偏,尾长较为对称,存在较多高浓度离群点
alcohol 整体呈正偏,上尾长较长,存在少量高浓度离群点
quality 整体几乎呈正太分布,上下各有极少量离群点

可以大致总结知道,对于红葡萄酒而言,除密度和评分这两项数据分布均匀呈正态之外,其他所有变量都呈现出不同程度的正偏分布,这说明大多数变量都存在可控下限却没有明确的上限,由于品质波动都可能出现较高取值的情况。

#白葡单变量箱线图
colnm = dfw.columns.tolist()
plt.figure(figsize = (10, 6))
plt.suptitle('白葡萄酒单变量箱线图', y=1.05) #总标题
"""画第一行的图"""
for i in range(7):
    plt.subplot(2,7,i+1)
    sns.boxplot(dfw[colnm[i]], orient="v", width = 0.4, color = color[0])
    plt.ylabel(colnm[i],fontsize = 12)
plt.tight_layout()
"""画第二行的图"""
for i in range(6):
    plt.subplot(2,6,i+7)
    sns.boxplot(dfw[colnm[i+7]], orient="v", width = 0.4, color = color[0])
    plt.ylabel(colnm[i+7],fontsize = 12)
plt.tight_layout()

在这里插入图片描述
类似地,对于白葡萄酒可以分析得到:

白葡萄酒变量 分布特征
total acidity 整体呈正偏,尾长较为对称,存在少量低离群点和一定量高离群点
fixed acidity 整体呈正偏,尾长较为对称,存在少量低离群点和一定量高离群点,整体分布与总酸相近
volatile acidity 整体呈正偏,尾长较为对称,存在大量高离群点,浓度范围低总酸一个数量级
citric acid 整体呈正偏,尾长较为对称,存在少量低离群点和一定量高离群点
residual sugar 整体呈正偏,上尾长较长,存在少量高浓度离群点且离群点间断大
chlorides 整体呈高度正偏,尾长较为对称,存在少量低浓度离群点和大量高浓度离群点
free sulfur dioxide 整体呈正偏,上尾长较长,存在一定量高浓度离群点且离群点间断大
total sulfur dioxide 整体呈正偏,尾长较为对称,存在少量低离群点一定量高浓度离群点
density 整体呈轻度正偏,存在极少量高离群点
pH 整体呈轻度正偏,尾长较为对称,存在少量低离群点和一定量高离群点
sulphates 整体呈正偏,尾长较为对称,存在较多高浓度离群点
alcohol 整体呈正偏,上尾长较长,无离群点
quality 整体几乎呈正太分布,上下各有极少量离群点

可以发现白葡萄酒也是在绝大部分变量上呈现正偏分布,且相比红葡萄酒有更多变量有低离群点,整体上红葡萄酒和白葡萄酒在一些变量上表现不太相同,这些指标可能是造成品类不同的主要因素之一。

至此已经分别对红、白葡萄酒的情况有了初步了解,那二者之间是否有什么区别呢?可以把两种酒的变量箱线图放在一起进行观察:

#红白变量箱线图
colnm_r = dfr.columns.tolist()
colnm_w = dfw.columns.tolist()
plt.figure(figsize = (10, 6))
plt.suptitle('单变量箱线图对比',fontsize=14, y=1.05) #总标题
"""画第一行的图"""
for i in range(7):
    y1 = dfr[colnm_r[i]]
    y2 = dfw[colnm_w[i]]
    data = pd.DataFrame({
   "红": y1, "白": y2}) 
    plt.subplot(2,7,i+1)
    data.boxplot(widths=0.5,flierprops = {
   'marker':'o','markersize':
  • 21
    点赞
  • 165
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: 阿里天池淘宝2017-11用户行为数据分析是基于Hive进行的。Hive是一个构建在Hadoop之上的数据仓库基础架构,提供了类似于SQL的查询语言HiveQL,使用户能够在大规模数据集上进行数据查询和分析。 在进行淘宝用户行为数据分析时,首先需要将原始数据导入Hive数据仓库中。数据源可以是来自淘宝的用户行为日志文件,其中包含了用户在淘宝平台上的各种行为,例如浏览商品、点击广告、添加购物车、购买等等。 然后,使用HiveQL语言编写查询语句,通过Hive进行数据分析数据分析的目标可能包括但不限于:用户行为的频率分布、用户购买转化率、热门商品排行、用户购买决策的时间分布等等。通过对用户行为数据进行分析,阿里天池淘宝可以洞察用户行为的规律,发现用户需求和购物习惯,从而为优化产品和推广策略提供参考。 Hive的优势之一是可以处理大规模的数据,因此对于淘宝这样拥有海量用户和数据的平台而言,使用Hive进行用户行为数据分析非常合适。此外,Hive还提供了数据仓库的概念,可以通过不同的方式将数据进行结构化和存储,以方便后续的查询和分析。 综上所述,阿里天池淘宝2017-11用户行为数据分析基于Hive,通过将用户行为数据导入Hive数据仓库,利用HiveQL进行查询和分析,从而洞察用户行为规律,为产品和推广策略优化提供依据。Hive作为一个大数据处理工具,对于处理淘宝这样海量用户和数据的平台来说是非常适用的。 ### 回答2: 阿里巴巴天池是一个面向数据科学家和机器学习爱好者的在线数据科学竞赛平台,提供丰富多样的数据集和竞赛任务。其中,淘宝用户行为数据分析天池平台的一个竞赛任务。在这个竞赛中,参赛者需要使用Hive来完成对淘宝2017年11月的用户行为数据进行分析。 Hive是基于Hadoop的数据仓库系统,它可以处理大规模数据,并提供了类似于SQL的查询语言,使得用户可以通过编写SQL式的语句来查询和分析数据。在淘宝用户行为数据分析任务中,Hive可以帮助分析师和数据科学家从大量数据中提取有用的信息。 通过Hive,我们可以利用淘宝用户行为数据进行各种分析,如用户购买行为、浏览行为、搜索行为等。我们可以使用Hive的查询语句来筛选、聚合和统计数据,以得出用户行为的关键指标。 一种常见的使用Hive进行用户行为数据分析的方法是利用Hive提供的内置函数和操作符来进行数据的转换和计算。通过使用Hive的内置函数,我们可以对用户行为数据进行预处理,如将日期格式化、提取关键字等。然后,我们可以使用Hive的聚合函数和操作符来计算用户行为的各种指标,如总购买金额、平均浏览次数等。 此外,Hive还支持用户自定义函数和UDAF(用户自定义聚合函数),这使得分析师和数据科学家可以根据自己的需求来扩展Hive的功能。通过编写自定义函数,我们可以在Hive中实现更加复杂的计算和分析。 总的来说,通过Hive,我们可以使用SQL式的查询语言对阿里天池淘宝2017年11月的用户行为数据进行分析。通过Hive的内置函数和操作符,以及用户自定义函数和UDAF,我们可以从大规模的数据中提取有用的信息,并计算出用户行为的各项指标。 ### 回答3: 阿里天池淘宝2017-11用户行为数据分析基于Hive,可以使用Hive这个大数据存储和计算框架对淘宝2017年11月的用户行为数据进行分析。 Hive是一个基于Hadoop的数据仓库基础架构,可以将大规模数据集存储在Hadoop集群中,并同时提供类似于关系型数据库的查询和分析功能。通过Hive,可以利用SQL的方式对大规模数据进行查询和分析,使得数据分析师更加方便地处理和分析海量数据。 对于淘宝2017-11用户行为数据,可以将其导入Hive中进行分析。首先,可以创建一个Hive表,定义各个字段的名称和数据类型,然后将用户行为数据导入到这个表中。接着,可以使用Hive提供的SQL语句进行各种查询和分析。 例如,可以通过查询语句统计每个用户的购买次数、浏览次数、加入购物车次数等行为情况,从而分析用户的购买意向和行为模式。也可以对用户的购买行为进行细分,比如按照地区、商品类别等进行分组,以了解不同用户群体的购物习惯和喜好。此外,还可以对用户行为的时间分布进行分析,了解用户在不同时间段的活跃度和购买偏好。 通过Hive的数据分析功能,可以深入挖掘淘宝2017-11用户行为数据中潜在的商业价值,为企业的市场营销和业务决策提供重要参考依据。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值