python绘制实时波形图,python画频率分布曲线
在前两篇文章中,我们已经学习了seaborn绘图的风格和颜色设置。从这篇文章开始,我们开始选取一些有趣的数据集绘制各种图形,在实践中感受数据可视化的魅力。本文主要讲两个绘图函数,分别是绘制直方图的seaborn,distplot()和绘制条形图的seaborn.barplot()(直方图和条形图的区别请参考matplotlib系列之前的相关文章)。
处理绘图数据
今天我们用柱状图和条形图来展示NBA2017-2018赛季各球员的薪资情况。先用熊猫读写数据,然后按薪资降序排序,看看NBA排名前10的球员是什么。
#导入所需依赖包% matplotlib inline Import numpy as NP Import pandas as PD Import matplotlib . py plot as PLT Import seaborn as SNS # Read data=PD . Read _ CSV( NBA _ season 1718 _ salary . CSV )#将读取的数据按薪资降序排序,取前10个数据salary _ top 10=(data . Sort _ values( season 17 _ 18 ,Ascending=False))。head(10)#拿出球员列数据作为柱状图的横坐标player=salary_top10[球员]#拿出球员薪金列作为柱状图的纵坐标season _ salary=salary _ top 10[ 17 _ 18赛季]。前10个数据结构如下:
前10名球员的薪资数据
用seaborn.barplot()绘制条形图
函数可以用来绘制一个条形图。如果没有传入参数,将会绘制一个坐标轴,如图所示:
sns .条形图()
使用默认参数绘图
现在,我们以球员数据为横坐标,球员薪资为纵坐标,画一个柱状图。
Plt.figure (fig size=(10,6))PLT . x tickets(rotation=45)PLT . ylim(season . min()* 0.5,season.max () * 1.01) # CI参数表示允许的误差范围(控制误差条的百分比在0到1000之间)
NBA球员薪资排名
从柱状图中不难看出,勇士队的球星库里薪水最高,达到近3500万美元,其次是勒布朗-詹姆斯,同样在3300万美元以上。上面的柱状图是以球员为横坐标,下面我们按球队汇总,看看哪个球队的总工资最高。
salary _ by _ team=data . group by(by= Tm )。sum()。reset _ index()salary _ by _ team=salary _ by _ team . sort _ values(by= season 17 _ 18 ,ascending=False)Tm _ top 10=salary _ by _ team[0:10]Tm=Tm _ top 10[ Tm ]salary_sum=Tm _ top 10[ season 17 _ 18 ]SNS . bar plot(Tm,salary _ sum,data=Tm _ top 10)SNS . color _ palette( HLS ,10)sns.set(style=whitegrid
NBA球队工资支付条形图
从上面的柱状图可以看出,勇士的付出最高,其次是骑士!
Seaborn.distplot()绘制直方图。
上面我们用柱状图对比了每个球员的薪资排名和球队支付的薪资排名。接下来我们用柱状图展示了全联盟各球员的薪资水平分布和球队的薪资水平分布。
#读入数据data=pd.read _ csv与熊猫( NBA _ season1718 _ salary.csv) #取出薪资栏salary=data[season17_18]#绘制直方图sns.distplot(salary)
2017-2018赛季NBA球员薪资分布
在上图中,我们没有指定箱子,所以箱子的数量有点多。让我们分别将bin指定为3、10和30,看看效果如何。
sns.distplot(薪金,仓位=3)sns.distplot(薪金,仓位=10)sns.distplot(薪金,仓位=30)
箱数=3
箱数=10
箱数=30
上图横坐标表示薪资范围,纵坐标表示每个球员薪资的频率。我们来总结一下团队薪资,画一个柱状图。
# Sum by team summary and reset index salary _ by _ team=data . group by(by= TM )。Sum()。reset _ index()# Sort salary _ by _ team=salary _ by _ team . Sort _ values(by= season 17 _ 18 ,ascending=False)Tm _ top 10=salary _ by _ team[0:10]Tm=Tm _ top 10[ Tm ]salary _ sum=Tm _ top 10[ season 17 _ 18 ]SNS . distplot(salary _ sum)
NBA球队薪资分布图
默认情况下,这里有两个范围。如您所知,有30个团队,所以让我们设置bins=30,看看效果:
sns.distplot(salary_sum,bins=30)
箱数=30
从图中可以看出,大部分球队的总薪资在1.2-1.3亿美元左右。我们来处理一下团队的总薪酬,找出样本的上四分位数和下四分位数,以此为标准将总薪酬分为三个档次(低:0,中:1,高:2)。
#按降序对团队总薪资进行排序,并重新索引salary _ by _ team=salary _ by _ team . Sort _ values(by= season 17 _ 18 ,Ascending=True)。reset_index()# Count球队数量CNT=salary _ by _ team [TM]。count()Q3=int((3 *(CNT 1)/4))Q1=int((CNT 1)/4))#分别求下四分位数和上四分位数。
Q1 _ value=salary _ by _ team.at [Q1, season17 _ 18]Q3 _ value=salary _ by _ team . at[Q3, season 17 _ 18 ]然后,定义一个分类函数来离散化连续的薪金值:
def which _ class(I):if iq1 _ value:return 1 else:return 2然后,使用pandas的apply函数处理连续值:#添加新的级别列,并将处理后的值添加到新列中。
salary _ by _ team[ level ]=salary _ by _ team[ season 17 _ 18 ]。应用(哪个类)
治疗结果
#用等级数据绘制直方图:SNS . distplot(salary _ by _ team[ level ])
薪资水平直方图
从图中可以看出,1级(中等)占比最大,也符合实际情况。不可能所有球队都像快船那么有钱!好了,条形图和直方图到此为止。下一次,我们将继续绘制散点图。感谢阅读。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。