当前位置:   article > 正文

python实验课程设计题目:酒店数据指标分析(若有问题恳请提出)_使用python多种包库对大量酒店信息数据,包括酒店的名称、地址、描述信息特征进行

使用python多种包库对大量酒店信息数据,包括酒店的名称、地址、描述信息特征进行

第一步.数据预处理

  1. import pandas as pd
  2. import numpy as np
  3. df = pd.read_excel('./香港酒店数据.xlsx')
  4. print(df.head())
  5. df = df.drop('Unnamed: 0',axis=1)
  6. df=df[1:]
  7. df.index=range(0,len(df))
  8. print(df.head())
  9. #重新设置数据的索引,重新设置列名称为'名字','类型','城市','地区','地点','评分','评分人数','价格'
  10. df.columns=['名字','类型','城市','地区','地点','评分','评分人数','价格']
  11. #查找出所有类型为“休闲度假”并且在湾仔地区的酒店
  12. print(df[(df['类型']=='休闲度假')&(df['地区']=='湾仔')])
  13. #查找出所有地址在观塘或者油尖旺,评分大于4的酒店
  14. df['评分']=df['评分'].astype(np.float64)
  15. print(df[((df['地区']=='湾仔')|(df['地区']=='观塘')) & (df['评分']>4)])
  16. #找出缺失值数据用“其他”填充类型和地区
  17. df['地区']=df['地区'].fillna('其他')
  18. df['类型']=df['类型'].fillna('其他')
  19. #用评分均值填充评分缺失值
  20. df['评分'].fillna(np.mean(df['评分']),inplace=True)
  21. #删除价格和评分人数的缺失值
  22. df=df.dropna()
  23. #保存到处理好的数据到“酒店数据1.xlsx中
  24. df.to_excel('./酒店数据1.xlsx')

第二步.数据分析

  1. import pandas as pd
  2. import numpy as np
  3. df = pd.read_excel('./酒店数据1.xlsx')
  4. print(df['评分'].dtype)
  5. print(df.sort_values(by='评分')[:-1])
  6. print(df.sort_values(by='评分',ascending=False)[:-1])
  7. print(df['评分'].mean())
  8. '''4.286394590153922'''
  9. print(df.describe())
  10. ''' Unnamed: 0 评分 评分人数 价格
  11. count 397.000000 397.000000 397.000000 397.000000
  12. mean 200.654912 4.286395 2511.929471 681.659950
  13. std 118.315211 0.483998 4566.627028 906.282671
  14. min 0.000000 1.500000 1.000000 67.000000
  15. 25% 99.000000 4.200000 96.000000 247.000000
  16. 50% 198.000000 4.400000 869.000000 418.000000
  17. 75% 300.000000 4.600000 3283.000000 766.000000
  18. max 419.000000 4.900000 45463.000000 12926.000000
  19. '''
  20. print(df['价格'].mean())
  21. print(df['价格'].median())
  22. print(df['价格'].var())
  23. print(df['价格'].max())
  24. print(df['价格'].min())
  25. #相关系数
  26. print(df[['价格','评分']].corr())
  27. #协方差
  28. print(df[['价格','评分']].cov())
  29. #评分相同时按价格升序排序
  30. print(df.sort_values(by=['评分','价格'],ascending=[False,True])[:-1])
  31. #评分小于3分的酒店数量和占比
  32. print(len(df[df['评分']<3]))
  33. print((len(df[df['评分']<3])/len(df)))
  34. #酒店评分大于等于4分的酒店的价格均值
  35. print(df[df['评分']>=4]['价格'].mean())
  36. #计算出,评分小于3分的酒店数量和占比
  37. per = str(round((len(df[df['评分']<3])/len(df)) * 100,2))+ '%'
  38. print(per)
  39. #找出酒店评分人数排名前20的酒店
  40. print(df.sort_values(by='评分人数')[:20]['价格'].mean())
  41. #酒店分布的类型数量和地区数量
  42. print(df['类型'].unique())
  43. print(df['地区'].unique())
  44. #计算出每个地区的酒店占总酒店数量的比例
  45. per = round((df['地区'].value_counts()/len(df)) * 100,2)
  46. print(per.astype(str) + '%')

第三步.画图(图形报表)

        1.各个价格等级占比的饼图

  1. import pandas as pd
  2. import matplotlib.pyplot as plt
  3. # 解决中文乱码问题
  4. plt.rcParams['font.sans-serif']='SimHei'
  5. # 解决负号无法显示问题
  6. plt.rcParams['axes.unicode_minus']=False
  7. df = pd.read_excel('酒店数据1.xlsx')
  8. df['价格等级'] = pd.cut(df['价格'],[0,200,500,1000,3000,100000],labels=['一星级','二星级','三星级','四星级','五星级'])
  9. data = df['价格等级'].value_counts()
  10. print(data)
  11. x = data.values
  12. y = x/sum(x)
  13. print(x)
  14. print(y)
  15. plt.figure(figsize=(15,10))
  16. plt.pie(y,labels=data.index,autopct='%.1f %%')
  17. plt.title('各个价格等级占比')
  18. #显示图例
  19. plt.legend()
  20. plt.show()

        2.酒店评分的直方图

  1. import pandas as pd
  2. import matplotlib.pyplot as plt
  3. # 解决中文乱码问题
  4. plt.rcParams['font.sans-serif']='SimHei'
  5. # 解决负号无法显示问题
  6. plt.rcParams['axes.unicode_minus']=False
  7. df = pd.read_excel('酒店数据1.xlsx')
  8. plt.figure(figsize=(10,6))
  9. plt.hist(df['评分'],bins=10,edgecolor='k')
  10. plt.title('酒店评分')
  11. plt.xlabel('分数')
  12. plt.ylabel('酒店数量')
  13. plt.show()

        3.每个地区酒店数量的柱状图

  1. # 解决负号无法显示问题
  2. plt.rcParams['axes.unicode_minus']=False
  3. df = pd.read_excel('酒店数据1.xlsx')
  4. data = df['地区'].value_counts()
  5. print(data)
  6. x = data.index
  7. y = data.values
  8. plt.figure(figsize=(10,6))
  9. plt.bar(x,y,color='r',width=0.8)
  10. plt.title('每个地区酒店数量分布',fontsize=20)
  11. plt.xlabel('地区',fontsize=16)
  12. plt.ylabel('酒店数量',fontsize=16)
  13. #调整x轴竖着显示
  14. plt.xticks(rotation=90)
  15. #显示每个轴的数字
  16. for a,b in zip(x,y):
  17. #第一参数x轴的位置,第二个参数就是y轴的位置,第三个参数显示的文本内容
  18. plt.text(a,b,b,ha='center',va='bottom',fontsize=10)
  19. plt.show()

        4.价格等级酒店数量的柱状图

  1. import pandas as pd
  2. import matplotlib.pyplot as plt
  3. # 解决中文乱码问题
  4. plt.rcParams['font.sans-serif']='SimHei'
  5. # 解决负号无法显示问题
  6. plt.rcParams['axes.unicode_minus']=False
  7. df = pd.read_excel('酒店数据1.xlsx')
  8. df['热门等级'] = pd.cut(df['价格'],[0,300,600,1000,3000,20000],labels=['特惠','廉价','标准','昂贵','豪华'])
  9. print(df.head())
  10. group = df['评分'].groupby(df['热门等级']).sum().sort_values()
  11. print(group)
  12. x = group.index
  13. y = group.values
  14. plt.bar(x,y,width=0.5)
  15. for a,b in zip(x,y):
  16. plt.text(a,b,round(b,2),ha='center',va='bottom')
  17. plt.show()

        5.每个热门等级酒店评分均值的柱状图

  1. import pandas as pd
  2. import matplotlib.pyplot as plt
  3. # 解决中文乱码问题
  4. plt.rcParams['font.sans-serif']='SimHei'
  5. # 解决负号无法显示问题
  6. plt.rcParams['axes.unicode_minus']=False
  7. df = pd.read_excel('酒店数据1.xlsx')
  8. df['热门等级'] = pd.cut(df['价格'],[0,300,600,1000,3000,20000],labels=['特惠','廉价','标准','昂贵','豪华'])
  9. print(df.head())
  10. group = df['评分'].groupby(df['热门等级']).mean().sort_values()
  11. print(group)
  12. x = group.index
  13. y = group.values
  14. plt.bar(x,y,width=0.5)
  15. for a,b in zip(x,y):
  16. plt.text(a,b,round(b,2),ha='center',va='bottom')
  17. plt.show()

        6.评分价格散点图

  1. import pandas as pd
  2. import matplotlib.pyplot as plt
  3. plt.rcParams['font.sans-serif']='SimHei'
  4. # 解决负号无法显示问题
  5. plt.rcParams['axes.unicode_minus']=False
  6. df = pd.read_excel('酒店数据1.xlsx')
  7. x = df['价格']
  8. y = df['评分']
  9. plt.figure(figsize=(10,8))
  10. plt.scatter(x, y, color='b')
  11. plt.title('酒店价格与评分')
  12. plt.xlabel('价格')
  13. plt.ylabel('评分')
  14. plt.show()

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

闽ICP备14008679号