数据分析实战 45 讲
陈旸
清华大学计算机博士
123928 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 49 讲
第二模块:数据分析算法篇 (20讲)
第四模块:数据分析工作篇 (2讲)
数据分析实战 45 讲
15
15
1.0x
00:00/00:00
登录|注册

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

分布
构成
联系
比较
sns.pairplot
sns.heatmap
sns.boxplot
sns.barplot
sns.distplot
sns.lineplot
sns.jointplot
plt.pie
plt.boxplot
plt.bar
plt.hist
plt.plot
plt.scatter
二元变量分布
成对关系
多变量分析
单变量分析
可视化视图分类
Seaborn
Matplotlib
Python数据可视化

该思维导图由 AI 生成,仅供参考

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

可视化视图都有哪些?

按照数据之间的关系,我们可以把可视化视图划分为 4 类,它们分别是比较、联系、构成和分布。我来简单介绍下这四种关系的特点:
比较:比较数据间各类别的关系,或者是它们随着时间的变化趋势,比如折线图;
联系:查看两个或两个以上变量之间的关系,比如散点图;
构成:每个部分占整体的百分比,或者是随着时间的百分比变化,比如饼图;
分布:关注单个变量,或者多个变量的分布情况,比如直方图。
同样,按照变量的个数,我们可以把可视化视图划分为单变量分析和多变量分析。
单变量分析指的是一次只关注一个变量。比如我们只关注“身高”这个变量,来看身高的取值分布,而暂时忽略其他变量。
多变量分析可以让你在一张图上可以查看两个以上变量的关系。比如“身高”和“年龄”,你可以理解是同一个人的两个参数,这样在同一张图中可以看到每个人的“身高”和“年龄”的取值,从而分析出来这两个变量之间是否存在某种联系。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入介绍了Python数据可视化的10种技能,包括散点图、折线图、直方图、条形图、箱线图、饼图、热力图、蜘蛛图、二元变量分布和成对关系。作者首先对可视化视图进行了分类,包括比较、联系、构成和分布,以及单变量分析和多变量分析。然后详细介绍了每种可视化技术的绘制方法,包括使用Matplotlib和Seaborn两种工具包进行绘制。通过示例代码和图示,读者可以快速了解每种可视化技术的绘制方法和效果。整体而言,本文以简洁清晰的语言介绍了Python数据可视化的基本技能,适合初学者快速了解和掌握。文章内容涵盖了Python数据可视化的基本技能,通过具体的代码示例和图示,读者可以快速了解散点图、折线图、直方图、条形图、箱线图、饼图、热力图、蜘蛛图、二元变量分布和成对关系的绘制方法和效果。这些技能对于数据分析和可视化的初学者来说非常实用,有助于他们快速掌握Python数据可视化的基本技能。文章还提出了两道思考题,鼓励读者动手练习并分享答案,为读者提供了更多实践机会。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《数据分析实战 45 讲》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(68)

  • 最新
  • 精选
  • 建强
    置顶
    思考题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
    4
    13
  • sxpujs
    在 Mac 下设置中文字体,可以使用以下路径: # 设置中文字体 font = FontProperties(fname="/System/Library/Fonts/STHeiti Medium.ttc", size=14)

    作者回复: 很好的分享

    2019-04-21
    9
  • 跳跳
    第一题: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
    4
  • jion
    你好,练习成对关系图时,除下如下错误,是何原因? import matplotlib.pyplot as plt import seaborn as sns from sklearn import datasets # 数据准备 iris_datas = datasets.load_iris() iris = pd.DataFrame(iris_datas.data, columns=['SpealLength', 'Spealwidth', 'PetalLength', 'PetalLength']) print(iris.shape,"\n",iris) # 用Seaborn画成对关系 sns.pairplot(iris) 出现如下错误:ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

    作者回复: 原因是seaborn中有自己的iris数据集API:iris = sns.load_dataset('iris') seaborn中多了代表品种的“species”列,该列为字符串类型的离散值。当你使用sns.pairplot(iris)时,seaborn会按照自带的数据集格式来绘制,由于sklearn中的iris数据集没有“species”列,从而才会报错。你可以把sklearn中的iris的数据集的列名全部改为其他列名,即可正常使用sns.pairplot(iris)进行绘制。

    2021-03-06
    3
  • 求知鸟
    python在慢慢追赶R,我的R语言分析水平停止了,python水平在往上涨,现在的状态是,有老师的课就学课,没有就看《精益数据分析》。

    作者回复: 嗯嗯 慢慢来 坚持就有收获

    2019-01-16
    3
    3
  • 小强
    各种场景的视图,试用什么场景,怎么分析,例子太少了,理解不够深。

    作者回复: 在后面的例子中我们还会常用到。

    2020-07-10
    2
    2
  • 夕子
    car_crashes = sns.load_dataset('car_crashes') car_crashes.head(10) # 成对关系探索 sns.pairplot(car_crashes) plt.show() # 画散点图 sns.jointplot(x = 'speeding', y = 'total', data = car_crashes, kind = 'scatter') plt.show() # 画核密度图 sns.jointplot(x = 'speeding', y = 'total', data = car_crashes, kind = 'kde') plt.show() # 画hexbin图 sns.jointplot(x = 'speeding', y = 'total', data = car_crashes, kind = 'hex') plt.show()

    作者回复: 很棒

    2021-03-18
    1
  • 丁思森
    请问一下,有人在运行sns.load_dataset('tips'),遇到报错urllib.error.URLError: <urlopen error [Errno 11004] getaddrinfo failed>么?这里直接加载数据集会报错,你们是怎么解决的?

    作者回复: seaborn的数据集需要科学上网才能使用load_dataset

    2020-06-11
    2
    1
  • 毛毛🐛虫🌻
    热力图那个是颜色越浅,值越大么?

    作者回复: 对 右侧有坐标对照

    2019-01-18
    2
    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
收起评论
显示
设置
留言
68
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部