可视化分析某年河北省旅游景点数据

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


运行结果:

image-20211227231050224

首先使用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()


运行结果:

image-20211227231259590

使用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

运行结果:

image-20211227231617123

首先对根据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()

运行结果:image-20211227231707216

在这里我们使用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()

运行结果:

image-20211227231825957

回顾一遍,绘制图形的步骤:初始化(导库、数据的选取)——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.)

这样布局就会好看很多。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐