项目介绍
北疆之北,在阿勒泰。新疆阿勒泰地区以其壮丽的自然风光和得天独厚的冰雪资源吸引着全国各地的游客,近年来旅游业持续火爆。本项目要做的是将搜集和怕爬取到的有关阿勒泰旅游的数据基于python进行分析和可视化大屏展示。
数据来源
阿勒泰地区行政公署网站
网页地址:2021年阿勒泰地区重点旅游景区客流量简析
将网页中的数据整理存储到excel表格中
阿勒泰近几年旅游人数及收入.xlsx

疆外游客来源省份.xlsx

各景区疆外疆内游客总数.xlsx

去哪儿网阿勒泰旅游数据爬取
由于在官网中找到的数据比较有限,且具有客观局限性,所以利用python爬虫对国内比较大众的旅游网站去哪儿网来进行阿勒泰旅游数据爬取
对阿勒泰攻略(游记)和景点数据分别进行爬取,对应的网页分别如下:
阿勒泰旅游攻略网页

阿勒泰景点网页

爬虫程序中采用parsel解析网页,将网页获取的有价值信息通过初步字段处理后存储到本地csv文件中,具体代码如下:
攻略数据爬取
import random
import time
import requests
import parsel
import csv
csv_youji=open('altaynotes.csv',mode='a',encoding='utf-8',newline='')
csv_writer=csv.writer(csv_youji)
csv_writer.writerow(['地点','标题','出发时间','天数','人均消费','人物','玩法','浏览量','点赞量','评论量','收藏量','分享量'])
i=1
for page in range(1,41):
url='https://travel.qunar.com/travelbook/list/22-aletai-299862/hot_heat/'+str(page)+'.htm'
print(url)
response = requests.get(url=url)
print(response)
html_data = response.text
# print(html_data)
select = parsel.Selector(html_data)
url_list = select.css('.b_strategy_list li h2 a::attr(href)').getall()
for detail_url in url_list:
detail_id = detail_url.replace('/youji/', '')
url_1 = 'https://travel.qunar.com/travelbook/note/' + detail_id
# print(url_1)
response_1 = requests.get(url=url_1)
html_data1 = response_1.text
# print(response_1)
select_1 = parsel.Selector(html_data1)
place_element = select_1.css('.b_crumb_cont *:nth-child(3)::text').get()
if place_element:
place=place_element.replace('旅游攻略','')
else:
place=''
title = select_1.css('.title.white::text').get()
date = select_1.css('.data::text').get()
days = select_1.css('.b_foreword > ul > li.f_item.howlong > p > span.data::text').get()
fee = select_1.css('.b_foreword > ul > li.f_item.howmuch > p > span.data::text').get()
play_list = select_1.css('.b_foreword > ul > li.f_item.how > p > span.data span::text').getall()
play = ' '.join(play_list)
character = select_1.css('.b_foreword > ul > li.f_item.who > p > span.data::text').get()
view = select_1.css('.e_line2 > ul > li.date > span.view_count::text').get()
love = select_1.css('.main_info_r > ul > li.nav_item.like > div > span.num::text').get()
comment = select_1.css('.main_info_r > ul > li.nav_item.comment > div > a > span.num::text').get()
collect = select_1.css('.main_info_r > ul > li.nav_item.view_collected > div > span.num::text').get()
share = select_1.css('.main_info_r > ul > li.nav_item.share > div > span.num::text').get()
print(i,place, title, date, days, fee, character, play, view, love, comment, collect, share)
i=i+1
# 写入csv文件
csv_writer.writerow([place, title, date, days, fee, character, play, view, love, comment, collect, share])
#设置延迟,避免爬虫程序被抓到
time.sleep(random.randint(3,5))
csv_youji.close()
景点数据爬取
import requests
import parsel
import csv
import random
import time
csv_jingdian=open('altayspots.csv',mode='a',encoding='utf-8',newline='')
csv_writer=csv.writer(csv_jingdian)
csv_writer.writerow(['景点名称','评分','建议游玩天数','热评','评论数','攻略提到数量'])
i=1
for page in range(1,48):
url = 'https://travel.qunar.com/p-cs299862-aletai-jingdian-1-'+str(page)
print(url)
response = requests.get(url)
html_data = response.text
# print(html_data)
# 解析网页
selector = parsel.Selector(html_data)
url_list = selector.css('.listbox > ul > li> div > div.titbox.clrfix > a::attr(href)').getall()
for url in url_list:
response_1 = requests.get(url)
html_data1 = response_1.text
selector1 = parsel.Selector(html_data1)
name = selector1.css('.b_title.clrfix > h1::text').get()
score = selector1.css(
'.b_focus > div > div.e_focus_txtbox > div.m_scorebox > div.scorebox.clrfix > span.cur_score::text').get()
days_element = selector1.css(
'.b_focus > div > div.e_focus_txtbox > div.m_scorebox > div.txtbox > div.time::text').get()
if days_element:
days=days_element.replace('建议游览时间:','').replace('推荐游玩时间:','')
else:
days=''
hot_comment_element = selector1.css(
'.b_focus > div > div.e_focus_txtbox > div.m_scorebox > div.commentbox > div > div.cont > span.txt::text').get()
if hot_comment_element:
hot_comment=hot_comment_element.strip()
else:
hot_comment=''
comment_num_element = selector1.css('#more_cmt_href::text').get()
if comment_num_element:
comment_num=comment_num_element.replace('共', '').replace('条点评', '')
else:
comment_num='0'
gonglue_num = selector1.css(
'.b_focus > div > div.e_focus_txtbox > div.countbox > div.box_r > div.sum::text').get()
print(i,name, score, days, hot_comment, comment_num, gonglue_num)
i = i + 1
# 写入csv文件
csv_writer.writerow([name, score, days, hot_comment, comment_num, gonglue_num])
time.sleep(random.randint(2,4))
csv_jingdian.close()
altaynotes.csv

altayspots.csv

数据预处理
pandas读取爬虫得到的csv文件,对数据进行进一步处理,为后面的数据可视化做准备。
xlsx文件不必处理
1.空值处理
爬取数据时可能会出现网址无法询问的情况,导致爬取到空行数据,对空行进行处理
# 删除完全为空的行
data = data.dropna(how='all')
景点数据中的攻略提到数量和评分有的为空,将空值替换为0
data1['攻略提到数量']=data1['攻略提到数量'].fillna(0)
data1['评分'] = pd.to_numeric(data1['评分'], errors='coerce').astype(float)
data1['评分'].fillna(value=0, inplace=True)
将攻略中提到数量和评论数都为0的景点删除,因为这类景点大概率没啥热度
#将评论数为0,攻略中提到数量为0的景区数据删掉
rows_to_drop = (data1['评论数'] == 0) & (data1['攻略提到数量'] == 0)
# 使用drop方法删除这些行,inplace=True表示原地修改
data1.drop(data1[rows_to_drop].index, inplace=True)```
#### 2.数据类型处理
攻略数据中的人均消费字段中带有‘万’字,将其转换为对应的数字
```go
def convert_to_int(value):
if isinstance(value, str) and '万' in value:
# 去除“万”字并转换为浮点数
value_without_wan = float(value.replace('万', ''))
# 乘以10000
return int(value_without_wan * 10000)
return value
data['浏览量'] = data['浏览量'].apply(convert_to_int)
攻略数据中的浏览量、点赞量、评论量、收藏量、分享量等都应是整数,将其转换为int型
data['点赞量']=data['点赞量'].astype(int)
data['评论量']=data['评论量'].astype(int)
data['收藏量']=data['收藏量'].astype(int)
data['分享量']=data['分享量'].astype(int)
data['天数']=data['天数'].astype(int)
时间字段转换为datetime型,并提取出行月份,为后面分析阿勒泰旅游季节性变化做准备
data['出发时间'] = pd.to_datetime(data['出发时间'], format='%Y/%m/%d')
data['出发月份']=data['出发时间'].dt.month
3.不合理数据处理
爬取阿勒泰地区旅游攻略数据的时候,发现会有途径阿勒泰但主要旅游地不是阿勒泰的攻略也会被并入要爬取的网页中,但实际上对阿勒泰旅游分析并无太大用处,所以在这里将地点字段中不属于阿勒泰地区的整行攻略数据删除
altay_locations = ['阿勒泰市','阿勒泰','布尔津', '富蕴', '福海',
'哈巴河', '青河', '吉木乃','喀纳斯']
# 使用isin()函数过滤掉不认
data= data[data['地点'].isin(altay_locations)]
至此,数据处理完毕,展示如下:


数据可视化
基于python中的pyecharts库对上面清洗好的数据进行可视化。在这里每张基本图表的绘制都用一个函数实现,并返回一个图表对象,后续会将所有图表集中展示在大屏上,利用Page组件。
1.阿勒泰地区重点景区分布–地图
jingqu_place=pd.read_excel('C:/Users/24378/Desktop/可视化/可视化大作业_阿勒泰/2021年6月阿勒泰重点景区游客流量/各景区分布.xlsx')
nums=jingqu_place['县市'].value_counts()
tuple_list = list(nums.items())
list_of_lists = [[item[0], item[1]] for item in tuple_list]
def create_city_map(list):
map = Map(
init_opts=opts.InitOpts(
theme=theme_config,
width='450px',
height='350px',
chart_id='map1'
)
)
map.add(
series_name="景点",
data_pair=list,
maptype="阿勒泰地区",
)
# 全局配置项
map.set_global_opts(
# 设置标题
title_opts=opts.TitleOpts(title="阿勒泰地区景区分布",pos_left='center'),
# 设置标准显示
visualmap_opts=opts.VisualMapOpts(max_=4, is_piecewise=False),
legend_opts=opts.LegendOpts(pos_left="right", pos_top="bottom"),
)
# 系列配置项
'''map.set_series_opts(
# 标签名称显示,默认为True
label_opts=opts.LabelOpts(is_show=True)
)'''
# 生成本地html文件
map.render("阿勒泰地区景点分布地图.html")
print('生成完毕:阿勒泰地区景点分布图')
return map

2.阿勒泰重点景区疆内疆外游客人数–堆叠条形图
#各景区疆内疆外游客总数
spot=pd.read_excel('C:/Users/24378/Desktop/可视化/可视化大作业_阿勒泰/2021年6月阿勒泰重点景区游客流量/各景区疆内疆外游客总数.xlsx')
spots=np.array(spot['景区']).tolist()
inside=np.array(spot['疆内游客数']).tolist()
outside=np.array(spot['疆外游客数']).tolist()
spots.reverse()
inside.reverse()
outside.reverse()
def create_bar(lei,shu1,shu2):
bar = Bar(init_opts=opts.InitOpts(
theme=theme_config,
width='450px',
height='350px',
chart_id='bar_cmt1'
))
bar.add_xaxis(lei) # 定义横轴数据
bar.add_yaxis("疆外", shu1, stack="stack1")
bar.add_yaxis("疆内", shu2, stack="stack1")
bar.reversal_axis()#设置水平方向
bar.set_series_opts(label_opts=opts.LabelOpts(is_show=False)) # 设置标签
bar.set_global_opts(title_opts=opts.TitleOpts(title="各景区疆内疆外游客总数(万人)",pos_left='center'), # 设置图表标题
legend_opts=opts.LegendOpts(pos_left="center", pos_top="bottom"),
toolbox_opts=opts.ToolboxOpts(is_show=False),
xaxis_opts=opts.AxisOpts(name='人数',splitline_opts=opts.SplitLineOpts(is_show=False),axislabel_opts=opts.LabelOpts(font_size=8,rotate=0)),
yaxis_opts=opts.AxisOpts(name='景区',axislabel_opts=opts.LabelOpts(font_size=7,rotate=45),splitline_opts=opts.SplitLineOpts(is_show=False)))
bar.render('4A级及以上景区疆内疆外游客总数条形图.html')
print('生成完毕:4A级及以上景区疆内疆外游客总数条形图.html')
return bar

3.疆外各省旅游人数分布–南丁格尔玫瑰图
# 随机颜色生成
def randomcolor(kind):
colors = []
for i in range(kind):
colArr = ['1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F']
color = ""
for i in range(6):
color += colArr[random.randint(0, 14)]
colors.append("#" + color)
return colors
def create_rose(lei,shu):
color_series = randomcolor(len(lei))
# 创建饼图
pie = Pie(init_opts=opts.InitOpts(
theme=theme_config,
width='450px',
height='350px',
chart_id='pie1'
))
# 添加数据
pie.add("", [list(z) for z in zip(lei, shu)],
radius=['30%', '135%'],
center=['45%', '45%'],
rosetype='area')
# 设置全局配置
pie.set_global_opts(title_opts=opts.TitleOpts(title='疆外各省旅游人数'),
legend_opts=opts.LegendOpts(is_show=False)
)
# 设置系列配置和颜色
pie.set_series_opts(label_opts=opts.LabelOpts(is_show=True, position='inside', font_size=12,
formatter='{b}:{c}万', font_style='italic', font_weight='bold',
font_family='Microsoft YaHei'))
#pie.set_colors(color_series)
# 在网页生成照片
pie.render('疆外各省旅游人数_南丁格尔玫瑰图.html')
print('生成完毕:疆外各省旅游人数_南丁格尔玫瑰图.html')
return pie

4.阿勒泰旅游季节性分析–旅游月份分布涟漪散点图
#绘制一年中各月份攻略数涟漪散点图
month=data['出发月份'].value_counts()
month_list=month.index.tolist()
gonglueshu=month.values.tolist()
def create_scatter(x_data,y_data):
sc = (EffectScatter(init_opts=opts.InitOpts(width="450px", height="350px", theme=theme_config, chart_id='scatter1'))
.add_xaxis(xaxis_data=x_data)
.add_yaxis(
series_name="",
y_axis=y_data,
symbol_size=10,
label_opts=opts.LabelOpts(is_show=False),
)
.set_series_opts()
.set_global_opts(title_opts=opts.TitleOpts(title='旅游月份分布',pos_left='center'),
xaxis_opts=opts.AxisOpts(name='月份',
type_='value',
splitline_opts=opts.SplitLineOpts(is_show=True,
linestyle_opts=opts.LineStyleOpts(
type_='dashed')),
split_number=10,
min_=1,
max_=12
),
yaxis_opts=opts.AxisOpts(name='功略数',
type_='value',
axistick_opts=opts.AxisTickOpts(is_show=True),
splitline_opts=opts.SplitLineOpts(is_show=True,
linestyle_opts=opts.LineStyleOpts(
type_='dashed')),
min_=5,
max_=50
),
tooltip_opts=opts.TooltipOpts(trigger='axis',axis_pointer_type='cross',is_show=True),
)
)
sc.render('功略月份分布-涟漪散点图.html')
print('生成完毕:涟漪散点图.html')
return sc

5.景点热度Top10各指标分析–时间序列柱状图
#刻画综合得分前10景点
# 筛选综合得分前n名的数据
def data_top(df,n): # 前n个数据
# 构建函数实现字段标准化,标准分
cols = ['攻略提到数量','评分','评论数']
for col in cols:
df[col + '_b'] = round((df[col] - df[col].min())/(df[col].max() - df[col].min())*100,2)
#由驴友去过比例得分+攻略提到数量得分+星级得分+点评数得分,每项均为0-100分
df['综合得分'] = df['攻略提到数量_b']+df['评分_b']+df['评论数_b']
top_n = df.sort_values(by = '综合得分', ascending=False).iloc[:n]
return top_n
top_10=data_top(df=data1,n=10)
def create_bar2(top_10):
bar = (
# 条状图,定义大小样式,样式可以官方文件里找到各种样式
Bar(opts.InitOpts(width='800px', height='350px', theme=theme_config, chart_id='bar_cmt2'))
# 增加横轴,标注用景点名称,tolist()将pandas数据转成list
.add_xaxis(top_10['景点名称'].tolist())
# 增加纵轴,这里有三种数据
.add_yaxis('点评数量', top_10['评论数'].tolist())
.add_yaxis('攻略提到数量', top_10['攻略提到数量'].tolist())
.add_yaxis('评分', top_10['评分'].tolist())
# 全局属性,加这个工具箱和缩略轴还比较好用
.set_global_opts(
toolbox_opts=opts.ToolboxOpts(is_show=False), # 设置工具箱
datazoom_opts=[opts.DataZoomOpts(range_start=10, range_end=80, is_zoom_lock=False)], # 设置slider缩略轴
)
# 局部属性,加了一个最大值最小值显示,平均值
.set_series_opts(
markpoint_opts=opts.MarkPointOpts(
data=[
opts.MarkPointItem(type_="max", name="最大值"),
opts.MarkPointItem(type_="min", name="最小值"),
]
),
markline_opts=opts.MarkLineOpts(
data=[
opts.MarkLineItem(type_='average', name='平均值')
]
)
)
)
bar.render('热度最高景点top10_柱状图.html')
print('生成完毕:热度最高景点top10_柱状图.html')
return bar


5.旅行方式分析–环状图
#绘制攻略中旅游时长、人均费用和出游结伴方式环状图
day_data=[('2天内',219),('3-5天',26),('6-9天',32),('10-15天',30),('15天以上',6)]
def create_daypie(data):
pie = Pie(init_opts=opts.InitOpts(width='450px', height='350px', theme=theme_config, chart_id='pie2'))
pie.add("",data,radius=["40%", "70%"])
pie.set_global_opts(title_opts=opts.TitleOpts(title="旅行天数",pos_left='center',pos_top='bottom'),
toolbox_opts=opts.ToolboxOpts(is_show=False))
pie.render('旅游天数分布_环形图.html')
print('生成完毕:旅游天数分布_环形图.html')
return pie
fee_data=[('1千以内',8),('1千-3千',18),('3千-6千',22),('6千-1万',22),('1万以上',7)]
def create_feepie(data):
pie = Pie(init_opts=opts.InitOpts(width='450px', height='350px', theme=theme_config, chart_id='pie3'))
pie.add("",data,radius=["40%", "70%"])
pie.set_global_opts(title_opts=opts.TitleOpts(title="旅行人均消费",pos_left='center',pos_top='bottom'),
toolbox_opts=opts.ToolboxOpts(is_show=False))
pie.render('人均消费分布_环形图.html')
print('生成完毕:人均消费分布_环形图.html')
return pie
data['人物'].value_counts()
data_counts = data['人物'].value_counts().items()
character_data = list(data_counts)
def create_characterpie(data):
pie = Pie(init_opts=opts.InitOpts(width='450px', height='350px', theme=theme_config, chart_id='pie4'))
pie.add("",data,radius=["40%", "70%"])
pie.set_global_opts(title_opts=opts.TitleOpts(title="旅行结伴方式",pos_left='center',pos_top='bottom'),
toolbox_opts=opts.ToolboxOpts(is_show=False))
pie.render('旅行结伴方式_环形图.html')
print('生成完毕:旅行结伴方式_环形图.html')
return pie



7.网站游客评价–词云图
攻略中的标题可以看作游客对阿勒泰旅游的总体印象和短评,对其进行词云图绘制
#绘制标题词云图
title=np.array(data['标题']).tolist()
text = ''.join(title)
def get_stopwords(v_file):
with open(v_file, 'r', encoding='utf-8') as file:
stopwords = [line.strip() for line in file]
return stopwords
stopwords=get_stopwords(v_file='C:/Users/24378/Desktop/可视化/可视化大作业_阿勒泰/stopwords.txt')
add_stopwords=[' ','13','10','15','17','---','----','年','想','坐','遍','记','攻略','日游','游','行','旅行','之旅','日','123','天','跟着','分享','之二','2014.9','14']
stopwords.extend(add_stopwords)
cut_words=list(jieba.cut(text))
result=[]
for word in cut_words:
if word not in stopwords:
result.append(word)
dt=collections.Counter(result)
dt=dt.most_common(100)
def create_wc(text):
stopwords=get_stopwords(v_file='./stopwords.txt')
add_stopwords=[' ','13','10','15','17','---','----','年','想','坐','遍','记','攻略','日游','游','行','旅行','之旅','日','123','天','跟着','分享','之二','2014.9','14']
stopwords.extend(add_stopwords)
cut_words=list(jieba.cut(text))
result=[]
for word in cut_words:
if word not in stopwords:
result.append(word)
dt=collections.Counter(result)
dt=dt.most_common(100)
wc = WordCloud(init_opts=opts.InitOpts(width="450px", height="350px", theme=theme_config, chart_id='wc1'))
wc.add(series_name="标题关键词",
data_pair=dt,
word_size_range=[15, 20],
width='400px', # 宽度
height='300px', # 高度
word_gap=5 # 单词间隔
) # 增加数据
wc.set_global_opts(
title_opts=opts.TitleOpts(pos_left='center',
title="阿勒泰之旅短评词云图",
title_textstyle_opts=opts.TextStyleOpts(font_size=20) # 设置标题
),
tooltip_opts=opts.TooltipOpts(is_show=True), # 不显示工具箱
)
wc.set_series_opts(label_opts=opts.LabelOpts(is_show=True))
wc.render('攻略标题分析_词云图.html') # 生成html文件
print('生成完毕:攻略标题分析_词云图.html')
return wc
停用词文件可以去网上下载,也可以粘贴复制下面的:
!
"
#
$
%
&
'
(
)
*
+
,
-
--
.
..
...
......
...................
./
.一
.数
.日
/
//
0
1
2
3
4
5
6
7
8
9
:
://
::
;
<
=
>
>>
?
@
A
Lex
[
\
]
^
_
`
exp
sub
sup
|
}
~
~~~~
·
×
×××
Δ
Ψ
γ
μ
φ
φ.
В
—
——
———
‘
’
’‘
“
”
”,
…
……
…………………………………………………③
′∈
′|
℃
Ⅲ
↑
→
∈[
∪φ∈
≈
①
②
②c
③
③]
④
⑤
⑥
⑦
⑧
⑨
⑩
──
■
▲
、
。
〈
〉
《
》
》),
」
『
』
【
】
〔
〕
〕〔
㈧
一
一.
一一
一下
一个
一些
一何
一切
一则
一则通过
一天
一定
一方面
一旦
一时
一来
一样
一次
一片
一番
一直
一致
一般
一起
一转眼
一边
一面
七
万一
三
三天两头
三番两次
三番五次
上
上下
上升
上去
上来
上述
上面
下
下列
下去
下来
下面
不
不一
不下
不久
不了
不亦乐乎
不仅
不仅...而且
不仅仅
不仅仅是
不会
不但
不但...而且
不光
不免
不再
不力
不单
不变
不只
不可
不可开交
不可抗拒
不同
不外
不外乎
不够
不大
不如
不妨
不定
不对
不少
不尽
不尽然
不巧
不已
不常
不得
不得不
不得了
不得已
不必
不怎么
不怕
不惟
不成
不拘
不择手段
不敢
不料
不断
不日
不时
不是
不曾
不止
不止一次
不比
不消
不满
不然
不然的话
不特
不独
不由得
不知不觉
不管
不管怎样
不经意
不胜
不能
不能不
不至于
不若
不要
不论
不起
不足
不过
不迭
不问
不限
与
与其
与其说
与否
与此同时
专门
且
且不说
且说
两者
严格
严重
个
个人
个别
中小
中间
丰富
串行
临
临到
为
为主
为了
为什么
为什麽
为何
为止
为此
为着
主张
主要
举凡
举行
乃
乃至
乃至于
么
之
之一
之前
之后
之後
之所以
之类
乌乎
乎
乒
乘
乘势
乘机
乘胜
乘虚
乘隙
九
也
也好
也就是说
也是
也罢
了
了解
争取
二
二来
二话不说
二话没说
于
于是
于是乎
云云
云尔
互
互相
五
些
交口
亦
产生
亲口
亲手
亲眼
亲自
亲身
人
人人
人们
人家
人民
什么
什么样
什麽
仅
仅仅
今
今后
今天
今年
今後
介于
仍
仍旧
仍然
从
从不
从严
从中
从事
从今以后
从优
从古到今
从古至今
从头
从宽
从小
从新
从无到有
从早到晚
从未
从来
从此
从此以后
从而
从轻
从速
从重
他
他人
他们
他是
他的
代替
以
以上
以下
以为
以便
以免
以前
以及
以后
以外
以後
以故
以期
以来
以至
以至于
以致
们
任
任何
任凭
任务
企图
伙同
会
伟大
传
传说
传闻
似乎
似的
但
但凡
但愿
但是
何
何乐而不为
何以
何况
何处
何妨
何尝
何必
何时
何止
何苦
何须
余外
作为
你
你们
你是
你的
使
使得
使用
例如
依
依据
依照
依靠
便
便于
促进
保持
保管
保险
俺
俺们
倍加
倍感
倒不如
倒不如说
倒是
倘
倘使
倘或
倘然
倘若
借
借以
借此
假使
假如
假若
偏偏
做到
偶尔
偶而
傥然
像
儿
允许
元/吨
充其极
充其量
充分
先不先
先后
先後
先生
光
光是
全体
全力
全年
全然
全身心
全部
全都
全面
八
八成
公然
六
兮
共
共同
共总
关于
其
其一
其中
其二
其他
其余
其后
其它
其实
其次
具体
具体地说
具体来说
具体说来
具有
兼之
内
再
再其次
再则
再有
再次
再者
再者说
再说
冒
冲
决不
决定
决非
况且
准备
凑巧
凝神
几
几乎
几度
几时
几番
几经
凡
凡是
凭
凭借
出
出于
出去
出来
出现
分别
分头
分期
分期分批
切
切不可
切切
切勿
切莫
则
则甚
刚
刚好
刚巧
刚才
初
别
别人
别处
别是
别的
别管
别说
到
到了儿
到处
到头
到头来
到底
到目前为止
前后
前此
前者
前进
前面
加上
加之
加以
加入
加强
动不动
动辄
勃然
匆匆
十分
千
千万
千万千万
半
单
单单
单纯
即
即令
即使
即便
即刻
即如
即将
即或
即是说
即若
却
却不
历
原来
去
又
又及
及
及其
及时
及至
双方
反之
反之亦然
反之则
反倒
反倒是
反应
反手
反映
反而
反过来
反过来说
取得
取道
受到
变成
古来
另
另一个
另一方面
另外
另悉
另方面
另行
只
只当
只怕
只是
只有
只消
只要
只限
叫
叫做
召开
叮咚
叮当
可
可以
可好
可是
可能
可见
各
各个
各人
各位
各地
各式
各种
各级
各自
合理
同
同一
同时
同样
后
后来
后者
后面
向
向使
向着
吓
吗
否则
吧
吧哒
吱
呀
呃
呆呆地
呐
呕
呗
呜
呜呼
呢
周围
呵
呵呵
呸
呼哧
呼啦
咋
和
咚
咦
咧
咱
咱们
咳
哇
哈
哈哈
哉
哎
哎呀
哎哟
哗
哗啦
哟
哦
哩
哪
哪个
哪些
哪儿
哪天
哪年
哪怕
哪样
哪边
哪里
哼
哼唷
唉
唯有
啊
啊呀
啊哈
啊哟
啐
啥
啦
啪达
啷当
喀
喂
喏
喔唷
喽
嗡
嗡嗡
嗬
嗯
嗳
嘎
嘎嘎
嘎登
嘘
嘛
嘻
嘿
嘿嘿
四
因
因为
因了
因此
因着
因而
固
固然
在
在下
在于
地
均
坚决
坚持
基于
基本
基本上
处在
处处
处理
复杂
多
多么
多亏
多多
多多少少
多多益善
多少
多年前
多年来
多数
多次
够瞧的
大
大不了
大举
大事
大体
大体上
大凡
大力
大多
大多数
大大
大家
大张旗鼓
大批
大抵
大概
大略
大约
大致
大都
大量
大面儿上
失去
奇
奈
奋勇
她
她们
她是
她的
好
好在
好的
好象
如
如上
如上所述
如下
如今
如何
如其
如前所述
如同
如常
如是
如期
如果
如次
如此
如此等等
如若
始而
姑且
存在
存心
孰料
孰知
宁
宁可
宁愿
宁肯
它
它们
它们的
它是
它的
安全
完全
完成
定
实现
实际
宣布
容易
密切
对
对于
对应
对待
对方
对比
将
将才
将要
将近
小
少数
尔
尔后
尔尔
尔等
尚且
尤其
就
就地
就是
就是了
就是说
就此
就算
就要
尽
尽可能
尽如人意
尽心尽力
尽心竭力
尽快
尽早
尽然
尽管
尽管如此
尽量
局外
居然
届时
属于
屡
屡屡
屡次
屡次三番
岂
岂但
岂止
岂非
川流不息
左右
巨大
巩固
差一点
差不多
己
已
已矣
已经
巴
巴巴
带
帮助
常
常常
常言说
常言说得好
常言道
平素
年复一年
并
并不
并不是
并且
并排
并无
并没
并没有
并肩
并非
广大
广泛
应当
应用
应该
庶乎
庶几
开外
开始
开展
引起
弗
弹指之间
强烈
强调
归
归根到底
归根结底
归齐
当
当下
当中
当儿
当前
当即
当口儿
当地
当场
当头
当庭
当时
当然
当真
当着
形成
彻夜
彻底
彼
彼时
彼此
往
往往
待
待到
很
很多
很少
後来
後面
得
得了
得出
得到
得天独厚
得起
心里
必
必定
必将
必然
必要
必须
快
快要
忽地
忽然
怎
怎么
怎么办
怎么样
怎奈
怎样
怎麽
怕
急匆匆
怪
怪不得
总之
总是
总的来看
总的来说
总的说来
总结
总而言之
恍然
恐怕
恰似
恰好
恰如
恰巧
恰恰
恰恰相反
恰逢
您
您们
您是
惟其
惯常
意思
愤然
愿意
慢说
成为
成年
成年累月
成心
我
我们
我是
我的
或
或则
或多或少
或是
或曰
或者
或许
战斗
截然
截至
所
所以
所在
所幸
所有
所谓
才
才能
扑通
打
打从
打开天窗说亮话
扩大
把
抑或
抽冷子
拦腰
拿
按
按时
按期
按照
按理
按说
挨个
挨家挨户
挨次
挨着
挨门挨户
挨门逐户
换句话说
换言之
据
据实
据悉
据我所知
据此
据称
据说
掌握
接下来
接着
接著
接连不断
放量
故
故意
故此
故而
敞开儿
敢
敢于
敢情
数/
整个
断然
方
方便
方才
方能
方面
旁人
无
无宁
无法
无论
既
既...又
既往
既是
既然
日复一日
日渐
日益
日臻
日见
时候
昂然
明显
明确
是
是不是
是以
是否
是的
显然
显著
普通
普遍
暗中
暗地里
暗自
更
更为
更加
更进一步
曾
曾经
替
替代
最
最后
最大
最好
最後
最近
最高
有
有些
有关
有利
有力
有及
有所
有效
有时
有点
有的
有的是
有着
有著
望
朝
朝着
末##末
本
本人
本地
本着
本身
权时
来
来不及
来得及
来看
来着
来自
来讲
来说
极
极为
极了
极其
极力
极大
极度
极端
构成
果然
果真
某
某个
某些
某某
根据
根本
格外
梆
概
次第
欢迎
欤
正值
正在
正如
正巧
正常
正是
此
此中
此后
此地
此处
此外
此时
此次
此间
殆
毋宁
每
每个
每天
每年
每当
每时每刻
每每
每逢
比
比及
比如
比如说
比方
比照
比起
比较
毕竟
毫不
毫无
毫无例外
毫无保留地
汝
沙沙
没
没奈何
没有
沿
沿着
注意
活
深入
清楚
满
满足
漫说
焉
然
然则
然后
然後
然而
照
照着
牢牢
特别是
特殊
特点
犹且
犹自
独
独自
猛然
猛然间
率尔
率然
现代
现在
理应
理当
理该
瑟瑟
甚且
甚么
甚或
甚而
甚至
甚至于
用
用来
甫
甭
由
由于
由是
由此
由此可见
略
略为
略加
略微
白
白白
的
的确
的话
皆可
目前
直到
直接
相似
相信
相反
相同
相对
相对而言
相应
相当
相等
省得
看
看上去
看出
看到
看来
看样子
看看
看见
看起来
真是
真正
眨眼
着
着呢
矣
矣乎
矣哉
知道
砰
确定
碰巧
社会主义
离
种
积极
移动
究竟
穷年累月
突出
突然
窃
立
立刻
立即
立地
立时
立马
竟
竟然
竟而
第
第二
等
等到
等等
策略地
简直
简而言之
简言之
管
类如
粗
精光
紧接着
累年
累次
纯
纯粹
纵
纵令
纵使
纵然
练习
组成
经
经常
经过
结合
结果
给
绝
绝不
绝对
绝非
绝顶
继之
继后
继续
继而
维持
综上所述
缕缕
罢了
老
老大
老是
老老实实
考虑
者
而
而且
而况
而又
而后
而外
而已
而是
而言
而论
联系
联袂
背地里
背靠背
能
能否
能够
腾
自
自个儿
自从
自各儿
自后
自家
自己
自打
自身
臭
至
至于
至今
至若
致
般的
良好
若
若夫
若是
若果
若非
范围
莫
莫不
莫不然
莫如
莫若
莫非
获得
藉以
虽
虽则
虽然
虽说
蛮
行为
行动
表明
表示
被
要
要不
要不是
要不然
要么
要是
要求
见
规定
觉得
譬喻
譬如
认为
认真
认识
让
许多
论
论说
设使
设或
设若
诚如
诚然
话说
该
该当
说明
说来
说说
请勿
诸
诸位
诸如
谁
谁人
谁料
谁知
谨
豁然
贼死
赖以
赶
赶快
赶早不赶晚
起
起先
起初
起头
起来
起见
起首
趁
趁便
趁势
趁早
趁机
趁热
趁着
越是
距
跟
路经
转动
转变
转贴
轰然
较
较为
较之
较比
边
达到
达旦
迄
迅速
过
过于
过去
过来
运用
近
近几年来
近年来
近来
还
还是
还有
还要
这
这一来
这个
这么
这么些
这么样
这么点儿
这些
这会儿
这儿
这就是说
这时
这样
这次
这点
这种
这般
这边
这里
这麽
进入
进去
进来
进步
进而
进行
连
连同
连声
连日
连日来
连袂
连连
迟早
迫于
适应
适当
适用
逐步
逐渐
通常
通过
造成
逢
遇到
遭到
遵循
遵照
避免
那
那个
那么
那么些
那么样
那些
那会儿
那儿
那时
那末
那样
那般
那边
那里
那麽
部分
都
鄙人
采取
里面
重大
重新
重要
鉴于
针对
长期以来
长此下去
长线
长话短说
问题
间或
防止
阿
附近
陈年
限制
陡然
除
除了
除却
除去
除外
除开
除此
除此之外
除此以外
除此而外
除非
随
随后
随时
随着
随著
隔夜
隔日
难得
难怪
难说
难道
难道说
集中
零
需要
非但
非常
非徒
非得
非特
非独
靠
顶多
顷
顷刻
顷刻之间
顷刻间
顺
顺着
顿时
颇
风雨无阻
饱
首先
马上
高低
高兴
默然
默默地
齐
︿
!
#
$
%
&
'
(
)
)÷(1-
)、
*
+
+ξ
++
,
,也
-
-β
--
-[*]-
.
/
0
0:2
1
1.
12%
2
2.3%
3
4
5
5:0
6
7
8
9
:
;
<
<±
<Δ
<λ
<φ
<<
=
=″
=☆
=(
=-
=[
={
>
>λ
?
@
A
LI
R.L.
ZXFITL
[
[①①]
[①②]
[①③]
[①④]
[①⑤]
[①⑥]
[①⑦]
[①⑧]
[①⑨]
[①A]
[①B]
[①C]
[①D]
[①E]
[①]
[①a]
[①c]
[①d]
[①e]
[①f]
[①g]
[①h]
[①i]
[①o]
[②
[②①]
[②②]
[②③]
[②④
[②⑤]
[②⑥]
[②⑦]
[②⑧]
[②⑩]
[②B]
[②G]
[②]
[②a]
[②b]
[②c]
[②d]
[②e]
[②f]
[②g]
[②h]
[②i]
[②j]
[③①]
[③⑩]
[③F]
[③]
[③a]
[③b]
[③c]
[③d]
[③e]
[③g]
[③h]
[④]
[④a]
[④b]
[④c]
[④d]
[④e]
[⑤]
[⑤]]
[⑤a]
[⑤b]
[⑤d]
[⑤e]
[⑤f]
[⑥]
[⑦]
[⑧]
[⑨]
[⑩]
[*]
[-
[]
]
]∧′=[
][
_
a]
b]
c]
e]
f]
ng昉
{
{-
|
}
}>
~
~±
~+
¥

可视化大屏展示
最后,用Page组件把上面所有图表组合到一起,在此之前,先创建一个头部图像
#绘制最上面的大标题
def make_title(v_title):
table=Table()
table.add(headers=[v_title],rows=[],attributes={
"align":"center",
"border":False,
"padding":"2px",
"style":"background:{};width:1350px;height:50px;font_size:25px;color:#C0C0C0;".format(table_color)
})
table.render('大标题.html')
print('生成完毕:大标题.html')
return table

为全局设置一个主题颜色
#全局设置主题颜色
theme_config=ThemeType.CHALK #颜色方案
#表格和标题的颜色
table_color=''
if theme_config==ThemeType.DARK:
table_color='#333333'
elif theme_config==ThemeType.CHALK or theme_config==ThemeType.INFOGRAPHIC:
table_color='#293441'
elif theme_config==ThemeType.PURPLE_PASSION:
table_color='#5B5C6E'
elif theme_config==ThemeType.ROMANTIC:
table_color='#F0E8CD'
elif theme_config==ThemeType.ESSOS:
table_color='#FDFCF5'
elif theme_config==ThemeType.WALDEN:
table_color='#FFFFFF'
else:
table_color=''
上面一共设置了7种主题背景颜色,可以根据项目风格进行自行选择。
最终写一个主函数将上面所有图表组合到一起,选用DraggableLayout方法,即拖拽的方式组合图表,生成一个临时的html大屏文件。
if __name__=='__main__':
page=Page(
page_title='基于Python的阿勒泰旅游数据分析大屏',
layout=Page.DraggablePageLayout,
)
page.add(
make_title(v_title='基于Python的阿勒泰旅游数据分析大屏'),
create_city_map(list=list_of_lists),
create_rose(lei=place,shu=people),
create_bar(lei=spots,shu1=outside,shu2=inside),
create_scatter(x_data=month_list,y_data=gonglueshu),
create_wc(text=text),
create_bar2(top_10=top_10),
create_daypie(data=day_data),
create_feepie(data=fee_data),
create_characterpie(data=character_data)
)
page.render('大屏_临时.html')
#page.theme='blue'
page.background_color='#003366'
print('生成完毕:大屏_临时.html')

上图并未显示全,所有图表从上到下排列,可以用鼠标进行拖拽,按照自己的理解和审美对图表进行重新排版,然后点击左上方的Save_config保存json文件,最后调用json配置文件,生成最终的可视化大屏文件
这里比较简略,具体的操作流程可以去自行搜索或查阅Page组件文档,有很多讲解的视频。
from pyecharts.charts import Page
Page.save_resize_html(
source='大屏_临时.html',
cfg_file='chart_config_0428.json',
dest='大屏_最终.html'
)
生成最终的可视化大屏如下


总结
该项目可根据多个可视化图表分析挖掘出许多有价值的信息,从而提出阿勒泰旅游的可行性建议,最后,还可以借用机器学习算法对阿勒泰旅游数据从各方面进行预测和深入刻画。

1048

被折叠的 条评论
为什么被折叠?



