精华内容
下载资源
问答
  • 从数据到结论第四版

    2014-08-05 16:38:15
    从数据到结论第四版 吴喜之 书中所用数据资源
  • 吴喜之《统计学:从数据到结论》第四版随书光盘数据
  • 人大吴喜之老师第四版《统计学:从数据到结论》书(pdf)以及用到的数据整合在一起。希望对有需要的同行有所帮助!
  • 统计学:从数据到结论(第四版)书中需要用到的数据.已经整理好了
  • 统计学:从数据到结论(第四版)—吴喜之编著2013.3出版
  • 《统计学——从数据到结论》电子书 PPT和数据文件(吴喜之) 第二版 本书主要包括了数据的收集,数据的描述,行变量和列变量的关系:对应分析,机会的度量:概率和分布,相关和回归分析,列联表、方差分析,两组变量...
  • 统计学从数据到结论(第四版) pdf

    千次阅读 2017-12-18 16:14:46
    统计学入门必看,深入浅出,吴喜之,第四版高清完整版pdf下载电子书,想... 《统计学:从数据到结论(第4版)/全国统计教材编审委员会“十二五”规划教材》每一章的主要部分是用日常语言来引进和解释一些概念,如果可能

    统计学入门必看,深入浅出,吴喜之,第四版高清完整版pdf下载电子书,想参考学习的可以下载哦!

    下载地址:http://download.csdn.net/download/wxfx131813/9169043?utm_source=blogseo

    简介
    《统计学:从数据到结论(第4版)/全国统计教材编审委员会“十二五”规划教材》每一章的主要部分是用日常语言来引进和解释一些概念,如果可能,就通过例子来说明。如果不涉及应用,这部分就足够了。在《统计学:从数据到结论(第4版)/全国统计教材编审委员会“十二五”规划教材》例题的分析中,同时提供简洁明了的软件代码,可以使读者一边看书,一边自己计算,这会给多数想要自己动手分析数据的读者以方便。每章后面的小结中还展示了与概念及计算有关的一些数学公式以及软件的说明,使那些精力充沛的读者能更深刻地理解内容。这种安排使得本教材能够适用于各种不同水平、不同要求的读者群体。

    这里写图片描述

    展开全文
  • 吴喜之老师经典的统计学入门教程,第四版扫描版的,字体清晰,重点是包含了数据资源。本版内容都采用了R语言做数据分析。值得学习
  • 数据分析】Python :知乎数据清洗整理和结论研究

    千次阅读 热门讨论 2018-10-09 10:37:34
    知乎数据清洗整理和结论研究

    【博客地址】:https://blog.csdn.net/sunyaowu315
    【博客大纲地址】:https://blog.csdn.net/sunyaowu315/article/details/82905347
    需要数据分析、风控评分卡等相关数据、代码,请添加qq群:102755159,或留言联系笔者邮件发送!!!
    如果对金融风控、机器学习、数据科学、大数据分析等感兴趣的小伙伴,可加微信交流(邮件中备注,我会附上微信号)

    在这里插入图片描述

    知乎数据清洗整理和结论研究
    在这里插入图片描述
    1、数据清洗 - 去除空值

    • 要求:创建函数
    • 提示:fillna方法填充缺失数据,注意inplace参数

    2、问题1 知友全国地域分布情况,分析出TOP20

    • 要求:
      ① 按照地域统计 知友数量、知友密度(知友数量/城市常住人口),不要求创建函数
      ② 知友数量,知友密度,标准化处理,取值0-100,要求创建函数
      ③ 通过多系列柱状图,做图表可视化
    • 提示:
      ① 标准化计算方法 = (X - Xmin) / (Xmax - Xmin)
      ② 可自行设置图表风格

    3、问题2 知友全国地域分布情况,分析出TOP20

    • 要求:
      ① 按照学校(教育经历字段) 统计粉丝数(‘关注者’)、关注人数(‘关注’),并筛选出粉丝数TOP20的学校,不要求创建函数
      ② 通过散点图 → 横坐标为关注人数,纵坐标为粉丝数,做图表可视化
      ③ 散点图中,标记出平均关注人数(x参考线),平均粉丝数(y参考线)
    • 提示:
      ① 可自行设置图表风格

    一 导入python包

    import pandas as pd
    import numpy as np 
    import matplotlib.pyplot as plt
    % matplotlib inline
    

    二 数据读取

    data1 = pd.read_csv('C:/Users/Hjx/Desktop/知乎数据_201701.csv', engine = 'python')
    data2 = pd.read_csv('C:/Users/Hjx/Desktop/六普常住人口数.csv', engine = 'python')
    print(data1.head())
    print(data2.head())
    

    在这里插入图片描述

    三 数据清洗

    去除空值
    文本型字段空值改为“缺失数据”,数字型字段空值改为 0

    • 要求:创建函数
    • 提示:fillna方法填充缺失数据,注意inplace参数
    	def data_cleaning(df):
    	    cols = df.columns
    	    for col in cols:
    	        if df[col].dtype ==  'object':
    	            df[col].fillna('缺失数据', inplace = True)
    	        else:
    	            df[col].fillna(0, inplace = True)
    	    return(df)
    

    该函数可以将任意数据内空值替换

    data1_c = data_cleaning(data1)
    data1_c.head(10)
    

    在这里插入图片描述

    四 统计分析

    • 问题1 知友全国地域分布情况,分析出TOP20
      • 要求:
        ① 按照地域统计 知友数量、知友密度(知友数量/城市常住人口),不要求创建函数
        ② 知友数量,知友密度,标准化处理,取值0-100,要求创建函数
        ③ 通过多系列柱状图,做图表可视化
      • 提示:
        ① 标准化计算方法 = (X - Xmin) / (Xmax - Xmin)
        ② 可自行设置图表风格
    df_city = data1_c.groupby('居住地').count()  # 按照居住地统计知友数量
    data2['city'] = data2['地区'].str[:-1]   # 城市信息清洗,去掉城市等级文字
    #print(df_city.head())  
    #print(data2.head())  
    q1data = pd.merge(df_city, data2, left_index = True, right_on = 'city', how = 'inner')[['_id','city','常住人口']]
    q1data['知友密度'] = q1data['_id']/q1data['常住人口'] 
    #print(q1data.head())
    
    • 统计计算知友数量,知友密度
    def data_nor(df, *cols):
        colnames = []
        for col in cols:
            colname = col + '_nor'
            df[colname] = (df[col]-df[col].min())/(df[col].max()-df[col].min()) * 100
            colnames.append(colname)
        return(df,colnames)
    
    • 创建函数,结果返回标准化取值,新列列名
    result_data = data_nor(q1data,'_id','知友密度')[0]
    result_colnames = data_nor(q1data,'_id','知友密度')[1]
    q1data_top20_sl = resultdata.sort_values(resultcolnames[0], ascending=False)[['city',resultcolnames[0]]].iloc[:20]
    q1data_top20_md = resultdata.sort_values(resultcolnames[1], ascending=False)[['city',resultcolnames[1]]].iloc[:20]
    #print(q1data_top20_sl)
    
    • 标准化取值后得到知友数量,知友密度的TOP20数据
    fig1 = plt.figure(num=1,figsize=(12,4))
    y1 = q1data_top20_sl[resultcolnames[0]]
    plt.bar(range(20),
            y1,
            width = 0.8,
            facecolor = 'yellowgreen',
            edgecolor = 'k',
            tick_label = q1data_top20_sl['city'])
    plt.title('知友数量TOP20\n')
    plt.grid(True, linestyle = "--",color = "gray", linewidth = "0.5", axis = 'y')  
    for i,j in zip(range(20),y1):
        plt.text(i+0.1,2,'%.1f' % j, color = 'k',fontsize = 9)
    
    fig2 = plt.figure(num=2,figsize=(12,4))
    y2 = q1data_top20_sl[resultcolnames[0]]
    plt.bar(range(20),
            y2,
            width = 0.8,
            facecolor = 'lightskyblue',
            edgecolor = 'k',
            tick_label = q1data_top20_md['city'])
    plt.grid(True, linestyle = "--",color = "gray", linewidth = "0.5", axis = 'y')  
    plt.title('知友密度TOP20\n')
    for i,j in zip(range(20),y2):
        plt.text(i+0.1,2,'%.1f' % j, color = 'k',fontsize = 9)
    
    • 创建图表
      在这里插入图片描述
      在这里插入图片描述
    • 问题2 不同高校知友关注和被关注情况
      • 要求:
        ① 按照学校(教育经历字段) 统计粉丝数(‘关注者’)、关注人数(‘关注’),并筛选出粉丝数TOP20的学校,不要求创建函数
        ② 通过散点图 → 横坐标为关注人数,纵坐标为粉丝数,做图表可视化
        ③ 散点图中,标记出平均关注人数(x参考线),平均粉丝数(y参考线)
      • 提示:
        ① 可自行设置图表风格
    q2data = data1_c.groupby('教育经历').sum()[['关注','关注者']].drop(['缺失数据','大学','本科'])
    q2data_c = q2data.sort_values('关注',ascending=False)[:20]
    #print(q2data_c)
    
    • 统计计算学校的粉丝数、被关注量
    plt.figure(figsize=(10,6))
    x = q2data_c['关注']
    y = q2data_c['关注者']
    follow_mean = q2data_c['关注'].mean()
    fans_mean = q2data_c['关注者'].mean()
    plt.scatter(x,y,marker='.',
               s = y/1000,
               cmap = 'Blues',
               c = y,
               alpha = 0.8,
               label = '学校')
    
    • 创建 散点图
    plt.axvline(follow_mean,hold=None,label="平均关注人数:%i人" % follow_mean,color='r',linestyle="--",alpha=0.8)  
    
    • 添加x轴参考线
    plt.axhline(fans_mean,hold=None,label="平均粉丝数:%i人" % fans_mean,color='g',linestyle="--",alpha=0.8)   
    
    • 添加y轴参考线
    plt.legend(loc = 'upper left')
    plt.grid()
    
    • 添加显示内容
    for i,j,n in zip(x,y,q2data_c.index):
        plt.text(i+500,j,n, color = 'k')
    
    • 添加注释
      在这里插入图片描述
    展开全文
  • 网管产品需要从数据仓库的角度来看,才能获得完整的视图。数据集成真正大数据的角度来看,才能明白其中的挑战。...在Cloud和5G时代,超密度网络集成和大数据洞察需求给电信供应商带来新的挑战,从数据仓库数...

    转载自https://mp.weixin.qq.com/s/321mkZsuxqXOme5hw_83mQ

    网管产品需要从数据仓库的角度来看,才能获得完整的视图。数据集成真正从大数据的角度来看,才能明白其中的挑战。一个运行了20多年的数据架构,必然有其合理性。也正是因为年代久远,存量过多,才导致举步维艰。在Cloud和5G时代,超密度网络集成和大数据洞察需求给电信供应商带来新的挑战,从数据仓库到数据湖,不仅仅架构的变革,更是思维方式的升级。本文尝试梳理数据架构的演进过程。

     

     

      01

    数据仓库历史沿革

     

    1970年,关系数据库的研究原型System R 和INGRES开始出现,这两个系统的设计目标都是面向on-line transaction processing (OLTP)的应用。关系数据库的真正可用产品直到1980年才出现,分别是DB2 和INGRES。

     

    其他的数据库,包括Sybase, Oracle, 和Informix都遵从了相同的数据库基本模型。关系数据库的特点是按照行存储关系表,使用B树或衍生的树结构作为索引和基于代价的优化器,提供ACID的属性保证。

     

    到1990年,一个新的趋势开始出现:企业为了商业智能的目的,需要把多个操作数据库中数据收集到一个数据仓库中。尽管投资巨大且功能有限,投资数据仓库的企业还是获得了不错的投资回报率。

     

    从此,数据仓库开始支撑各大企业的商业决策过程。数据仓库的关键技术包括数据建模,ETL技术,OLAP技术和报表技术等。

     

    目前主要的数据仓库产品供应商包括Oracle、IBM、Microsoft、SAS、Teradata、Sybase、Business Objects(已被SAP收购)等。

     

    电信行业是最早采用数据仓库技术的行业之一。由于电信公司运行在一个快速变化和高速竞争的环境,拥有大量的客户基础,从而产生和存储海量的高质量数据。

     

    电信公司利用数据挖掘技术降低营销成本,识别欺诈,并更好地管理其电信网络。

     

     02

    数据仓库概念

     

    数据仓库之父Bill Inmon在1991年出版的“Building the Data Warehouse”一书中所提出的定义被广泛接受——数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、集成的(Integrated)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合,用于支持管理决策(Decision Making Support)。

     

    这是一个偏向学术的定义,却非常准确的界定了数据仓库与其他数据库系统的本质区别。

     

    “A data warehouseis a subject-oriented, integrated, time-variant, and nonvolatile collection ofdata in support of management’s decision-making process.”

    —W. H. Inmon

     

    要理解数据仓库的概念,需要从与数据库的系统的对比来看。

     

    数据库是作为“所有处理的单一数据源”出现和定义的。

     

    数据库的出现有两个驱动因素,第一是70年代以前大量应用程序和主文件的分散存放导致一片混乱和大量冗余数据。第二是直接存取存储设备的出现使得按记录寻址成为可能。基于DBMS的在线事务处理为商业发展开辟全新的视野。

     

    数据库系统的设计目标是事务处理。数据库系统是为记录更新和事务处理而设计,数据的访问的特点是基于主键,大量原子,隔离的小事务,并发和可恢复是关键属性,最大事务吞吐量是关键指标,因此数据库的设计都反映了这些需求。

     

    数据仓库的设计目标是决策支持。历史的,摘要的,聚合的数据比原始的记录重要的多。查询负载主要集中在即席查询和包含连接,聚合等操作的复杂查询。

     

    相对于数据库系统来说,查询吞吐量和响应时间比事务处理吞吐量重要的多。

     

    数据仓库和数据库系统的区别,一言蔽之:OLAP和OLTP的区别。数据库支持是OLTP,数据仓库支持的是OLAP。

     

     

    对 OLTP 和OLAP 的区别还可以有一个维度,就是及时性需求。OLTP对事务的及时性需求较高,而OLAP 则不然。

    ——曹洪伟

     

    数据仓库一般基于数据库实现,但是为部署和维护上是分离的。数据仓库可以是基于关系数据库实现的,这样的数据仓库被称为ROLAP。数据仓库也可以是基于多维数据结构实现的,这样的数据仓库被称为MOLAP。

     

     03

    数据仓库架构

     

    数据仓库是一种体系结构,而不是一种技术。数据仓库最为核心的内容分类两部分:

     

    1. 基于关系数据库的多维建模(RDBMS-based dimensional modeling)

       

    2. 基于数据立方体的OLAP查询(cube-based OLAP)

     

     

    数据仓库体系结构包含了从外部数据源或者数据库抽取数据的ETL工具。ETL还负责数据的转换,清洗,然后加载到数据仓库的存储中。一般来说,数据都会加载到存取速度较慢的存储中,以原始数据的方式保存下来。

     

    为了提高查询效率,原始数据会按主题分类,以聚合的方式存储到数据集市中,称之为聚合数据。

     

    参见下图,原始数据往往有多条聚合路径,时间维度是一个最基本的内置聚合路径,行政级别划分也是一种常见的聚合路径,产品属性也是常见的聚合路径。

     

     

    数据仓库体系结构中还包括前端的查询工具,报表工具和数据挖掘工具,被称为front-end。

     

    最后也是最重要的是,数据仓库体系结构中都会包含一个构建数据仓库的元数据仓库。

     

    元数据仓库包括数据库schema,view,用于ETL的metadata,用于数据聚合的metadata,用于报表呈现的metadata和SQL模板等。数据仓库往往采用meta data driven的架构设计,这个元数据仓库就至关重要。

     

    上文中提到的维度的概念。维度(dimension)是观察事物的角度,也是数据库事实表中用来描述数据分类的层次结构。维度在数据中就是表示为列,在SQL中用作过滤和分组。

     

    像上图这样对数据进行多个维度的抽象并借助于数据库的select,group by等基本操作形成的OLAP多维数据操作(roll up,drill down,slice and dice,pivot)被称为多维数据模型。

     

    为了方便复杂分析和可视化呈现,数据仓库中数据往往以多维模型建模。每一个维度被称为一个层级,三个维度构成一个数据立方体。维度也通常用来过滤和分组,所以数据立方体称之为group by的并。

     

    OLAP也被称为在基于数据仓库多维模型的基础上实现的面向分析的各类操作的集合。

     

    04

    数据立方体

     

    数据立方体只是多维模型的一个形象的说法。立方体其本身只有三维,但多维模型不仅限于三维模型,可以组合更多的维度。

     

    但一方面是出于更方便地解释和描述,同时也是给思维成像和想象的空间;另一方面是为了与传统关系型数据库的二维表区别开来,于是就有了数据立方体的称呼(见下图)。

     

     

    OLAP的操作是以查询——也就是数据库的SELECT操作为主,但是查询可以很复杂,比如基于关系数据库的查询可以多表关联,可以使用COUNT、SUM、AVG等聚合函数。

     

    OLAP的多维分析操作包括:钻取(Drill-down)、上卷(Roll-up)、切片(Slice)、切块(Dice)以及旋转(Pivot),逐一解释如下:

     

    Roll up (drill-up): summarize data by climbing up hierarchy or by dimension reduction
    Drill down (roll down): reverse of roll-up,from higher level summary to lower level summary or detailed data, or introducing new dimensions
    Slice and dice: project and select 
    Pivot (rotate): reorient the cube, visualization, 3D to series of 2D planes

     

    看了上图中数据立方体的各种操作,有人觉得还是很抽象。下面给一个SQL的例子,说明数据立方体的具体操作。

     

    select//公式必须配合group by使用
        tmp.time,
        tmp.id1,
        tmp.id2,
        SUM(counter1) counter1,
        SUM(counter2) counter2
    from//双层SQL,实现聚合路径
        (
            select//trunc实现时间维度的变化
                    trunc( p.time, 'min' ) time,
                    "country".country_id id1,
                    "city".city_id id2,
                    SUM(p.counter1) counter1,
                    SUM(p.counter2) counter2
            from
                 table "country",
                 table "city",

                 table p

            where//选择计算的城市
                    "city".city_id in ( '北京','上海','广州' )
                    and time >= to_date('2016/01/01 00:00:00', 'yyyy/mm/dd hh24:mi:ss')
                    and time < to_date('2017/01/01 00:00:00', 'yyyy/mm/dd hh24:mi:ss')
            group by//改变行政维度
                    trunc( p.period_start_time, 'mi' ),
                    "country".country_id,
                    "city".city_id
        ) tmp
    group by//行政维度可以不变
        tmp.time,
        tmp.id1,
        tmp.id2

     

    OLAP的优势是基于数据仓库面向主题、集成的、保留历史及不可变更的数据存储,以及多维模型多视角多层次的数据组织形式,如果脱离的这两点,OLAP将不复存在,也就没有优势可言。

     

    基于多维模型的数据组织让数据的展示更加直观,它就像是我们平常看待各种事物的方式,可以从多个角度多个层面去发现事物的不同特性,而OLAP正是将这种寻常的思维模型应用到了数据分析上。

     

    05

    数据库建模

     

    如果把多维数据模型映射到关系数据库和SQL查询上(ROLAP),数据库该如何设计呢?

     

    大多数数据仓库都采用“星型模型”来表示多维数据模型。在星型模型中,只有一个事实表,并且每一个维度有一个单独的表。

     

    事实表中的每一个元组都是一个外键指向维度表的主键。每一个维度表的列是组成这个维度的所有属性。如下图所示。

     

     

    另外一个常见的数据库设计方法是“雪花模型”。雪花模型通过定义单独的维度表,改进了星型模型中没有明确提供维度层级的问题。是谓维度表的正则化,如下图。但星型模型更适合浏览维度层级。

     

     

    除了事实表和维度表,数据仓库还需要创建pre-aggregation 表用于存储挑选的摘要数据。

     

    06

    大数据架构

     

    1010data公司高级软件工程师ADAM JACOBS博士在ACM通讯发表的《大数据病理学》指出大数据的病理在于分析而不在于存储——我们期望从成年累月积累的数据中在几分钟或者几秒内获得分析结果!

     

    其实作者指出了关系数据库的在大数据时代的病理,如下图所示一个数据仓库分析操作的SQL在数据量超过100万条记录时的性能表现。

     

    The pathologies of big data are primarily those of analysis.

     

     

    因此,数据仓库被认为是对数据库查询性能问题的一个解决方案。在90年代,人们已经都面临一个数据爆炸的挑战,为了解决那个时代的“大数据”问题,数据仓库应运而生。

     

    在1980s早期,大数据是指数据集超出了磁带机的处理能力。

    在1990s,大数据是指数据集超出了Microsoft Excel或者桌面PC的处理能力。

    今天,大数据是指数据集超出了关系数据库的处理能力。

     

    站在大数据时代回望数据架构的发展历史,然后从技术的角度思考大数据的定义:

     

    当前流行的技术处理不了的数据,都是大数据。

     

    数据仓库的本质是把数据变小,一般有两个方法:

    第一是通过抽取,转换,加载,清洗。

    第二是通过pre-aggregation获得数据的一份单独拷贝。因此数据仓库被定义为:

     

    为了方便查询分析,把数据从关系数据库中单独拷贝一份出来,然后通过ETL或者ELT转换。

     

    对于大数据,仅仅简单构建一个数据仓库是不够的。数据应该如何结构化才能更便于分析?数据库和分析工具应该如何设计才能更高效的处理大数据?

     

    意识到大数据固有的时间属性和空间属性,是我们理解关系数据库处理大数据时存在性能问题的重要前提。

     

    如果说数据是我对世界的观察记录的话,大数据是我们对世界在时间和/或空间维度的重复观察。这就是大数据的时空特点,也是数据仓库多维模型的构建原理。

     

    当今的主流数据库模型是关系数据库,并且该模型显式地忽略表中的行的顺序。这将不可避免导致应用以非顺序的方式查询数据。

     

    在这种情况下,传统的数据架构可以通过引入缓存的方式缓解性能问题,而大数据则会大大放大了次优访问模式对性能的影响。

     

    如下图所示随机访问和顺序访问的差别。

     

     

    因此我们要引入,也是我们要推导的结论:逆正则化(逆规范化)和顺序存储,不可更改数据集(append only,immutable data set)。顺着存储栈往下走,直到数据存储格式。

     

    是时候放弃关系数据库了。

     

    简单解释一下逆正则化(逆规范化)。经典关系数据库介绍的所有范式指导思想都是正则化,减少重复数据,如果重复,则单独创建一个表,使用外键关联,目的是节省存储空间(那个时候存储很昂贵)。

     

    逆正则化则是允许列之间的重复。如下图所示。

     

     

    我有一个看法,NoSQL的键值存储即是用极简的非结构化来实现结构化存储的逆规范化。

     

    键值存储是极简的结构化,也是极简的非结构化。

     

    关于顺序存储,不可更改数据集,可以参考Pat Helland《Immutability Changes Everything》,和我上面的介绍是一致的。

     

    关于传统关系数据库的讨论还有数据库知名专家,2015年图灵奖得主Michael Stonebraker撰写的《One Size Fits All》,分别从数据仓库和流处理两个方面探讨了数据库25年来一招不变的灵丹妙药已经不再适合现在的业务发展。

     

    文章的中心思想和Pat Helland提出lambda架构也有异曲同工之妙。

     

     

    speed layer
    (i) compensates for the high latency of updates to the serving layer 
    (ii) deals with recent data only

     

    serving layer
    (i) indexes the batch views 
    (ii) Can be queried in low-latency, ad-hoc way

     

    batch layer
    (i) managing the master dataset (an immutable, append-only set of raw data),
    (ii) pre-compute the batch views

     

    Lambda架构统一了传统数据仓库时代的半实时在线查询,刚刚兴起的实时流处理(Online ),和批处理数据分析(Offline),给数据架构的设计人员提供了一个全面的参考。

     

    再结合半结构化,结构化数据存储,SQL and No-SQL混合,我们可以得到下面一个典型的数据架构:

     

     

    上面的讨论是架构的微观考虑,让我们回到大数据架构的宏观指导上来。

     

    目前业界对大数据的一个共识的定义是5个V。如下图所示。

     

    从技术的角度需要专注于其中的三个V,通过阅读大量文献,我得到下面一个范型:

    1. 借力开源软件处理数据多样性挑战

    2. 使用分布式技术解决数据容量问题

    3. 使用实时流处理技术解决数据速度问题

     

     

    传统的OLAP 而言,实时性需求不明显,实时分析的强需求是导致大数据技术的一个原因。

    ——曹洪伟

     

    基于此,我个人推荐的大数据架构是BDAS, the Berkeley Data Analytics Stack。这个架构中不仅包含上面提到的三个思考维度,还提供了整个大数据架构blueprint。内容很多,使用时各个击破,在此不赘述。

     

     

    谈了那么多,总结一下大数据架构的几个要点:

    • 分布式计算

    • 实时流处理

    • Online和Offline

    • SQL和No-SQL:混合架构也是演进路径之一

    • 逆正则化(逆规范化)和顺序存储,不可更改数据集

     

    07

    数据湖架构

     

    Pentaho的CTO James Dixon 在2011年提出了“Data Lake”的概念。在面对大数据挑战时,他声称:不要想着数据的“仓库”概念,想想数据 的“湖”概念。数据“仓库”概念和数据湖概念的重大区别是:数据仓库中数据在进入仓库之前需要是事先归类,以便于未来的分析。这在OLAP时代很常见,但是对于离线分析却没有任何意义,不如把大量的原始数据线保存下来,而现在廉价的存储提供了这个可能。

     

    Nearly unlimited potential for operational insight and data discovery. As data volumes, data variety, and metadata richness grow, so does the benefit.

     

    形象的来看,如下图所示,数据湖架构保证了多个数据源的集成,并且不限制schema,保证了数据的精确度。数据湖可以满足实时分析的需要,同时也可以作为数据仓库满足批处理数据挖掘的需要。数据湖还为数据科学家从数据中发现更多的灵感提供了可能。

     

     

    和数据仓库对比来看,数据仓库是高度结构化的架构,数据在转换之前是无法加载到数据仓库的,用户可以直接获得分析数据。而在数据湖中,数据直接加载到数据湖中,然后根据分析的需要再转换数据。

     

     

    下面我整理了数据仓库和数据湖在多个维度的详细对比。

     

     

    总结起来,数据湖架构有一下几个显著的特点:

     

    1. 数据存储:大容量低成本

       

    2. 数据保真度:数据湖以原始的格式保存数据

       

    3. 数据使用:数据湖中的数据可以方便的被使用

       

    4. 延迟绑定:数据湖提供灵活的,面向任务的数据绑定,不需要提前定义数据模型

     

     

    当然,对于数据湖架构的批评也是不绝于耳。有人批评说,汇集各种杂乱的数据,应该就是数据沼泽。Martin Fowler也对数据湖中数据的安全性和私密性提出了质疑。

     

    08

    电信运营大数据特点

     

    电信运营大数据对应于TMN/FCAPS模型中的电信设备管理数据。如下图所示。

     

    • Fault Management

    • Configuration Management

    • Accounting Management

    • Performance Management

    • Security Management

     

    电信运营数据的特点是数据多样化要求不高,大多数数据是结构化数据,数据容量要求不是特别高,数据的实时处理要求最高。

     

     

    电信运行数据架构强调演进。步步为营,向前兼容,不是一蹴而就的。

     

     

    09

    演进路径实践

     

    现在的架构是一个典型的数据仓库架构。如下图所示。现在的架构设计有以下几个要点:

     

    • ROLAP:基于Oracle数据库,但并没有用Oracle的数据仓库,单独构建数据仓库。

       

    • Meta Data Driven的架构设计:Meta Data覆盖整个数据pipe。当新的数据需要集成,只需要编辑新的Meta Data,系统不需要做任何改变。

       

    • Schema设计:主要有两类表:原始数据表和聚合表; 每类表都有三层结构:表,用作聚合的视图,用作报表的视图。不同的应用使用不同的视图来操作数据。当原始的数据表结构变化时,可以根据需要更改不同层次的视图。

       

    • Schema的演化。这是一个比较大的主题,关系数据是schema on write的,任何列的增加都需要alter表结构,这会带来客户系统很长时间的downtime。因此原始表采用1000列的设计(Oracle支持的最大列数),并且列只增加,不减少,避免了数据库schema的变化,降低不同release之间migration的成本。

       

    • 数据存储:定期清除原始数据,只保留聚合数据。

     

     

    为什么现在的架构需要演进呢?

     

    首先当前架构面临扩展性的挑战。数据库扩展性主要依赖于Oracle RAC解决方案,Oracle RAC不是一个线性的扩展方案,同时也增加了很多管理和维护成本。并且由于硬件的限制,垂直性扩展不是一个长期的解决方案。

     

    其次,当前的存储成本太昂贵,因此去IOE成为目标。

     

    第三,实时处理需求也是驱动架构演进的重要因素。

     

    然后,架构变成了这样子:

     

     

    传统 SQL 基于云平台重新定义为 NewSQL,那么 Data Warehouse 也可以重新定义 New Data Warehouse。

    ——曹洪伟

     

    这样的架构是不是New Data Warehouse,我不知道,可能是。在这样的架构下,最大的变化就是更换Oracle数据为HDFS,并使用SQL on Hadoop(比如Hive SQL,Spark SQL)等保持SQL接口,维持了前端分析引擎的不变。Meta Data部分依然保持了原来的数据建模,并没有改变数据集成方式。这样的架构继承了经典的仓库架构,提高系统扩展性,在满足业务需求的同时,最大化的保护已有投资。

     

    在架构演进这个过程中,有一些lesson learned:

     

    • SQL on Hadoop是必须的。客户希望保持SQL接口的连续性。

       

    • 混合数据仓库架构:针对不同的业务采用不同存储方案(Oracle 和 HDFS),数据量大的采用HDFS存储,数据量不够大的(不存在扩展性挑战的)可以依然使用关系型数据库。

       

    • 逆规范化对性能的影响重大。通过对逆规范设计,可以达到关系数据库的查询性能。但是对于逆规范化是否存在其他影响,还需要研究。

       

    • 相对于sequence files 和RC files,ORC文件格式的性能是最好的。

       

    • 实时pipe使用storm和Kafka实现。

     

    就像 NewSQL 那样,可以有 New Data Warehouse 的。就是 Data Warehouse与云计算的融合,即数据仓库的存储层在云平台,采用分布式系统。

     

    对应用侧而言, 原有的方式依旧有效,这样就不会资产浪费,而是有效的继承, 也是通往数据湖的一个较稳妥的步骤。

    ——曹洪伟

     

    老曹这么一说,豁然开朗。我们在谈数据仓库架构向大数据架构演进的时候,其实我们在谈New Data Warehouse架构。

     

    就像当初数据仓库的出现是对数据库系统存在的限制进行补充一样,目前的大数据平台是对数据仓库系统存在的问题进行补充。

     

    他们的技术思路,技术架构,用户需求某种程度上是一致的,或者说核心的思想是一致的。不一致的地方仅仅是为了满足性能而做的技术方案的调整。

     

    首先看数据集成架构。如下图,基于Hadoop的数据集成架构和基于关系数据库的传统数据集成架构是一致的。

     

    不同地方在于由于数据量的增大,左边的架构采用具有逆正则化(逆规范化)和顺序存储,不可更改数据集等特点的Hadoop平台存储数据。

     

     

    其次看数据分析方法。虽然说基于Hadoop的数据集成架构采用了Hadoop数据存储平台(内置MapRdecue数据处理引擎)。

     

    其数据操作,数据分析方法在思想上是一致的——从大量的数据集中获得由价值的信息——如下图所示,数据仓库的操作语句(group-by-aggregation)与MapRdecue的操作函数对应关系。

     

     

    所以MapRdecue的核心思想就是在数据分片的基础上把数据仓库中的group-by-aggregation操作转换成分布式执行,MapRdecue和传统数据仓库的思想是一致的。

     

    The Map-Reduce programming model provides a good abstraction of group-by-aggregation operations over a cluster of machines.


    The programmer provides a map function that performs grouping and a reduce function that performs aggregation. 


    The underlying run-time system achieves parallelism by partitioning the data and processing different partitions concurrently using multiple machines.

     

    所谓创新,继承和发展,大概如此吧。怪不得Michael Stonebraker撰文《MapReduce: A major step backwards》指出MapReduce是一个巨大倒退,并引发了他和DeWitt之间的大论战。

     

    Google在2010年还为MapRdecue申请了专利,但我认为MapReduce不算是重大基础性创新,本质上还是云时代的数据仓库技术(New Data Warehouse)。但其作为Google三架马车的风头让人们大大忽略了传统数据仓库的技术思想,误导了很多年轻学子的技术崇拜。

     

    所以本文尝试提供一个技术脉络:Data Warehouse->New Data Warehouse->Data Lake,阐述大数据技术背后的技术架构演进,抛砖引玉,欢迎批评指正。

     

    A giant step backward in the programming paradigm for large-scale data intensive applications.

     

    Not novel at all -- it represents a specific implementation of well known techniques developed nearly 25 years ago.

     

    To draw an analogy to SQL, map is like the group-by clause of an aggregate query. Reduce is analogous to the aggregate function (e.g., average) that is computed over all the rows with the same group-by attribute. 

     

    在New Data Warehouse架构的基础上,如何向Data Lake演进?对电信行业来说,NFV和SDN正在推动电信网络设备控制平面和数据平面的分离,电信设备数据会走向数据湖架构。

     

    电信设备数据融合,运营数据融合,最终会走向一个大融合。总结起来,电信大数据对于数据湖架构的拥抱,来自于以下四个方面的驱动。我用四个推导公式,如下:

     

    • 5G->BigData (Semi-Structured and Unstructured) -> Modern Data Architecture for Enterprise -> Data Lake Storage Architecture -> Data Lake

    • Cloud -> Network Function Cloudification -> Network Function Virtualization -> stateless VNF -> Distributed Sharing Storage -> Data Lake

    • Distributed analytics -> Data Lake

    • Hierarchy architecture -> Flat operations architecture -> Data Lake

     

    我们尝试过在数据加载过程中自学习的产生数据库schema,证明这个思路是可行的。基于结构化的数据,这个过程非常容易。但对于非结构化的数据,还是存在很大的挑战。

     

    使用机器学习的方式,模型训练成本恐怕和人工抽取schema的工作量是相当大的。但是我也看到在一些CMDB的数据库宣称已经支持数据库schema的自动升级,等我调研一下再说。

     

    来源:data-lake

     

    作者:石头

    展开全文
  • 统计数据可以发现,96.5%的商品价格介于1元1000元之间,我们剔除这些商品(让图片没有那么尖锐难看),做出了如下价格-销量的点图: 横轴代表价格(单位:元),纵轴代表销量(单位:千)点越高,说明销量越大。...

    640?wx_fmt=gif


    一、缘起


    我在杭州有位朋友,提到有家做社交的电商很火,叫拼多多,我没有在意,直到有一天,我居然在电视上看到了它的广告,广告画面活蹦乱跳,余音绕梁,我惊呆了,想知道这是何方YL,不,何方神圣,网上搜了下,流传着各种版本,比如月GMV超过400亿,已经威胁到京东淘宝等。


    辣么,怎么样才能知道拼多多的这些信息呢?比如,拼多多到底有多少在售商品,卖了多少钱?不单单是拼多多的投资人,也许淘宝京东,也想知道。


    我有个简单的想法,不一定对,就是爬下拼多多的商品条目,这些条目至少有分类,价格,已出售数量等信息,做一个简单的加法,是不是就可以得到GMV了呢?


    当然,缺点也很明显,就是由于第一次获取数据,只能得到这个时间点的切面信息,其他的信息, 比如每日每周每月的数据,要持续的获取才能得到。


    当然,我们先走第一步,开个头。现在,我们就从一个切面来窥探下。


    二、我们获取了多少商品条目?


    49.78万,大约50万条。这些数据全不全,肯定不全,但是基本上覆盖了拼多多的绝大部分在售商品,再退一步,数据的量级应该是没错的(数据获取时间:2018-04-15)。


    640?wx_fmt=jpeg


    三、这些商品总共卖出了多少钱?


    50万条商品,每件商品有不同的SKU,比如某个店家的芒果,下面有4个SKU,5斤的小的拼单价20元,5斤的大的30元, 8斤的小的40元,8斤的大的50元, 分别卖出了400份,300份,200份,100份,那么这个商品总销售额就是400*20 + 300*30+ 200*40+ 100*50 = 30000元。


    如此,我们就可以计算出总计50万商品的销售额。


    288亿。


    我对电商是个外行,一般商品上面的“已卖出9527件”,问下各位电商业界人士,这个是当月的销售数量吗?如果是的话,那288亿就是月GMV,考虑到本月只过去一半,辣么,传言的“拼多多月GMV超过400亿”,或许,空穴不来风。

    288亿是一个什么概念呢,我们搜索了京东财报的公开新闻:


    京东2017年GMV接近1.3万亿,净利润50亿元。


    可以估计去年京东的月均GMV大概是1100亿,电商的GMV同比可达50%+增长,胡乱估计京东2018月GMV大概1500亿,那么,拼多多的GMV大约为京东的三分之一。


    这个, 还是有点吃惊的啊。


    四、销售额前十的品类是哪些?


    了解一个电商平台销售额前几位的品类,有助于判断它的竞争优势,比如电器数码等产品之于京东,服饰箱包之于淘宝,图书音像之于当当。


    拼多多的主打品类是什么呢?


    电商喜欢将商品分为三级品类,比如食品-水果-猕猴桃。 以下我们列出一级类目和三级类目排名前十的数据。


    全部一级品类成交额:


    640?wx_fmt=jpeg


    一级类目销售额前10的品类:


    640?wx_fmt=jpeg


    前三名分别是食品,母婴,女装。成交额分别是40亿,31亿,27亿。厉害了。


    来看看前三名的销售额占所有36个一级类目的成交额比例,足足三分之一强。


    640?wx_fmt=jpeg


    三级类目销售额前10的品类:


    640?wx_fmt=jpeg


    第一名是抽纸,卖了5个多亿!


    我有点好奇,想知道是什么牌子的抽纸卖了这么多呢?同时也为了验证数据的准确性,从数据库中找到了(历史)销量最高的抽纸,销量508万。


    根据名字,手动在拼多多APP找到了这款产品,它的名字也许你没有听过,是这样的:


    640?wx_fmt=jpeg


    嗯,数据是正确的(这2天又多了2万,手机传过来的,这图怎么这么大)。


    作为对比, 看了京东销量最高的单品,维达是320多万,和拼多多排名第二的,一个名叫“初采”的抽纸销量(343万)差不多。


    五、销售量前二十的商品是哪些?


    商品的销售量代表了人气,当然,也许一个商品有人会买多份,无论如何,我们可以从中看出拼多多最多客户购买的产品是什么:


    640?wx_fmt=jpeg


    第一名还是抽纸,第二名不可描述,第三名伞(希望大家能够点击查看原图,否则压缩的看不清了啊)。后面还有几个也是抽纸,嗯,我就不懂了,为什么这么多抽纸,拼多多主要就是卖纸的?


    销量前二十的商品,销售量都在200万以上。给我的感觉,有点类似于超市,更确切地说,有点像杂货铺,或者,类似于小时候村头的小卖部,以实用的生活用品为主,实在,方便,实惠。


    六、商品一般都卖什么价格?

    什么价格区间的商品销量最好?


    那么下一个,你可能要问了,约50万的商品,大部分在什么价格区间呢,价格和销量有什么关系?


    我们看看下面的商品数量-价格区间:


    640?wx_fmt=jpeg


    从商品数量来说, 超过一半(约57%)的商品价格介于0~50之间,大部分(约75%)的商品价格介于0~100元。


    从统计数据可以发现,96.5%的商品价格介于1元到1000元之间,我们剔除这些商品(让图片没有那么尖锐难看),做出了如下价格-销量的点图:


    640?wx_fmt=jpeg


    横轴代表价格(单位:元),纵轴代表销量(单位:千)点越高,说明销量越大。还是很尖锐,看起来价格超过200就很平了啊,再看一个价格介于1~200的点图:


    640?wx_fmt=jpeg


    请点击查看原图,这样更清晰。我们从图中可以看到,销量过100万的商品,价格低于50。除了有2个零星的点,价格在100左右,销量也在100万上下。


    需要说明的是,销量随着价格锐减,这是很正常的,京东淘宝做个点图估计也差不多。


    七、再细化一点可以吗?


    可以的。食品是销售额第一的品类,衣食住行,不意外,食品种类繁多,辣么,我们可能要问,从成交总额来说,排名前十的三级食品品类是哪些呢?分别占比多少?


    640?wx_fmt=jpeg


    第一名坚果炒货(成交额5亿),第二名白酒(2.8亿),第三名方便速食(2.5亿),前十名的三级类目成交额都过亿元。


    坚果炒货销量前10的商品:


    640?wx_fmt=jpeg


    憨豆熊……厉害了。第二名是康梦,想起小时候吃过一款零食,康辉,不知道现在还在不在。


    白酒呢,很好奇。


    640?wx_fmt=jpeg


    五粮液茅台?不过仔细一看不是茅台,是茅台镇的酒,所以。拼多多上面白酒卖的这么多,还是有点意外的。


    八、什么水果在拼多多最受欢迎?


    我注意到,水果生鲜是作为一个单独的一类品类存在的,生鲜水果是第二品类,辣么,三级目录中,哪一种水果最受欢迎呢?


    芒果第一!请看图(芒果。那就给个黄色吧),第二名是苹果,第三名是奇异果(就是猕猴桃吧)


    640?wx_fmt=jpeg


    从销售量来说,芒果确实也是当之无愧的第一名,关键词“越南进口”非常显眼。如此看来,拼多多为跨境贸易也做了不少贡献。


    640?wx_fmt=jpeg


    九、多余的话


    在这个万众创新,消费升级的年代,拼多多这样的社交电商的出现,在满足普通人民物美价廉需求方面,大获成功,让我有种错觉,难道这代表了我们的社会反而陷入了消费降级的陷阱吗?


    因为拼多多的这些数据, 我想起几年前读过的一位名为三浦展的作者写的一本书:《下流社会》,这里的下流社会并不是贬义,只是探讨日本社会的社会消费,阶层团块。


    “下流社会”这个术语一经在日本出现,立即引爆讨论。因为社会“向下流动”的趋势正在世界悄然成形,日美欧曾引以为傲的中产阶层正在消失,出现“上流”与“下流”的两极分化。


    年轻一代源源不断加入的“下流社会”,其最大的特征并不仅仅是低收入,更在于沟通能力、生活能力、工作意愿、学习意愿、消费意愿等的全面下降,也可以说是“对全盘人生热情低下”。社会下沉的拉力愈来愈大,当全球社会纷纷向下流动,中国,能预防吗?


    但是,拼多多的兴起也许是另外的情况,因为中国太大了,也许真的是消费升级,只是不是一二线城市居民的消费升级呢?


    拼多多销量最好的单品是什么?抽纸。


    这让我想起,小时候在农村,去洗手间方便,额说错了,是去茅房如厕,那时候哪里有什么清风维达和初采啊,就是用过的书本练习册什么的。现在大家生活水平提高了,开始用抽纸卷筒纸,看,这,算不算消费升级呢?


    来源:吴一

    https://zhuanlan.zhihu.com/p/35707735

    版权归原作者所有,转载仅供学习使用,不用于任何商业用途,如有侵权请留言联系删除,感谢合作。


    数据与算法之美

    用数据解决不可能


    640?wx_fmt=jpeg

    长按扫码关注

    展开全文
  • 数据挖掘过程:目标任务再技术

    千次阅读 热门讨论 2013-04-27 13:34:14
    制定数据挖掘问题:目标任务再技术 一般数据挖掘的良性循环描述为一个业务流程,其中把数据挖掘划分为4个阶段: (1) 识别问题 (2) 将数据转换为信息 (3) 采取行动 (4) 度量结果  本文的重点转向把...
  • [入门数据分析的第一堂课] 这是一门为数据分析小白量身打造的课程,你网络或者公众号收集很多关于数据分析的知识,但是它们零散不成体系,所以第一堂课首要目标是为你介绍: Ø  什么是数据分析-知其然才知...
  • 数据挖掘与数据分析

    万次阅读 多人点赞 2018-05-28 13:58:14
    数据挖掘和数据分析都是从数据中提取一些有价值的信息,二者有很多联系,但是二者的侧重点和实现手法有所区分。 数据挖掘和数据分析的不同之处: 1、在应用工具上,数据挖掘一般要通过自己的编程来实现需要掌握编程...
  • 结论一: 如果在struts.xml中有以上代码,那么Action中的东西将无法再用Struts2的标签取,利用你可以观察此时Value Stack Contents和Stack Context根本不存在Action中的属性、方法等东西。   结论二: ...
  • 数据导入优化1、一次插入多行数据1.1 准备测试表及数据1.2 导出一条 SQL 包含多行数据数据文件1.3 导出一条SQL只包含一行数据数据文件1.4 导入时间的对比1.5 结论2 、关闭自动提交2.1 对比开启和关闭自动提交的...
  • 来看看,作为70后、80后、90后、95后的你,大数据把你分析对了嘛?...70后、80后、90后、95后职场人大数据调查 Q1 Q2 Q3 Q4 Q5 70后、80后、90后、95后职场人大数据调查 Q1 70后、80后、90后、95后职场...
  • 测试结论

    千次阅读 2019-06-28 09:32:00
    需求大纲:当前的这个版本,到底包含了哪些大的需求点 6.Bug数据分析:bug等级,分布 测试结论 1. 经过前后两个阶段的多轮测试,虽遗留了一些缺陷没有解决,但系统功能已趋于稳定,且项目确定的范围、策略和计划...
  • 目的:从数据中挖掘规则、验证猜想、进行预测 2 数据分析的流程 明确目的(提出问题)->准备数据->数据解析->分析数据->获得结论->成果可视化 3 为什么要学习数据分析 1、有岗位需要 2、是机器学习...
  • 如同“站在风口上的猪”,但很多人只是停留在耳闻的阶段,并不知道大数据真正的用途或是实操在哪,这其中也包括从事数据的朋友,无法落地实施,但数据却日益庞大,如何处理数据,如何让数据从一成为急需解决的...
  • 开发视角看数据分析

    千次阅读 2021-02-01 16:20:00
    导读:数据分析就是要杂乱无章的数据中将某个或者某些核心指标做提炼、归纳、总结,找到某个规律,但往往得到的结论不足以支撑下一步的动作,劳心劳力最后无果,又要再继续深挖。本文并不是一篇专业...
  • 理论模型我们回到现实,也即是说当我们的男主在时间序列上遇到了100个女主(N=100),那么我们的男主要认识37次女主(k=37,),以进行判断真命女主,在37次接触中,只要碰到第37个开始,比前36个价值最高的女主还高...
  • logstash导入数据到Elasticsearch踩过的坑详解

    万次阅读 热门讨论 2019-04-16 20:04:03
    这篇主要记录在导入数据时候踩的坑,这些坑总共花费我小一天的时间,记录一下。 二、正文 1、logstash显示在导入数据,ES也成功新建了索引,但是没数据       最开始遇到的是这个坑...
  • 用Python分析2000款避孕套,得出这些有趣的结论

    万次阅读 多人点赞 2019-09-18 11:34:06
    现在为止,我们的淘宝教程已经写了第四篇,前三篇分别是: 第一篇:Python模拟登录淘宝,详细讲解如何使用requests库登录淘宝pc端。 第二篇:淘宝自动登录2.0,新增Cookies序列化,教大家如何将cookies保存起来...
  • 数据库, 数据仓库, 数据集市,数据湖,数据中台

    千次阅读 多人点赞 2019-02-22 16:21:47
    数据仓库和数据集市的区别 作者:修鹏李 出处:CSDN 大数据:数据仓库和数据库的区别 作者:南宫蓉 出处:简书 第一篇:数据仓库概述 第二篇:数据库关系建模 作者:穆晨 出处:CNBLOS 摘要 本文简要介绍...
  • 2019年就这么匆匆过去了,就在前几天国家电影局发布了2019年中国电影市场数据数据显示去年总票房为642....不过作为一名严谨求实的数据分析师,我官方数据中看出了一点端倪:国产票房增幅都已经高达8.65%了,为什...
  • 3.良好的数据敏感度,能海量数据提炼核心结果,有丰富的数据分析、挖掘、清洗和建模的经验; 4.有成本优化效能提升数据分析经验,尤其是供应链相关的优先。 腾讯数据挖掘工程师的岗位要求: 严谨的逻辑思维能力和...
  • 我的数据挖掘之路——菜鸟实战(转载)  (2015-03-31 14:01:30) 转载▼ 标签:  股票   数据挖掘   挑战赛   实习   互联网公司 分类: 人在职场 导 ...
  • 数据质量控制与数据治理

    千次阅读 2018-09-29 17:18:08
    数据质量控制与数据治理 ...对于大多数数据分析师来说,数据分析方法和技术都不存在问题,只要有干净完备的数据数据价值都可以得到呈现,但是如果数据本身是错的,分析出来的结论未必有用,保证数据质量是大数...
  • 数据分析

    千次阅读 多人点赞 2019-06-06 17:03:02
    数据分析:数据分析是指用适当的统计分析方法对收集来的大量数据进行分析,提取有用信息和形成结论而对数据加以详细研究和概括总结的过程。这一过程也是质量管理体系的支持过程。在实用中,数据分析可帮助人们作出...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 471,482
精华内容 188,592
关键字:

从数据到结论