已经将从豆瓣读书网爬取的评分和评论人数数据存储到了MongoDB中,求出各个评分占百分比图
时间: 2024-02-13 12:05:07 浏览: 30
好的,您可以使用MongoDB的聚合框架来实现此操作。首先,您需要使用聚合管道中的`$group`操作符按评分对文档进行分组,并计算每个分组中的文档数量。然后,您需要使用`$project`操作符计算每个评分的百分比。
以下是一个可能的聚合查询示例:
```
db.book_ratings.aggregate([
{
$group: {
_id: "$rating",
count: { $sum: 1 }
}
},
{
$project: {
_id: 0,
rating: "$_id",
percent: { $multiply: [ { $divide: [ "$count", { $sum: "$count" } ] }, 100 ] }
}
}
])
```
这个查询将按评分对`book_ratings`集合中的文档进行分组,并计算每个分组中的文档数量。然后,它将使用`$project`操作符计算每个评分的百分比,将结果文档中的评分和百分比字段分别命名为`rating`和`percent`。
您可以将此查询复制并粘贴到MongoDB的shell中运行,以获取各评分占百分比的结果。
相关问题
用python爬取豆瓣读书网中的评分和评论人数存储到mongodb中的数据怎么查看
首先,你需要确保已经安装了Python的MongoDB驱动程序——pymongo。
接下来,你可以使用以下代码将豆瓣读书网中的评分和评论人数存储到MongoDB中:
```python
import requests
from bs4 import BeautifulSoup
from pymongo import MongoClient
# 连接到MongoDB
client = MongoClient()
db = client['douban']
collection = db['books']
# 爬取数据并存储到MongoDB中
url = 'https://book.douban.com/top250'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
books = soup.find_all('tr', class_='item')
for book in books:
rating = book.find('span', class_='rating_nums').text.strip()
comments = book.find('span', class_='pl').text.strip()
data = {'rating': rating, 'comments': comments}
collection.insert_one(data)
```
上述代码将豆瓣读书网中的评分和评论人数爬取下来,并将其存储到名为“douban”的数据库中的名为“books”的集合中。
要查看MongoDB中的数据,你可以使用以下代码:
```python
# 查询所有数据
for data in collection.find():
print(data)
# 查询评分大于等于9.0的书籍
for data in collection.find({'rating': {'$gte': '9.0'}}):
print(data)
```
上述代码将打印出MongoDB中的所有数据,并查询评分大于等于9.0的书籍。
已经将从豆瓣读书网爬取的评分和评论人数数据存储到了MongoDB中,使用pandas库对获取的数据进行转化,求中位数,求最高值和最低值,求四分卫数据
好的,您的问题是如何使用pandas库对MongoDB中存储的数据进行转化并进行一些统计分析。下面是一个简单的代码示例,可以帮助您完成这个任务:
```python
import pandas as pd
from pymongo import MongoClient
# 连接MongoDB数据库
client = MongoClient('localhost', 27017)
db = client['豆瓣读书']
collection = db['评分']
# 从MongoDB中读取数据
data = pd.DataFrame(list(collection.find()))
# 转化数据类型
data['评分'] = data['评分'].astype(float)
data['评论人数'] = data['评论人数'].astype(int)
# 计算中位数、最高值、最低值和四分位数
median = data['评分'].median()
max_value = data['评分'].max()
min_value = data['评分'].min()
q1 = data['评分'].quantile(0.25)
q3 = data['评分'].quantile(0.75)
print('中位数:', median)
print('最高值:', max_value)
print('最低值:', min_value)
print('四分位数:', q1, q3)
```
这段代码首先使用pandas库和pymongo库连接到MongoDB数据库,并读取了名为“评分”的集合中的数据。然后,我们将“评分”和“评论人数”两列的数据类型分别转化为float和int类型。最后,我们使用pandas中的一些统计函数来计算中位数、最高值、最低值和四分位数,并将结果打印出来。