美文网首页
数据分析实战45讲 笔记六

数据分析实战45讲 笔记六

作者: 小蛙的根据地 | 来源:发表于2019-12-15 22:50 被阅读0次

    14丨数据可视化:掌握数据领域的万金油技能

    数据可视化的视图都有哪些?

    常用的可视化视图超过 20 种,分别包括:文本表、热力图、地图、符号地图、饼图、水平条、堆叠条、并排条、树状图、圆视图、并排圆、线、双线、面积图、双组合、散点图、直方图、盒须图、甘特图、靶心图、气泡图等。

    视图的使用目的
    分布、偏差、量级、时间相关、相关性、地图、局部/整体、排名、流动

    数据可视化工具

    商业智能分析:Tableau 和 PowerBI
    可视化大屏的软件 DataV 和 FineReport
    前端可视化组件 :可视化组件都是基于 Web 渲染的技术的。所以你需要了解一下几个典型的 Web 渲染技术:Canvas、SVG 和 WebGL。简单来说,Canvas 和 SVG 是 HTML5 中主要的 2D 图形技术,WebGL 是 3D 框架。

    如何开始数据可视化的学习

    1. 重点推荐 TableauTableau 在可视化灵活分析上功能强大,主要目标用户更多是较专业的数据分析师。同时在工作场景中使用率高,因此掌握 Tableau 对于晋升和求职都很有帮助。不过 Tableau 是个商业软件,收费不低。而且上手起来有一些门槛,需要一定数据基础。
    2. 使用微图、DataV前面我给你讲过八爪鱼的使用,微图和八爪鱼是一家公司的产品,使用起来非常方便,而且免费。当你用八爪鱼采集数据之后,就直接可以用微图进行数据可视化。DataV 是阿里推出的数字大屏技术,不过它是收费的产品。它最大的好处,就是可以分享链接,让别人可以在线浏览,不需要像 Tableau 一样安装客户端才能看到数据可视化的结果。另外 DataV 有一些模板,你直接可以使用。你可以先使用微图和 DataV 作为你的数据可视化体验工具,因为成本低,上手起来快。这样你对数据可视化可以有个直观的了解。如果你想从事数据可视化这份工作,你可以花更多的精力去研究和学习 Tableau。
    3. Python 可视化Python 是数据分析的首选语言,如果你不进行编程,可以使用我在上文中提到的数据可视化的工具。如果你的目标是个数据挖掘工程师,或者算法工程师,那么最重要的就是要了解,并且熟练掌握 Python 的数据可视化。

    15丨一次学会Python数据可视化的10种技能

    可视化视图都有哪些?

    按照数据之间的关系,我们可以把可视化视图划分为 4 类,它们分别是比较、联系、构成和分布。我
    这四种关系的特点:
    比较:比较数据间各类别的关系,或者是它们随着时间的变化趋势,比如折线图;
    联系:查看两个或两个以上变量之间的关系,比如散点图;
    构成:每个部分占整体的百分比,或者是随着时间的百分比变化,比如饼图;
    分布:关注单个变量,或者多个变量的分布情况,比如直方图。

    同样,按照变量的个数,我们可以把可视化视图划分为单变量分析和多变量分析。
    单变量分析指的是一次只关注一个变量。比如我们只关注“身高”这个变量,来看身高的取值分布,而暂时忽略其他变量。
    多变量分析可以让你在一张图上可以查看两个以上变量的关系。比如“身高”和“年龄”,你可以理解是同一个人的两个参数,这样在同一张图中可以看到每个人的“身高”和“年龄”的取值,从而分析出来这两个变量之间是否存在某种联系。

    十种常见视图的概念

    散点图
    散点图(scatter plot),将两个变量的值显示在二维坐标中,非常适合展示两个变量之间的关系。除了二维的散点图,还有三维的散点图。

    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    import seaborn as sns
    # 数据准备
    N = 1000
    x = np.random.randn(N)
    y = np.random.randn(N)
    # 用 Matplotlib 画散点图
    plt.scatter(x, y,marker='x')
    plt.show()
    # 用 Seaborn 画散点图
    df = pd.DataFrame({'x': x, 'y': y})
    sns.jointplot(x="x", y="y", data=df, kind='scatter');
    plt.show()
    

    直方图
    直方图是比较常见的视图,它是把横坐标等分成了一定数量的小区间,这个小区间也叫作“箱子”,然后在每个“箱子”内用矩形条(bars)展示该箱子的箱子数(也就是 y 值),这样就完成了对数据集的直方图分布的可视化。可以看到变量的数值分布。

    
    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    import seaborn as sns
    # 数据准备
    a = np.random.randn(100)
    s = pd.Series(a) 
    # 用Matplotlib画直方图
    plt.hist(s)
    plt.show()
    # 用Seaborn画直方图
    sns.distplot(s, kde=False)
    plt.show()
    sns.distplot(s, kde=True)
    plt.show()
    

    条形图
    条形图可以帮我们查看类别的特征。在条形图中,长条形的长度表示类别的频数,宽度表示类别。

    
    import matplotlib.pyplot as plt
    import seaborn as sns
    # 数据准备
    x = ['Cat1', 'Cat2', 'Cat3', 'Cat4', 'Cat5']
    y = [5, 4, 8, 12, 7]
    # 用Matplotlib画条形图
    plt.bar(x, y)
    plt.show()
    # 用Seaborn画条形图
    sns.barplot(x, y)
    plt.show()
    

    折线图
    折线图可以用来表示数据随着时间变化的趋势。

    import pandas as pd
    import matplotlib.pyplot as plt
    import seaborn as sns
    # 数据准备
    x = [2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019]
    y = [5, 3, 6, 20, 17, 16, 19, 30, 32, 35]
    # 使用 Matplotlib 画折线图
    plt.plot(x, y)
    plt.show()
    # 使用 Seaborn 画折线图
    df = pd.DataFrame({'x': x, 'y': y})
    sns.lineplot(x="x", y="y", data=df)
    plt.show()
    

    箱线图
    箱线图,又称盒式图,由五个数值点组成:最大值 (max)、最小值 (min)、中位数 (median) 和上下四分位数 (Q3, Q1)。它可以帮我们分析出数据的差异性、离散程度和异常值等。

    
    # 数据准备
    # 生成0-1之间的10*4维度数据
    data=np.random.normal(size=(10,4)) 
    lables = ['A','B','C','D']
    # 用Matplotlib画箱线图
    plt.boxplot(data,labels=lables)
    plt.show()
    # 用Seaborn画箱线图
    df = pd.DataFrame(data, columns=lables)
    sns.boxplot(data=df)
    plt.show()
    

    饼图
    饼图是常用的统计学模块,可以显示每个部分大小与总和之间的比例。

    
    import matplotlib.pyplot as plt
    # 数据准备
    nums = [25, 37, 33, 37, 6]
    labels = ['High-school','Bachelor','Master','Ph.d', 'Others']
    # 用Matplotlib画饼图
    plt.pie(x = nums, labels=labels)
    plt.show()
    

    热力图
    热力图,英文叫 heat map,是一种矩阵表示方法,其中矩阵中的元素值用颜色来代表,不同的颜色代表不同大小的值。通过颜色就能直观地知道某个位置上数值的大小。另外你也可以将这个位置上的颜色,与数据集中的其他位置颜色进行比较。热力图是一种非常直观的多元变量分析方法。

    
    import matplotlib.pyplot as plt
    import seaborn as sns
    # 数据准备
    flights = sns.load_dataset("flights") # Seaborn 中自带的数据
    data=flights.pivot('year','month','passengers')
    # 用Seaborn画热力图
    sns.heatmap(data)
    plt.show()
    

    蜘蛛图
    蜘蛛图是一种显示一对多关系的方法。在蜘蛛图中,一个变量相对于另一个变量的显著性是清晰可见的。

    
    import numpy as np
    import matplotlib.pyplot as plt
    import seaborn as sns
    from matplotlib.font_manager import FontProperties  
    # 数据准备
    labels=np.array([u"推进","KDA",u"生存",u"团战",u"发育",u"输出"])
    stats=[83, 61, 95, 67, 76, 88]
    # 画图数据准备,角度、状态值
    angles=np.linspace(0, 2*np.pi, len(labels), endpoint=False)
    stats=np.concatenate((stats,[stats[0]]))
    angles=np.concatenate((angles,[angles[0]]))
    # 用Matplotlib画蜘蛛图
    fig = plt.figure()
    ax = fig.add_subplot(111, polar=True)   
    ax.plot(angles, stats, 'o-', linewidth=2)
    ax.fill(angles, stats, alpha=0.25)
    # 设置中文字体
    font = FontProperties(fname=r"C:\Windows\Fonts\simhei.ttf", size=14)  
    ax.set_thetagrids(angles * 180/np.pi, labels, FontProperties=font)
    plt.show()
    

    二元变量分布
    想要看两个变量之间的关系,就需要用到二元变量分布。当然二元变量分布有多种呈现方式,散点图就是一种二元变量分布。代码中我用 kind 分别显示了他们的散点图、核密度图和 Hexbin 图,如下图所示。

    import matplotlib.pyplot as plt
    import seaborn as sns
    # 数据准备
    tips = sns.load_dataset("tips")
    print(tips.head(10))
    # 用Seaborn画二元变量分布图(散点图,核密度图,Hexbin图)
    sns.jointplot(x="total_bill", y="tip", data=tips, kind='scatter')
    sns.jointplot(x="total_bill", y="tip", data=tips, kind='kde')
    sns.jointplot(x="total_bill", y="tip", data=tips, kind='hex')
    plt.show()
    

    成对关系
    要探索数据集中的多个成对双变量的分布,可以直接采用 sns.pairplot() 函数。它会同时展示出 DataFrame 中每对变量的关系,另外在对角线上,你能看到每个变量自身作为单变量的分布情况。它可以说是探索性分析中的常用函数,可以很快帮我们理解变量对之间的关系。

    import matplotlib.pyplot as plt
    import seaborn as sns
    # 数据准备
    iris = sns.load_dataset('iris')
    # 用Seaborn画成对关系
    sns.pairplot(iris)
    plt.show()
    

    相关文章

      网友评论

          本文标题:数据分析实战45讲 笔记六

          本文链接:https://www.haomeiwen.com/subject/vdslnctx.html