酒店评价数据分析

酒店评价数据分析


第一关:酒店评价数据分析


任务描述

根据附件文件对酒店评价数据进行分析,本题使用jieba库中的lcut函数对数据进行分词。


 1. import jieba
 2. test_str = '武汉理工大学是一所世人仰慕的大学'` 
 3. result = jieba.lcut(test_str) # 参数是字符串,结果是将字符串切分为词的列表 `
 4. print(result) # ['武汉理工大学', '是', '一所', '世人', '仰慕', '的', '大学']

文件数据每行包括评论属性和评论内容两个数据,其中评论属性中’1‘代表好评,’0‘代表差评。

要求实现以下功能:


 1. with open('comment.csv', 'r', encoding='GBK') as f:
 2.    ls=[i.strip().split(',',maxsplit=1) for i in f.readlines()[1:]]

输入n

如果n为’总评‘,分别输出该文件评论总数,好评条数,差评条数,输出格式参照示例一。

如果n为’平均‘,输出该文件中所有评论内容的平均长度(不需要排除字母,标点符号和数字),输出四舍五入后的整数,输出格式参照示例二。

如果n为’好评‘,对文件中所有好评进行词频分析,并输出词频出现最多的前15个词以及出现次数,输出格式参照示例三

如果n为’差评‘,对文件中所有差评进行词频分析,并输出词频出现最多的前15个词以及出现次数,输出格式参照示例四

注:3,4两项功能中统计的词语,要求长度不小于2,不是数字组成,并且不是排除词.

排除词 
ex=['不错','比较','可以','感觉','没有', '我们','就是','还是','非常','但是', '不过','有点','一个','一般','下次', '携程','不是','晚上','而且','他们', '什么','不好','时候','知道','这样', '这个','还有','总体','位置','客人', '因为','如果','这里','很多','选择', '居然','不能','实在','不会','这家', '结果','发现','竟然','已经','自己', '问题','不要','地方','只有','第二天', '酒店','房间','虽然']‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

如果n非以上输入,输出’无数据‘,格式参照示例五
输入输出示例
示例只是输出格式示例,其中数据均与题目无关!

注意:

为屏蔽jieba库系统信息,本题要求在代码开始处加入如下代码:


 1. import jieba
 2. import logging
 3. jieba.setLogLevel(logging.INFO)

示例 1

输入:
总评
输出:
总评论: 8888
好评: 6666
差评: 2222

示例 2

输入:
平均
输出:
86

示例 3

输入:
好评

输出:
好像: 1000
也许: 901
早餐: 817
偶尔: 749
环境: 694
设施: 669
无论: 596
价格: 495
干净: 428
程序: 419
服务员: 337
免费: 269
交通: 206
餐厅: 162
性价比: 154
示例 4

输入:差评
输出:
恶劣: 857
服务: 788
前台: 766
服务员: 681
早餐: 632
宾馆: 632
胡说: 502
价格: 432
退房: 344
老虎: 324
电话: 319
态度: 317
卫生间: 315
点评: 214
方便: 204


代码如下

import jieba
 
 
def dosomething(start, end):
    counts = {
   }
    k = start
    while k < end
### 使用Python进行酒店评价数据分析 #### 获取数据 为了进行有效的数据分析,首先需要获取酒店评价的相数据。这可以通过网络爬虫来实现,也可以从公开的数据集下载。如果选择使用爬虫,则可以借助`requests`和`BeautifulSoup`库来抓取网页上的评论信息。 ```python import requests from bs4 import BeautifulSoup url = 'http://example.com/hotel_reviews' # 假设这是目标网站URL response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') reviews = soup.find_all('div', class_='review') # 根据实际HTML结构调整查找条件 ``` #### 清洗与预处理 收集到原始数据之后,通常还需要对其进行清洗以去除不必要的部分并转换成适合分析的形式。Pandas 是一个非常适合用于此目的的库[^1]。 ```python import pandas as pd data = [] for review in reviews: text = review.find('p').get_text(strip=True) # 提取消除空白后的纯文本内容 rating = int(review['aria-label'].split()[0]) # 解析评分数值 data.append({'text': text, 'rating': rating}) df = pd.DataFrame(data) print(df.head()) ``` #### 探索性数据分析 (EDA) 完成初步准备后,下一步是对数据执行探索性的统计分析,了解其分布特征以及可能存在的模式或趋势。Matplotlib 和 Seaborn 可帮助创建直观易懂的图表来进行可视化展示。 ```python import matplotlib.pyplot as plt import seaborn as sns sns.set(style="whitegrid") plt.figure(figsize=(8,6)) ax = sns.countplot(x='rating', data=df, palette="Blues_d") # 计算平均分和其他描述性统计数据 mean_rating = df['rating'].mean() median_rating = df['rating'].median() print(f'Mean Rating: {mean_rating:.2f}') print(f'Median Rating: {median_rating}') plt.show() ``` #### 文本情感分析 对于每条评论中的文字部分,还可以应用自然语言处理技术评估顾客的情绪倾向——正面还是负面。TextBlob 库简化了这一过程,允许快速构建基础的情感分类器。 ```python from textblob import TextBlob def analyze_sentiment(text): analysis = TextBlob(text) return "positive" if analysis.sentiment.polarity > 0 else ("negative" if analysis.sentiment.polarity < 0 else "neutral") df['sentiment'] = df['text'].apply(analyze_sentiment) pos_count = sum(df['sentiment']=='positive') neg_count = sum(df['sentiment']=='negative') print(f'Positive Reviews Count: {pos_count}') print(f'Negative Reviews Count: {neg_count}') ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏随枫散尽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值