数据分析实战45讲
陈旸
清华大学计算机博士
立即订阅
17319 人已学习
课程目录
已完结 48 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 你为什么需要数据分析能力?
免费
第一模块:数据分析基础篇 (16讲)
01丨数据分析全景图及修炼指南
02丨学习数据挖掘的最佳路径是什么?
03丨Python基础语法:开始你的Python之旅
04丨Python科学计算:用NumPy快速处理数据
05丨Python科学计算:Pandas
06 | 学数据分析要掌握哪些基本概念?
07 | 用户画像:标签化就是数据的抽象能力
08 | 数据采集:如何自动化采集数据?
09丨数据采集:如何用八爪鱼采集微博上的“D&G”评论
10丨Python爬虫:如何自动化下载王祖贤海报?
11 | 数据科学家80%时间都花费在了这些清洗任务上?
免费
12 | 数据集成:这些大号一共20亿粉丝?
13 | 数据变换:考试成绩要求正态分布合理么?
14丨数据可视化:掌握数据领域的万金油技能
15丨一次学会Python数据可视化的10种技能
16丨数据分析基础篇答疑
第二模块:数据分析算法篇 (20讲)
17 丨决策树(上):要不要去打篮球?决策树来告诉你
18丨决策树(中):CART,一棵是回归树,另一棵是分类树
19丨决策树(下):泰坦尼克乘客生存预测
20丨朴素贝叶斯分类(上):如何让机器判断男女?
21丨朴素贝叶斯分类(下):如何对文档进行分类?
22丨SVM(上):如何用一根棍子将蓝红两色球分开?
23丨SVM(下):如何进行乳腺癌检测?
24丨KNN(上):如何根据打斗和接吻次数来划分电影类型?
25丨KNN(下):如何对手写数字进行识别?
26丨K-Means(上):如何给20支亚洲球队做聚类?
27丨K-Means(下):如何使用K-Means对图像进行分割?
28丨EM聚类(上):如何将一份菜等分给两个人?
29丨EM聚类(下):用EM算法对王者荣耀英雄进行划分
30丨关联规则挖掘(上):如何用Apriori发现用户购物规则?
31丨关联规则挖掘(下):导演如何选择演员?
32丨PageRank(上):搞懂Google的PageRank算法
33丨PageRank(下):分析希拉里邮件中的人物关系
34丨AdaBoost(上):如何使用AdaBoost提升分类器性能?
35丨AdaBoost(下):如何使用AdaBoost对房价进行预测?
36丨数据分析算法篇答疑
第三模块:数据分析实战篇 (7讲)
37丨数据采集实战:如何自动化运营微博?
38丨数据可视化实战:如何给毛不易的歌曲做词云展示?
39丨数据挖掘实战(1):信用卡违约率分析
40丨数据挖掘实战(2):信用卡诈骗分析
41丨数据挖掘实战(3):如何对比特币走势进行预测?
42丨当我们谈深度学习的时候,我们都在谈什么?
43丨深度学习(下):如何用Keras搭建深度学习网络做手写数字识别?
第四模块:数据分析工作篇 (2讲)
44丨如何培养你的数据分析思维?
45丨求职简历中没有相关项目经验,怎么办?
加餐 (1讲)
加餐丨在社交网络上刷粉刷量,技术上是如何实现的?
结束语 (1讲)
结束语丨当大家都在讲知识和工具的时候,我更希望你重视思维和实战
数据分析实战45讲
登录|注册

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

陈旸 2019-01-16
今天我来给你讲讲 Python 的可视化技术。
如果你想要用 Python 进行数据分析,就需要在项目初期开始进行探索性的数据分析,这样方便你对数据有一定的了解。其中最直观的就是采用数据可视化技术,这样,数据不仅一目了然,而且更容易被解读。同样在数据分析得到结果之后,我们还需要用到可视化技术,把最终的结果呈现出来。

可视化视图都有哪些?

按照数据之间的关系,我们可以把可视化视图划分为 4 类,它们分别是比较、联系、构成和分布。我来简单介绍下这四种关系的特点:
比较:比较数据间各类别的关系,或者是它们随着时间的变化趋势,比如折线图;
联系:查看两个或两个以上变量之间的关系,比如散点图;
构成:每个部分占整体的百分比,或者是随着时间的百分比变化,比如饼图;
分布:关注单个变量,或者多个变量的分布情况,比如直方图。
同样,按照变量的个数,我们可以把可视化视图划分为单变量分析和多变量分析。
单变量分析指的是一次只关注一个变量。比如我们只关注“身高”这个变量,来看身高的取值分布,而暂时忽略其他变量。
多变量分析可以让你在一张图上可以查看两个以上变量的关系。比如“身高”和“年龄”,你可以理解是同一个人的两个参数,这样在同一张图中可以看到每个人的“身高”和“年龄”的取值,从而分析出来这两个变量之间是否存在某种联系。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《数据分析实战45讲》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(45)

  • 佳佳的爸
    建议所有的示例代码加上完整的引用(完整的import语句),谢谢!
    2019-01-17
    1
    30
  • 数据化分析
    # -*- coding: utf-8 -*-
    # 作者:数据化分析
    # 微信公众号:isjhfx
    # 版本:1.0

    import matplotlib.pyplot as plt
    import seaborn as sns

    # 解决seaborn数据集导入报错的问题
    import ssl
    ssl._create_default_https_context = ssl._create_unverified_context

    # 数据准备
    data = sns.load_dataset('car_crashes')
    print(data.head(10))

    # 用 seaborn 探索成对关系
    sns.pairplot(data)

    # 用 seaborn 画散点图
    sns.jointplot(x='total', y='speeding', data=data, kind='scatter')

    # 用 seaborn 画核密度图
    sns.jointplot(x='total', y='speeding', data=data, kind='kde')

    # 用 seaborn 画 Hexbin 图
    sns.jointplot(x='total', y='speeding', data=data, kind='hex')

    plt.show()
    2019-01-16
    9
  • sxpujs
    在 Mac 下设置中文字体,可以使用以下路径:
    # 设置中文字体
    font = FontProperties(fname="/System/Library/Fonts/STHeiti Medium.ttc", size=14)
    2019-04-21
    6
  • jsw
    我的数据和程序都在服务器上,如何可以生成html在web上展示?
    2019-01-17
    1
    2
  • 跳跳
    第一题:seaborn car_crashes成对关系探索
    iris=sns.load_dataset("car_crashes")
    sns.pairplot(iris)
    plt.show()
    第二题:由第一题可以看出酒精和速度由类似线性关系,因此做酒精和速度二元变量的分布图
    iris=sns.load_dataset("car_crashes")
    print(iris.head(10))
    sns.jointplot(x='alcohol',y='speeding',data=iris,kind='scatter')
    sns.jointplot(x='alcohol',y='speeding',data=iris,kind='kde')
    sns.jointplot(x='alcohol',y='speeding',data=iris,kind='hex')
    碎碎念一下:为啥留言不支持图片?难受
    2019-01-16
    2
  • Andre
    我的想法是把老师的几种操作,自己做一遍然后发到github和自己的知乎专栏上面
    2019-06-05
    1
  • 阿敦教授
    老师您好,在用sns.load_dataset()时,不管load哪个在线数据集,都报错 urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1056)>。请问怎么解决呀?谢谢老师
    2019-06-03
    1
    1
  • 周飞
    折线图的demo 中 如果运行出现如下的错误 : AttributeError: module 'seaborn' has no attribute 'lineplot'. 请看这里 https://stackoverflow.com/questions/51846948/seaborn-lineplot-module-object-has-no-attribute-lineplot 。 解决方案是 : conda install -c anaconda seaborn=0.9.0
    2019-02-27
    1
  • 周飞
    macOS的用户如果不能显示,请看这里:https://matplotlib.org/faq/osx_framework.html#conda
    conda install python.app 然后 用pythonw 来运行脚步,此时可能会报错: Intel MKL FATAL ERROR: Cannot load libmkl_intel_thread.dylib. , 然后看这里 https://blog.csdn.net/u010900574/article/details/53413937 运行 conda install -f numpy 和 conda install mkl 。然后在用pythonw 来运行脚本就可以了。
    2019-02-27
    1
  • 毛毛🐛虫🌻
    热力图那个是颜色越浅,值越大么?
    2019-01-18
    1
    1
  • 拉我吃
    # coding:utf-8
    import matplotlib.pyplot as plt
    import seaborn as sns

    # Data Prep
    car_crashes = sns.load_dataset('car_crashes')
    sns.pairplot(car_crashes)
    plt.show()

    # plot with seaborn (scatter, kde, hex)
    sns.jointplot(x='alcohol', y='speeding', data=car_crashes, kind='scatter')
    sns.jointplot(x='alcohol', y='speeding', data=car_crashes, kind='kde')
    sns.jointplot(x='alcohol', y='speeding', data=car_crashes, kind='hex')
    plt.show()

    二元关系选了喝酒和超速的对比,基本上在大部分区间下是线性关系,就是喝得多速度快:)
    2019-01-17
    1
  • 舒成
    python在慢慢追赶R,我的R语言分析水平停止了,python水平在往上涨,现在的状态是,有老师的课就学课,没有就看《精益数据分析》。
    2019-01-16
    1
    1
  • GS
    奉上我的笔记 https://github.com/leledada/jupyter/blob/master/matplotlibDemo.ipynb

    作者回复: 赞GS同学

    2019-11-23
  • GS
    遇到个问题:'module' object has no attribute 'lineplot'.
    https://stackoverflow.com/questions/51846948/seaborn-lineplot-module-object-has-no-attribute-lineplot
    解决方案:
    pip install seaborn==0.9.0
    2019-11-18
  • 建强
    思考题1:对车祸数据成对关系的的探索,程序代码如下:

    #车祸数据分析
    import matplotlib.pyplot as plt
    import seaborn as sns
    import pandas as pd
    # 数据准备
    crashes = sns.load_dataset('car_crashes')
    crashes_data = pd.DataFrame(crashes)

    # 用 Seaborn 画成对关系
    sns.pairplot(crashes)
    plt.show()

    思考题2:模拟企业隐患数据分析,代码如下:

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

    #定义生成隐患数量函数
    def GenerateHDNum(hdtimes):
        #hdtimes表示要生成多少隐患数量
        HD_NumList = list(pd.Series(np.random.rand(hdtimes)))
        return [int(x * 100) for x in HD_NumList]

    #数据准备函数
    def MakeData():

        #创建以月份为单位的时间索引
        dti = pd.date_range(start='2017-01-01', end='2018-12-31', freq='M')
        monthlist = [str(x * 100 + y) for x,y in zip(dti.year,dti.month)]
        
        hdtimes = len(monthlist)
        #生成各种隐患数量
        NormalHD = GenerateHDNum(hdtimes)
        ImportHD = GenerateHDNum(hdtimes)
        HDNum = { 'Normal': NormalHD
                 ,'Import': ImportHD}

        HD_Frame = pd.DataFrame(data = HDNum, index=monthlist)

        print(HD_Frame)
        return HD_Frame

    def AnalyData(HDSet,AnalyType='0'):

        #AnalyType取值:1:成对关系图;2:散点图;3:核密度图;4:Hexbin图

        #成对关系图
        if AnalyType == '1':
            sns.pairplot(HDSet)

        #散点图
        if AnalyType == '2':
            sns.jointplot(x='Normal', y='Import', data=HDSet, kind='scatter')

        #核密度图
        if AnalyType == '3':
            sns.jointplot(x='Normal', y='Import', data=HDSet, kind='kde')

        #Hexbin图
        if AnalyType == '4':
            sns.jointplot(x='Normal', y='Import', data=HDSet, kind='hex')
        
        plt.show()

    def ShowMenu():
        print('='*20)
        print('1.显示成对关系图')
        print('2.显示散点图')
        print('3.显示核密度图')
        print('4.显示Hexbin图')
        print('R.换一批数据')
        print('0.退出')
        print('='*20)
        return input('请输入命令:')

    def main():

        HDSet = MakeData()
        while True:
            command = ShowMenu()

            if command == '0':
                break
            elif command == 'R':
                HDSet = MakeData()
            else:
                AnalyData(HDSet, command)

    main()
    2019-08-18
  • 陈云飞
    可以把三维图、曲面图加上,这两个非常重要,用的也比较多
    2019-07-22
  • 华夏
    load在线数据集的时候报错 urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1056)>
    如果是mac的话,可以打开终端,输入 cd "/Applications/Python 3.7/" (你是Python3.几就输入3.几)
    然后 sudo "./Install Certificates.command" 就可以解决问题了。
    下面贴一个解决问题的链接 https://stackoverflow.com/questions/27835619/urllib-and-ssl-certificate-verify-failed-error/42334357#42334357
    2019-07-06
  • David
    import matplotlib.pyplot as plt
    import seaborn as sns

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

    请教,我的环境x轴只能是float类型,这是什么原因呢?
    2019-07-02
  • 董大琳儿
    import matplotlib.pyplot as plt
    import seaborn as sns
    # 数据准备
    iris = sns.load_dataset('iris')
    # 用 Seaborn 画成对关系
    sns.pairplot(iris)
    plt.show()
    2019-06-23
  • 语言Python3.6, 环境IDLE
    >>> car_crashes = sns.load_dataset('car_crashes')
    第一个问题:
    >>> sns.pairplot(car_crashes)
    <seaborn.axisgrid.PairGrid object at 0x125a9cdd8>
    第二个问题:查看获取到的数据维度,针对车祸数与速度画二元变量分布图,以及针对车祸数与酒精含量画二元变量分布图
    >>> sns.jointplot(x='total',y='speeding',data=car_crashes,kind='scatter')
    <seaborn.axisgrid.JointGrid object at 0x1259d7d68>
    >>> sns.jointplot(x='total',y='speeding',data=car_crashes,kind='kde')
    <seaborn.axisgrid.JointGrid object at 0x129fe9ba8>
    >>> sns.jointplot(x='total',y='speeding',data=car_crashes,kind='hex')
    <seaborn.axisgrid.JointGrid object at 0x12ff26eb8>
    >>> sns.jointplot(x='total',y='alcohol',data=car_crashes,kind='scatter')
    <seaborn.axisgrid.JointGrid object at 0x131b19550>
    >>> sns.jointplot(x='total',y='alcohol',data=car_crashes,kind='kde')
    <seaborn.axisgrid.JointGrid object at 0x129f5a630>
    >>> sns.jointplot(x='total',y='alcohol',data=car_crashes,kind='hex')
    <seaborn.axisgrid.JointGrid object at 0x12605c630>
    >>> plt.show()

    最后执行一次plt.show() 所创建的图片都会显示出来
    2019-04-15
收起评论
45
返回
顶部