写在前面
这学期上了数据通讯这门课,其中有一个作业是要求爬取某一天各重要城市到上海虹桥以及上海浦东两机场的航班信息,然后进行可视化、数据分析。在这一份作业用到的可视化工具是python的pyecharts库,其中一幅图的效果如下:
事实上这航线图是可以动的,只是截了个屏,下面具体说一下怎么操作。用到的库除了pyecharts,还有numpy、panda.
第一步 获取数据
要做数据的可视化,首先肯定要获取数据。我是采用C#+selenium动态爬取携程网上的10月30号的数据,selenium通过调用命令模拟人与浏览器的交互,效果不错。爬取下来的数据放在了一个文件夹里,每个城市到上海的存入一个文本文档中。
第二步 数据处理
在这里我是用numpy+pandas处理数据的,没安装这两个包的先安装再进行操作。
1.读取原始数据
import numpy as np
import pandas as pd
import os
df =pd.read_fwf(r"C:\Users\58381\Desktop\data\北京—上海.txt",encoding = "utf-8",header=None, names=["航班号","飞机机型","出发时间","出发机场","到达时间","到达机场","出发城市"])
for filename in os.listdir(r'C:\Users\58381\Desktop\data'):
df1 =pd.read_fwf('C:\\Users\\58381\\Desktop\\data\\'+filename,encoding = "utf-8",header=None, names=["航班号","飞机机型","出发时间","出发机场","到达时间","到达机场","出发城市"])
df = pd.merge(df1,df,how='outer',on=["航班号","飞机机型","出发时间","出发机场","到达时间","到达机场","出发城市"])
2.剔除共享航班的数据
df = df[ ~ df['航班号'].str.contains('共享') ]
#把文件中含有共享的删掉,即获得真正准确的数据
df.tail()#展示后五条数据
第三步 简单数据可视化
把各城市到虹桥机场的航班数分别统计
dh = df[ ~ df['到达机场'].str.contains('浦东') ]
#把文件中含有浦东的删掉,即获取含有虹桥的数据
dp = df[ ~ df['到达机场'].str.contains('虹桥') ]
#把文件中含有虹桥的删掉,获取浦东机场的数据
dh1 = pd.value_counts(dh["出发城市"])#各城市到达虹桥机场的航班数
dp1 = pd.value_counts(dp["出发城市"])#各城市到达浦东机场的航班数
1.条形图制作
然后将航班数量排名前十的城市拿出来制作条形图,这里就开始用到pyecharts库,关于怎么安装在我上一篇博客已经说了。在jupyter中安装pyecharts
hq_top = dh1.head(10)#取到虹桥航班数量前十的城市
pd_top = dp1.head(10)#取浦东
from pyecharts.charts import Bar
from pyecharts import options as opts
bar = (
Bar()
.add_xaxis(hq_top.index)
.add_yaxis("航班数",hq_top.values)
.set_global_opts(title_opts=opts.TitleOpts(title="到达虹桥航班数top10城市")