加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

Python数据可视化:箱线图多种库画法

发布时间:2019-11-07 09:40:21 所属栏目:建站 来源:菜鸟学习社
导读:概念 箱线图通过数据的四分位数来展示数据的分布情况。例如:数据的中心位置,数据间的离散程度,是否有异常值等。 把数据从小到大进行排列并等分成四份,第一分位数(Q1),第二分位数(Q2)和第三分位数(Q3)分别为数据的第25%,50%和75%的数字。 四分位间距(

【代码第一部分】数据生成

  1. def list_generator(mean, dis, number): # 封装一下这个函数,用来后面生成数据 
  2.  return np.random.normal(mean, dis * dis, number) # normal分布,输入的参数是均值、标准差以及生成的数量 
  3.  
  4. # 我们生成四组数据用来做实验,数据量分别为70-100 
  5. # 分别代表男生、女生在20岁和30岁的花费分布 
  6. # 构造数据库DataFrame 
  7. num = 100 # 每组100个样本 
  8. girl20 = list_generator(1000, 29.2, num) 
  9. boy20 = list_generator(800, 11.5, num) 
  10. girl30 = list_generator(3000, 25.1056, num) 
  11. boy30 = list_generator(1000, 19.0756, num) 
  12. girl_sex = ['female' for _ in range(num)] 
  13. boy_sex = ['male' for _ in range(num)] 
  14. age20 = [20 for _ in range(num)] 
  15. age30 = [30 for _ in range(num)] 
  16.  
  17. girl_d1 = pd.DataFrame({'cost': girl20, 'sex': girl_sex, 'age': age20}) 
  18. boy_d1 = pd.DataFrame({'cost': boy20, 'sex': boy_sex, 'age': age20}) 
  19. girl_d2 = pd.DataFrame({'cost': girl30, 'sex': girl_sex, 'age': age30}) 
  20. boy_d2 = pd.DataFrame({'cost': boy30, 'sex': boy_sex, 'age': age30}) 
  21. data = pd.concat([girl_d1, boy_d1, girl_d2, boy_d2]) 
  22.  
  23. print(data.head()) 

数据长啥样?下面是给出的数据框前面的部分,一共400个样本,分性别和年龄。

Python数据可视化:箱线图多种库画法

【代码第二部分】使用seaborn库画图

简单看看所有数据的分布情况:

  1. sns.boxplot(x=data["cost"],data=data) 
Python数据可视化:箱线图多种库画法

根据性别分组:

  1. sns.boxplot(x="age", y="cost", data=data, hue="sex", width=0.5, linewidth=1.0, palette="Set3") 
Python数据可视化:箱线图多种库画法

根据年龄分组:

  1. sns.boxplot(x="sex", y="cost", data=data, hue="age", width=0.5, linewidth=1.0, palette="Set3") 
Python数据可视化:箱线图多种库画法

上面这些是seaborn库的简单使用,可以通过年龄看男女花费比较,也可以根据性别看不同年龄段的花费比较,还是比较直观的。当然除此之外还有很多其他的炫技,大家可以自己尝试。

总结

从上面来看,虽然我们是采用不同方法来画箱线图,但是最基本的都是调用matplotlib库,这里面pandas是最简单的箱线图可视化,但是不灵活。而matplotlib虽然灵活,但是需要慢慢调,而且复杂。相比之下seaborn更加酷炫,而且图还更好看。上面例子都是本人亲测,一个个对比,原创文章,大家如果有其他问题可以留言讨论。

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读