可视化分析某年河北省旅游景点数据
<>4.1 数据的爬取
代码:
# 4.1 数据的爬取 import pandas as pd import numpy as np file_path=open(r'风景名胜区.csv')
local_data=pd.read_csv(file_path) local_data
运行结果:
首先使用pandas的read_csv()方法进行数据的读取,然后就能够看到相应的表格信息。
<>4.2河北省景点面积和旅客量位居前三的条形图显示
<>4.2.1数据预处理
代码:
# 4.2河北省景点面积和旅客量位居前三的条形图显示 area=float("{:.1f}".format(local_data['总面积(平方公里)'].
mean())) # 计算游客数量的平均值 tour=float("{:.1f}".format(local_data['游客量(万人次)'].mean()))
#使用字典映射的方式进行填充数据 dic={'总面积(平方公里)':area,"游客量(万人次)":tour} addata=local_data.fillna
(value=dic) addata.head()
运行结果:
使用mean()方法计算游客数量的平均值,然后再使用字典映射的方式进行填充数据,使用head()方法查看前面五行的数据;
字典映射:
dic={'总面积(平方公里)':area,"游客量(万人次)":tour} addata=local_data.fillna(value=dic)
我们可以清晰明了的看到五行相应的旅游信息。
<>4.2.2找出河北省的数据
代码:
data=addata.groupby("省份") # 显示河北地区的·数据 hebei=dict([x for x in data])['河北']
hebei
运行结果:
首先对根据dataframe省份这一列进行分组,然后解析dict,单独将河北省的数据解析。
<>4.2.3 绘制直方图
代码:
# 需要我们绘制直方图 import matplotlib.pyplot as plt %matplotlib inline #为正常显示中文字体,添加的代码
plt.rcParams['font.sans-serif']=['SimHei'] plt.rcParams['axes.unicode_minus']=
False # 显示的数据选取 area=hebei["总面积(平方公里)"].values tour=hebei["游客量(万人次)"].values #
设置图像的大小 plt.figure(figsize=(12,6)) x_num=range(0,len(area)) x_dis=[i + 0.3 for i
in x_num] plt.bar(x_num,area,color='g',width=.3,label='总面积') plt.bar(x_dis,tour,
color='r',width=.3,label='游客量') #增加x、y轴文字说明 plt.ylabel("单位:平方千米、万人次") plt.title(
"河北旅游景点面积以及游客数量") # 设置图例 plt.legend(loc="upper right") plt.xticks(range(0,10),[
'苍岩山','嶂石岩','西柏坡-天桂山','秦皇岛北戴河','响堂山','娲皇宫','太行大峡谷','崆山白云洞','野三坡','承德避暑山庄外八庙'])
plt.show()
运行结果:
在这里我们使用matplotlib来绘制图形
绘制图形的步骤:初始化(导库、数据的选取)——pyplot.figure申请画布——绘制图形pyplot.bar——设置相关的标签、坐标轴、图例以及标题——展示或者导出保存
核心代码:
plt.bar(x_dis,tour,color='r',width=.3,label='游客量')
绘制柱状图。
<>4.3河北省旅客量的占比量的饼状图显示
代码:
# 4.3河北省旅客量的占比量的饼状图显示。 # 需要我们绘制直方图 import matplotlib.pyplot as plt %matplotlib
inline#为正常显示中文字体,添加的代码 plt.rcParams['font.sans-serif']=['SimHei'] plt.rcParams[
'axes.unicode_minus']=False tournum=hebei["游客量(万人次)"].values all_tournum=hebei[
"游客量(万人次)"].sum() # 计算每个景点旅游游客占比,保留两位小数 perc=(tournum/all_tournum)*100 np.
set_printoptions(precision=2) lables=['苍岩山','嶂石岩','西柏坡-天桂山','秦皇岛北戴河','响堂山','娲皇宫'
,'太行大峡谷','崆山白云洞','野三坡','承德避暑山庄外八庙'] plt.axes(aspect=1) plt.pie(x=perc, labels=
lables, # 设置饼图标签 colors=["#d5695d", "#5d8ca8", "#65a479", "#a564c9"], # 设置饼图颜色
shadow=True, labeldistance=1.2, # explode=(0, 0.2, 0, 0), # 第二部分突出显示,值越大,距离中心越远
autopct='%.2f%%', # 格式化输出百分比 startangle=90, pctdistance=0.7 ) #
plt.legend(loc="left") # 图例放在图标位置 plt.legend(bbox_to_anchor=(1.05, 1), loc=3,
borderaxespad=0.) plt.show()
运行结果:
回顾一遍,绘制图形的步骤:初始化(导库、数据的选取)——pyplot.figure申请画布——绘制图形pyplot.bar——设置相关的标签、坐标轴、图例以及标题——展示或者导出保存。
但是绘制饼图和柱状图有些不一样的部分我认为就是:
plt.pie(x=perc, labels=lables, # 设置饼图标签 colors=["#d5695d", "#5d8ca8", "#65a479"
, "#a564c9"], # 设置饼图颜色 shadow=True, labeldistance=1.2, # explode=(0, 0.2, 0,
0), # 第二部分突出显示,值越大,距离中心越远 autopct='%.2f%%', # 格式化输出百分比 startangle=90,
pctdistance=0.7 )
这个方法不一样使用的是pyplot.pie()
因为是使用的占比来显示饼图的面积展示,所以需要提供百分比,在初始化的时候需要对数据进行相应的处理。
# 计算每个景点旅游游客占比,保留两位小数 perc=(tournum/all_tournum)*100
可以看到旅游景点秦皇岛北戴河是去的人数最多的。占比32.33%,过来就是西柏坡——天桂山。
有的时候,因为图像大小的原因,这个饼图特别容易和图例重合所以我们需要对图例进行设置:
plt.legend(bbox_to_anchor=(1.05, 1), loc=3, borderaxespad=0.)
这样布局就会好看很多。