ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

香港酒店数据分析

2021-11-27 23:00:09  阅读:180  来源: 互联网

标签:数据分析 酒店 香港 df 评分 plt pd print


数据读取
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

# 解决中文问题
plt.rcParams['font.sans-serif'] = 'SimHei'
# 读取数据
df = pd.read_excel('./香港酒店数据.xlsx')
print(df.head())
# 删除第一行的空值
df = df[1:]
# 重置索引
df.index = range(len(df))

# 删除Unnamed列
df = df.drop('Unnamed: 0', axis=1)
# print(df.head())
# print(df.tail())

# 重新设置列的名称
df = df.rename(columns={'字段1': '名字', '字段2': '类型', '字段3': '城市', '字段4': '地区',
                        '字段5': '地点', '字段6': '评分', '字段7': '评分人数', '字段8': '价格'})
# print(df.head())

# 查找出所有类型为“休闲度假”并且在湾仔地区的酒店
# 查找出所有地址在观塘或者油尖旺,评分大于4的酒店
print(df[(df['类型'] == '休闲度假') & (df['地区'] == '湾仔')])
print(df[((df['地区'] == '观塘') | (df['地区'] == '油尖旺')) & (df['评分'] > 4)])

# 找出缺失值数据用“其他”填充类型和地区
df['类型'].fillna('其他', inplace=True)
df['地区'].fillna('其他', inplace=True)
# 用评分均值填充评分缺失值
df['评分'].fillna(np.mean(df['评分']), inplace=True)
# 删除价格和评分人数的缺失值
df = df.dropna(axis=0, subset=['价格', '评分人数'])
df.drop_duplicates(inplace=True)
df.index = range(len(df))
# print(df.tail())

# 保存到处理好的数据到“酒店数据1.xlsx中
df.to_excel('酒店数据1.xlsx', index=False)

数据分析

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

# 解决中文问题
plt.rcParams['font.sans-serif'] = 'SimHei'
# 读取保存的预得理好的数据
df = pd.read_excel('./酒店数据1.xlsx')
# print(df.head())

# 查看“评分”的格式
print(df['评分'].dtypes)

# 并分别进行升序和降序排序.对酒店按照价格进行排名,计算“油尖旺”地区的均价
print(df.sort_values(by='评分', ascending=True))
print(df.sort_values(by='评分', ascending=False))
print(df.sort_values(by='价格', ascending=False)['名字'])
print(df[df['地区'] == '油尖旺']['价格'].mean())

# 描述性统计
print(df.describe())

# 所有价格的均值方差,最大最小值,中值
print(df['价格'].var())
print(df['价格'].max())
print(df['价格'].min())
print(df['价格'].median())

# 评分和价格之间的的相关系数,协方差
print(df[['评分', '价格']].corr())
print(df[['评分', '价格']].cov)

# 评分降序排序,评分相同时按价格升序排序
print(df.sort_values(by=['评分', '价格'], ascending=(False, True)))

# 评分小于3分的酒店数量和占比
print(len(df[df['评分'] < 3]))
print(len(df[df['评分'] < 3]) / len(df))

# 酒店评分大于等于4分的酒店的价格均值
print(df[df['评分'] >= 4]['价格'].mean())
# 计算出每个地区的酒店占总酒店数量的比例
print(df['地区'].value_counts() / len(df))
# 找出酒店评分人数排名前20的酒店,并计算他们的价格均值
print(df.sort_values(by='评分人数', ascending=False)[:20]['名字'])
print((df.sort_values(by='评分人数', ascending=False)[:20]['价格']).mean())
# 酒店分布的类型数量和地区数量
print(len(df['类型'].unique()))
print(len(df['地区'].unique()))
# 统计各个类型和地区包含的酒店数量。
print(df['类型'].value_counts())
print(df['地区'].value_counts())
绘制出每个地区酒店数量的柱状图
import pandas as pd
import matplotlib.pyplot as plt

# 解决中文问题
plt.rcParams['font.sans-serif'] = 'SimHei'
# 读取预处理后的数据
df = pd.read_excel('酒店数据1.xlsx')
# 绘制出每个地区酒店数量的柱状图,柱状颜色为红色.
data = df['地区'].value_counts()
# print(data)
x = data.index
y = data.values

plt.figure(figsize=(10, 6))
plt.title('各个地区酒店数量', fontsize=20)
plt.xlabel('地区',fontsize=16)
plt.ylabel('数量',fontsize=16)
for a, b in zip(x,y):
    # 第一个参数:x轴的位置,第一个参数:y轴的位置,第三个参数:显示的内容
    plt.text(a, b+0.2, b, ha='center',va='bottom',fontsize=12)

plt.bar(x,y,color='r',label='数量')

# x坐标轴的字体
plt.tick_params(labelsize=10)
# 调整x轴竖着显示
plt.xticks(rotation=90)
plt.legend()
plt.show()
绘制出每个价格等级酒店数量的柱状图
import pandas as pd
import matplotlib.pyplot as plt

# 解决中文问题
plt.rcParams['font.sans-serif'] = 'SimHei'
# 读取预处理后的数据
df = pd.read_excel('酒店数据1.xlsx')
# 绘制出每个价格等级酒店数量的柱状图。

# 先打印出最大和最小价格,明确划分区间
# print(df['价格'].max())
# print(df['价格'].min())
df['价格等级'] = pd.cut(df['价格'], [0, 250, 500, 1000, 5000, 15000], labels=['经济', '实惠', '中档', '高档', '奢华'])
print(df)
data = df['价格等级']

value = data.values
label = data.index
print(value)
print(label)

plt.figure(figsize=(10, 6))
plt.title('每个价格等级酒店数量', fontsize=20)
plt.xlabel('价格等级', fontsize=16)
plt.ylabel('数量', fontsize=16)

plt.bar(value, label, width=0.5, color='c', label='数量')

# x坐标轴的字体
plt.tick_params(labelsize=10)
# 给图像上加上图例
plt.legend()
plt.show()
绘制出各个价格等级占比的饼图 
# 绘制出各个价格等级占比的饼图。
import pandas as pd
import matplotlib.pyplot as plt

# 解决中文问题
plt.rcParams['font.sans-serif'] = 'SimHei'
# 读取预处理后的数据
df = pd.read_excel('酒店数据1.xlsx')

df['价格等级'] = pd.cut(df['价格'], [0, 250, 500, 1000, 5000, 15000], labels=['经济', '实惠', '中档', '高档', '奢华'])
# print(df)
data = df['价格等级'].value_counts()

value = data.values
label = data.index

plt.figure(figsize=(10, 6))
plt.title('价格等级占比')
plt.pie(value, labels=label, autopct='%.2f%%')

plt.show()
绘制出酒店评分的直方图
import pandas as pd
import matplotlib.pyplot as plt

# 解决中文问题
plt.rcParams['font.sans-serif'] = 'SimHei'
# 读取预处理后的数据
df = pd.read_excel('酒店数据1.xlsx')

# 绘制出酒店评分的直方图。
data = df['评分']
plt.hist(data, bins=8, edgecolor='k', alpha=0.5)
plt.title('酒店评分')
plt.show()
绘制出每个热门等级酒店评分均值的柱状图。(按照评分均值从小到大排序。)
import pandas as pd
import matplotlib.pyplot as plt

# 解决中文问题
plt.rcParams['font.sans-serif'] = 'SimHei'
# 读取预处理后的数据
df = pd.read_excel('酒店数据1.xlsx')

# 绘制出每个热门等级酒店评分均值的柱状图。(按照评分均值从小到大排序。)
df['价格等级'] = pd.cut(df['价格'], [0, 250, 500, 1000, 5000, 15000], labels=['经济', '实惠', '中档', '高档', '奢华'])
data = df['评分'].groupby(df['价格等级']).mean()

value = data.values
label = data.index

plt.title('每个热门等级酒店评分均值',fontsize=16)
plt.xlabel('价格等级',fontsize=12)
plt.ylabel('评分均值',fontsize=12)

plt.bar(label, value, color='b', label='数量')
for a, b in zip(label, value):
    plt.text(a, b, b, ha='center', va='bottom', fontsize=10)
plt.legend()
plt.show()
根据评分和价格信息,绘制散点图
import pandas as pd
import matplotlib.pyplot as plt

# 解决中文问题
plt.rcParams['font.sans-serif'] = 'SimHei'
# 读取预处理后的数据
df = pd.read_excel('酒店数据1.xlsx')

# 根据评分和价格信息,绘制散点图。
x = df['评分']
y = df['价格']
plt.figure(figsize=(10, 6))
plt.scatter(x, y, color='c')
plt.title('酒店评分与价格')
plt.xlabel('评分')
plt.ylabel('价格')
plt.show()

标签:数据分析,酒店,香港,df,评分,plt,pd,print
来源: https://blog.csdn.net/jjj_asteria/article/details/121585100

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有