lesson1-绘制直方图-乘客数据

(一) 绘制直方图

import numpy from pandas import read_csv import matplotlib import matplotlib.pyplot as pet

#设置字体 font={'family':'SimHei'} matplotlib.rc('font',**font)

#读取文件# data = read_csv('lesson1/AirPassengers.csv',encoding='UTF-8')
#查看数据类型 data.dtypes

#基本统计 data.NumPassengers.mean() #280.29861111111109 data.NumPassengers.var() #14391.917200854699 data.NumPassengers.std() #119.96631694294319 data.NumPassengers.describe()

#直方图 plt.hist(data.NumPassengers,20)

观察:
讲真,这个直方图看的很困惑,并不觉得能解释什么。因为原始数据中其实有三个变量:月份,不知道是什么意思的49-60(姑且称为 xFactor),乘客数量。

所以,尝试采用分组统计,看是否有意思的发现。

(二)分组统计尝试一,以xFactor分组

#拆分原数据 newData = data['Month'].str.split('-' ,1,True)#拆分month列 newData.columns = ['Month','xFactor']#命名 newData['NumPassengers'] = data['NumPassengers']#补上最后一列

拆分后的数据框.png

#根据xFactor分组 result1 = newData.groupby(by=['xFactor'])['NumPassengers'].agg({ numpy.sum, numpy.mean })

按xFactor分组统计.png
画折线图

(注:因为分组时49-60这一列被默认称为index,尝试reset_index失败——只在console里重置成功,数据框并未更新,所以人为加上了一列xFactor。之后找到合适办法再改回来)

result1['xFactor']=[49,50,51,52,53,54,55,56,57,58,59,60]#增加分组列
#result1 画折线图 plt.plot(result1['xFactor'],result1['sum'],'-') plt.plot(result1['xFactor'],result1['mean'],'--',color='red')

从折线图可以看出 [年总乘客数]和 [平均乘客数据]随xFactor的变化,从49-60稳步上升。
据乍一看,还以为均值的变化趋势不明显呢,其实是因为Y轴数据量的差别。
尝试分开作图:


这样就可以看出,其实两个的变化趋势幅度是一样的。
(还可以尝试将两组数据标准化,按比例列缩放,绘制在同一个图上。还不会具体操作,稍后实验)

猜想:xFactor的真实身份

会不会是一个航空公司的不同分公司的数据?如果是,那60,59,58……这些分公司贡献的客户量可比49,50……多很多。
一个航空公司的不同航线?同理,60航线贡献最大。

(二)分组统计尝试一,以月份分组

`#根据月份分组
result2 = newData.groupby(by=['Month'])['NumPassengers'].agg({
numpy.sum,
numpy.mean

                           })`
按月份分组统计.png

#根据月份分组 result2 = newData.groupby(by=['Month'])['NumPassengers'].agg({ numpy.sum, numpy.mean })

result2['月份']=[4,8,12,2,1,7,6,3,5,11,10,9] result2.sort(columns='月份')

同上index无法重置的原因,该折线图暂时画不出来/,姑且先看数据。
可以看出:
乘客数最多:七月 4216
乘客数最少:十一月2794
其中,六、七、八、九月份的乘客数量明显高于其他月份。可能的一个原因是因为人们喜欢在夏季旅游胜过冬季。

推荐阅读更多精彩内容