| 
                         【代码第一部分】数据生成 
- def list_generator(mean, dis, number): # 封装一下这个函数,用来后面生成数据 
 -  return np.random.normal(mean, dis * dis, number) # normal分布,输入的参数是均值、标准差以及生成的数量 
 -  
 - # 我们生成四组数据用来做实验,数据量分别为70-100 
 - # 分别代表男生、女生在20岁和30岁的花费分布 
 - # 构造数据库DataFrame 
 - num = 100 # 每组100个样本 
 - girl20 = list_generator(1000, 29.2, num) 
 - boy20 = list_generator(800, 11.5, num) 
 - girl30 = list_generator(3000, 25.1056, num) 
 - boy30 = list_generator(1000, 19.0756, num) 
 - girl_sex = ['female' for _ in range(num)] 
 - boy_sex = ['male' for _ in range(num)] 
 - age20 = [20 for _ in range(num)] 
 - age30 = [30 for _ in range(num)] 
 -  
 - girl_d1 = pd.DataFrame({'cost': girl20, 'sex': girl_sex, 'age': age20}) 
 - boy_d1 = pd.DataFrame({'cost': boy20, 'sex': boy_sex, 'age': age20}) 
 - girl_d2 = pd.DataFrame({'cost': girl30, 'sex': girl_sex, 'age': age30}) 
 - boy_d2 = pd.DataFrame({'cost': boy30, 'sex': boy_sex, 'age': age30}) 
 - data = pd.concat([girl_d1, boy_d1, girl_d2, boy_d2]) 
 -  
 - print(data.head()) 
 
  
数据长啥样?下面是给出的数据框前面的部分,一共400个样本,分性别和年龄。 
 
【代码第二部分】使用seaborn库画图 
简单看看所有数据的分布情况: 
- sns.boxplot(x=data["cost"],data=data) 
 
  
 
根据性别分组: 
- sns.boxplot(x="age", y="cost", data=data, hue="sex", width=0.5, linewidth=1.0, palette="Set3") 
 
  
 
根据年龄分组: 
- sns.boxplot(x="sex", y="cost", data=data, hue="age", width=0.5, linewidth=1.0, palette="Set3") 
 
  
 
上面这些是seaborn库的简单使用,可以通过年龄看男女花费比较,也可以根据性别看不同年龄段的花费比较,还是比较直观的。当然除此之外还有很多其他的炫技,大家可以自己尝试。 
总结 
从上面来看,虽然我们是采用不同方法来画箱线图,但是最基本的都是调用matplotlib库,这里面pandas是最简单的箱线图可视化,但是不灵活。而matplotlib虽然灵活,但是需要慢慢调,而且复杂。相比之下seaborn更加酷炫,而且图还更好看。上面例子都是本人亲测,一个个对比,原创文章,大家如果有其他问题可以留言讨论。                          (编辑:泰州站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |