当前位置:   article > 正文

机器学习每周挑战——旅游景点数据分析_旅游景点.xlsx

旅游景点.xlsx

数据的截图,数据的说明:

# 字段    数据类型
# 城市    string
# 名称    string
# 星级    string
# 评分    float
# 价格    float
# 销量    int
# 省/市/区 string
# 坐标    string
# 简介    string
# 是否免费  bool
# 具体地址  string

拿到数据第一步我们先导入数据,查看一下数据的分布,类型等

  1. import pandas as pd
  2. import numpy as np
  3. import matplotlib.pyplot as plt
  4. data = pd.read_excel("旅游景点.xlsx")
  5. pd.set_option("display.max_columns",100)
  6. # print(data.head())
  7. print(data.info())
  8. print(data.isnull().sum())

接下来我们来看具体的问题:

# 问题(先大概分析一下)
# 1、全国景点分布 (我们分析城市的分布即可)
# 2、国民出游分析 (我们可以分析评分,城市,销量之间的关系 )
# 3、景区价格分析 (我们分析价格因素)
# 问题看完之后,我们开始对数据进行预处理
# 由于星级对我们问题的分析帮助很大,所以我们无法用删除,或者众数等方式填充,因此我们用无来填充,将其划分为一个新的类别
  1. data["星级"] = data["星级"].fillna("无")
  2. print(data["星级"].isnull().sum())
至于简介和地址,缺失数据无关紧要,这里我们可以选择用无来填充,也可以用删除来处理,为了不破坏数据的完整性,这里我选择用无来填充
  1. data = data.fillna("无")
  2. # print(data.isnull().sum())
  3. # 这样我们的数据就没有了缺失值
  4. # print(data.info())
# 1、全国景点分布 (我们分析城市的分布即可)
  1. scenic = data['城市'].value_counts().sort_values(ascending=False)
  2. plt.figure()
  3. scenic.plot(kind='bar',stacked=False,colormap='viridis',figsize=(10,6))
  4. plt.title("各个城市景点数量分布图")
  5. plt.xlabel('城市')
  6. plt.ylabel('景点个数')
  7. # plt.show()
# 2、国民出游分析 (我们可以分析评分,城市,销量之间的关系 )
  1. # data['销量'] = data['销量'].astype(int) 这种转换类型的方法,如果有无法转换的值,则无法转换
  2. data['评分'] = pd.to_numeric(data['评分'], errors='coerce')
  3. data['销量'] = pd.to_numeric(data['销量'],errors='coerce')
  4. data['价格'] = pd.to_numeric(data['价格'],errors='coerce')
  5. city_sales = data.groupby('城市')['销量'].sum()
  6. city_sales = city_sales.sort_values(ascending=False)
  7. plt.figure()
  8. city_sales.plot(kind='bar',stacked=True,colormap='plasma',figsize=(10,6))
  9. plt.title('各个城市景点门票销量')
  10. plt.xlabel('城市')
  11. plt.ylabel('销量')
# 从销量可以看出北京,上海,江苏,四川,陕西,广东的销量较高,因此,我们着重分析这六个地方的景点评分
  1. shanghai = data[data['城市'].str.contains('上海')]
  2. beijing = data[data['城市'].str.contains('北京')]
  3. jiangsu = data[data['城市'].str.contains('江苏')]
  4. sichuan = data[data['城市'].str.contains('四川')]
  5. shanxi = data[data['城市'].str.contains('陕西')]
  6. guangdong = data[data['城市'].str.contains('广东')]
  7. shanghai_group = shanghai.groupby('名称')['销量'].sum().reset_index()
  8. beijing_group = beijing.groupby('名称')['销量'].sum().reset_index()
  9. jiangsu_group = jiangsu.groupby('名称')['销量'].sum().reset_index()
  10. sichuan_group = sichuan.groupby('名称')['销量'].sum().reset_index()
  11. shanxi_group = shanxi.groupby('名称')['销量'].sum().reset_index()
  12. guangdong_group = guangdong.groupby('名称')['销量'].sum().reset_index()
  13. shanghai_sort = shanghai_group.merge(shanghai[['名称','评分']].drop_duplicates(),on='名称').sort_values(by='销量', ascending=False).head(10)
  14. beijing_sort = beijing_group.merge(beijing[['名称','评分']].drop_duplicates(),on='名称').sort_values(by='销量', ascending=False).head(10)
  15. jiangsu_sort = jiangsu_group.merge(jiangsu[['名称','评分']].drop_duplicates(),on='名称').sort_values(by='销量', ascending=False).head(10)
  16. sichuan_sort = sichuan_group.merge(sichuan[['名称','评分']].drop_duplicates(),on='名称').sort_values(by='销量', ascending=False).head(10)
  17. shanxi_sort = shanxi_group.merge(shanxi[['名称','评分']].drop_duplicates(),on='名称').sort_values(by='销量', ascending=False).head(10)
  18. guangdong_sort = guangdong_group.merge(guangdong[['名称','评分']].drop_duplicates(),on='名称').sort_values(by='销量', ascending=False).head(10)
  19. shanghai_sort.reset_index(drop=True,inplace=True)
  20. beijing_sort.reset_index(drop=True,inplace=True)
  21. jiangsu_sort.reset_index(drop=True,inplace=True)
  22. sichuan_sort.reset_index(drop=True,inplace=True)
  23. shanxi_sort.reset_index(drop=True,inplace=True)
  24. guangdong_sort.reset_index(drop=True,inplace=True)
  25. plt.figure()
  26. plt.bar(shanghai_sort['名称'],shanghai_sort['销量'])
  27. for i, v in enumerate(shanghai_sort['评分']):
  28. plt.text(i, shanghai_sort['销量'][i] + 0.2, str(v), ha='center')
  29. plt.xlabel('名称')
  30. plt.ylabel('销量')
  31. plt.title('上海市销量排名前十的景点')
  32. plt.xticks(rotation=45)
  33. plt.figure()
  34. plt.bar(beijing_sort['名称'], beijing_sort['销量'])
  35. for i, v in enumerate(beijing_sort['评分']):
  36. plt.text(i, beijing_sort['销量'][i] + 0.2, str(v), ha='center')
  37. plt.xlabel('名称')
  38. plt.ylabel('销量')
  39. plt.title('北京市销量排名前十的景点')
  40. plt.xticks(rotation=45)
  41. plt.figure()
  42. plt.bar(jiangsu_sort['名称'], jiangsu_sort['销量'])
  43. for i, v in enumerate(jiangsu_sort['评分']):
  44. plt.text(i, jiangsu_sort['销量'][i] + 0.2, str(v), ha='center')
  45. plt.xlabel('名称')
  46. plt.ylabel('销量')
  47. plt.title('江苏省销量排名前十的景点')
  48. plt.xticks(rotation='vertical')
  49. plt.figure()
  50. plt.bar(sichuan_sort['名称'], sichuan_sort['销量'])
  51. for i, v in enumerate(sichuan_sort['评分']):
  52. plt.text(i, sichuan_sort['销量'][i] + 0.2, str(v), ha='center')
  53. plt.xlabel('名称')
  54. plt.ylabel('销量')
  55. plt.title('四川省销量排名前十的景点')
  56. plt.xticks(rotation=45)
  57. plt.figure()
  58. plt.bar(shanxi_sort['名称'], shanxi_sort['销量'])
  59. for i, v in enumerate(shanxi_sort['评分']):
  60. plt.text(i, shanxi_sort['销量'][i] + 0.2, str(v), ha='center')
  61. plt.xlabel('名称')
  62. plt.ylabel('销量')
  63. plt.title('陕西省销量排名前十的景点')
  64. plt.xticks(rotation=45)
  65. plt.figure(figsize=(10,6))
  66. plt.bar(guangdong_sort['名称'], guangdong_sort['销量'])
  67. for i, v in enumerate(guangdong_sort['评分']):
  68. plt.text(i, guangdong_sort['销量'][i] + 0.2, str(v), ha='center')
  69. plt.xlabel('名称')
  70. plt.ylabel('销量')
  71. plt.title('广东省销量排名前十的景点')
  72. plt.xticks(rotation=45)

由此,我们结合这几个分析来回答这几个问题:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/372933
推荐阅读
相关标签
  

闽ICP备14008679号