数据分析案例-四川省旅游景点数据分析

数据集介绍

数据为四川省的各旅游景点信息,特征有景点名称、星级、城市、票价、销量、热度6个维度,部分数据如下:

加载数据

首先要导入本次项目用到的第三方包和数据

import pandas as pd
from pyecharts.charts import Pie,Bar,Map,Funnel
from pyecharts import options as  opts 
from pyecharts.globals import ThemeType
import seaborn as sns
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #显示中文标签
plt.rcParams['axes.unicode_minus']=False
import warnings
warnings.filterwarnings('ignore')

data = pd.read_csv('sichuan.csv')
data.head()

数据清洗

缺失值处理

# 查看缺失值
data.isnull().sum()

我们发现数据没有缺失值,不需要进行缺失值处理 

如有缺失值,调用下面代码进行删除处理即可

# 删除缺失值
data.dropna(inplace=True)

重复值处理 

查看数据是否有重复值

# 查看数据是否有重复值  结果为True则说明存在重复值,反正则没有
any(data.duplicated())

结果为True说明存在重复值,需要进行处理

# 删除重复值
data.drop_duplicates(inplace=True)

 异常值处理

看看票价是否存在异常值

# 查看票价是否存在异常值
plt.boxplot(data['票价'])
plt.show()

我们发现票价存在明显的异常值,这里我们需要剔除出票价大于300的

# 对票价中的异常值进行处理,筛选出票价大于300的异常数据
data = data[data['票价']<300]
plt.boxplot(data['票价'])
plt.show()

 

数据预处理 

# 根据各景区的票价和销量得出新的总销售额一列数据
data['总销售额'] = data['票价'] * data['销量']
data.head()

数据可视化 

# 四川各星级景区的数量
df1 = data['星级'].value_counts()
plt.figure(figsize=(10,6))
plt.bar(x=df1.index,height=df1.values)
plt.xlabel('星级',fontsize=12)
plt.ylabel('数量',fontsize=12)
plt.title('四川各星级景区的数量',fontsize=12)
plt.show()

# 四川各星级景点数占比
result_list = [(i,j) for i,j in zip(df1.index.to_list(),df1.values.tolist())]
a = Pie(init_opts=opts.InitOpts(theme = ThemeType.DARK))
a.add(series_name='星级',
        data_pair=result_list,
        radius='70%',
        )
a.set_global_opts(title_opts=opts.TitleOpts(title="四川各星级景点数占比",
                    pos_top=50))
a.set_series_opts(tooltip_opts=opts.TooltipOpts(trigger='item',formatter='{a} <br/>{b}:{c} ({d}%)'))
a.render(path='饼图.html')
a.render_notebook()

# 分析票价、热度和销量之间的关系
plt.figure(figsize=(10,6))
plt.subplot(1,2,1)
plt.scatter(x=data['票价'],y=data['销量'])
plt.title('票价与销量的关系',fontsize=14)
plt.subplot(1,2,2)
plt.scatter(x=data['热度'],y=data['销量'])
plt.title('热度与销量的关系',fontsize=14)
plt.show()

 

# 个地区旅游景点的热力地图
df2 = data['城市'].value_counts()
city_data = [[x+'市',y] if x[-3:] != '自治州' else [x,y] for x,y in zip(df2.index.to_list(),df2.values.tolist())]
map = Map()
map.add('地区',city_data,
    maptype='四川',
    is_map_symbol_show=False,)
map.set_global_opts(
    title_opts=opts.TitleOpts('四川省'),
    visualmap_opts=opts.VisualMapOpts()
)
map.render(path='热力地图.html')
map.render_notebook()

 

# 漏斗图
funnel = Funnel()
funnel.add('',[(i,j) for i,j in zip(df2.index.to_list(),df2.values.tolist())],
label_opts=opts.LabelOpts(position='inside'))
funnel.set_global_opts(title_opts=opts.TitleOpts(title='漏斗图',pos_top=50))
funnel.render(path='漏斗图.html')
funnel.render_notebook()

 

# 分析各个特征之间的相关系数
fig = plt.figure(figsize=(10,10))
sns.heatmap(data.corr(),vmax=1,annot=True,linewidths=0.5,cbar=False,cmap='YlGnBu',annot_kws={'fontsize':25})
plt.xticks(fontsize=20)
plt.yticks(fontsize=20)
plt.title('各个特征之间的相关系数',fontsize=20)
plt.show()

 

# 景区名称词云图
from pyecharts.charts import WordCloud
import collections
result_list = []
for i in data['景点名称'].values:
    word_list = str(i).split('/')
    for j in word_list:
        result_list.append(j)
result_list
word_counts = collections.Counter(result_list)
word_counts_top = word_counts.most_common(100)
wc = WordCloud()
wc.add('',word_counts_top)
wc.render(path='词云图.html')
wc.render_notebook()

 

# 总销售额最高的前五名景区
df3 = data.sort_values('总销售额',ascending=False)[['景点名称','总销售额']].head()
plt.figure(figsize=(10,8))
plt.barh(y=df3['景点名称'].values,width=df3['总销售额'])
plt.title('总销售额最高的前五名景区',fontsize=14)
plt.show()

 

# 热度最高的前十名景区
df3 = data.sort_values(by='热度',ascending=False)[['景点名称','热度']].head(10)
plt.figure(figsize=(20,10))
sns.barplot(x='景点名称',y='热度',data=df3)
plt.xticks(fontsize=14)
plt.xlabel('景点名称',fontsize=14)
plt.ylabel('热度',fontsize=14)
plt.title('热度最高的前十名景区',fontsize=14)
plt.show()

 

# 销量前十的景点
df4 = data.sort_values(by='销量',ascending=False)[['景点名称','销量']].head(10)
a1 = Bar(init_opts=opts.InitOpts(theme=ThemeType.DARK))
a1.add_xaxis(df4['景点名称'].values.tolist())
a1.add_yaxis('销量',df4['销量'].values.tolist())
a1.reversal_axis()
a1.set_series_opts(label_opts=opts.LabelOpts(position="right"))
a1.set_global_opts(title_opts=opts.TitleOpts(title="销量前十的景点"))
a1.render(path='销量前十的景点.html')
a1.render_notebook()

data.groupby('城市').mean()[['票价','销量']].plot(kind='bar',figsize=(15,8),title='各个地区的平均票价和平均销量',fontsize=14)

 

以上就是四川省旅游景点数据分析,希望对学习数据分析的你有所帮助 

以下是心得体会:

通过这次Python项目实战,我学到了许多新的知识,这是一个让我把书本上的理论知识运用于实践中的好机会。原先,学的时候感叹学的资料太难懂,此刻想来,有些其实并不难,关键在于理解。

在这次实战中还锻炼了我其他方面的潜力,提高了我的综合素质。首先,它锻炼了我做项目的潜力,提高了独立思考问题、自我动手操作的潜力,在工作的过程中,复习了以前学习过的知识,并掌握了一些应用知识的技巧等

在此次实战中,我还学会了下面几点工作学习心态:

1)继续学习,不断提升理论涵养。在信息时代,学习是不断地汲取新信息,获得事业进步的动力。作为一名青年学子更就应把学习作为持续工作用心性的重要途径。走上工作岗位后,我会用心响应单位号召,结合工作实际,不断学习理论、业务知识和社会知识,用先进的理论武装头脑,用精良的业务知识提升潜力,以广博的社会知识拓展视野。

2)努力实践,自觉进行主角转化。只有将理论付诸于实践才能实现理论自身的价值,也只有将理论付诸于实践才能使理论得以检验。同样,一个人的价值也是透过实践活动来实现的,也只有透过实践才能锻炼人的品质,彰显人的意志。

3)提高工作用心性和主动性。实习,是开端也是结束。展此刻自我面前的是一片任自我驰骋的沃土,也分明感受到了沉甸甸的职责。在今后的工作和生活中,我将继续学习,深入实践,不断提升自我,努力创造业绩,继续创造更多的价值。

这次Python实战不仅仅使我学到了知识,丰富了经验。也帮忙我缩小了实践和理论的差距。在未来的工作中我会把学到的理论知识和实践经验不断的应用到实际工作中,为实现理想而努力。

猜你喜欢

转载自blog.csdn.net/m0_64336780/article/details/125305620#comments_25942262