2401_90025220 2024-12-28 17:30 采纳率: 0%
浏览 124
已结题

用Python完成一个任务

img


在豆瓣上爬取评分与评论,计算评分分布情况,并计算平均分,根据热评绘制词云,并将评分信息制作为饼图。

  • 写回答

41条回答 默认 最新

  • 阿里嘎多学长 2024-12-28 17:30
    关注
    获得0.15元问题酬金

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    问题解答

    你想使用 Python 完成一个任务,即爬取豆瓣上的评分与评论,计算评分分布情况、平均分、热评词云和评分饼图。

    下面是一个基本的解决方案:

    1. 使用 requestsBeautifulSoup 库爬取豆瓣页面,获取评分和评论信息。
    2. 使用 pandas 库将爬取的数据存储到 DataFrame 中。
    3. 使用 matplotlibwordcloud 库绘制评分分布图和词云图。
    4. 使用 seaborn 库绘制评分饼图。

    以下是一个简单的示例代码:

    import requests
    from bs4 import BeautifulSoup
    import pandas as pd
    import matplotlib.pyplot as plt
    from wordcloud import WordCloud
    import seaborn as sns
    
    # 爬取豆瓣页面
    url = "https://movie.douban.com/subject/1292052/"
    response = requests.get(url)
    soup = BeautifulSoup(response.content, 'html.parser')
    
    # 获取评分和评论信息
    ratings = []
    comments = []
    for comment in soup.find_all('div', class_='comment'):
        rating = comment.find('span', class_='rating').text
        comment_text = comment.find('span', class_='short').text
        ratings.append(float(rating))
        comments.append(comment_text)
    
    # 将数据存储到 DataFrame 中
    df = pd.DataFrame({'rating': ratings, 'comment': comments})
    
    # 计算评分分布情况
    rating_counts = df['rating'].value_counts()
    print(rating_counts)
    
    # 计算平均分
    average_rating = df['rating'].mean()
    print(average_rating)
    
    # 绘制评分分布图
    plt.hist(df['rating'], bins=5)
    plt.xlabel('Rating')
    plt.ylabel('Count')
    plt.title('Rating Distribution')
    plt.show()
    
    # 绘制词云图
    wordcloud = WordCloud().generate_from_frequencies(rating_counts)
    plt.imshow(wordcloud, interpolation='bilinear')
    plt.axis('off')
    plt.show()
    
    # 绘制评分饼图
    sns.set()
    plt.pie(rating_counts, labels=rating_counts.index, autopct='%1.1f%%')
    plt.title('Rating Distribution')
    plt.show()
    

    请注意,这只是一个简单的示例代码,实际上你可能需要处理更多的数据和错误情况。

    希望这个示例代码能够帮助你完成你的任务!

    评论

报告相同问题?

问题事件

  • 系统已结题 1月5日
  • 创建了问题 12月28日