这是十年的某图书馆读者借阅记录,有读者号(uid)、图书号(bid)、图书标题(title) 和借阅日期(date)四个列。 import pandas as pd records = pd.read_csv( 'c:\\temp\\lending.dat') 1)查询每个用户借了多少书 2)查询借书最多的10位用户 3)查询每个用户最早几几年借书 4)查询每个用户每年借书借了几本书 5)查询平均年借书量最多的十位用户
时间: 2024-03-03 21:48:40 浏览: 166
从大数据看图书借阅.docx
好的,我会根据你提供的数据集和问题,逐一为你解答。
首先,你需要导入 Pandas 库,使用 `read_csv()` 函数读取数据集,然后将其存储在一个名为 `records` 的 DataFrame 中,代码如下:
```python
import pandas as pd
records = pd.read_csv('c:\\temp\\lending.dat')
```
1. 查询每个用户借了多少书
你可以使用 Pandas 的 `groupby()` 和 `count()` 函数来查询每个用户借了多少书,代码如下:
```python
books_per_user = records.groupby('uid').count()['bid']
print(books_per_user)
```
其中,`groupby('uid')` 表示按照 `uid` 列进行分组,`count()['bid']` 表示计算每个组中 `bid` 列的数量,即每个用户借了多少书。
2. 查询借书最多的10位用户
你可以使用 Pandas 的 `groupby()`、`count()` 和 `nlargest()` 函数来查询借书最多的10位用户,代码如下:
```python
top_10_users = records.groupby('uid').count()['bid'].nlargest(10)
print(top_10_users)
```
其中,`nlargest(10)` 表示取出数量最多的前10个用户。
3. 查询每个用户最早几几年借书
你可以使用 Pandas 的 `groupby()` 和 `min()` 函数来查询每个用户最早几几年借书,代码如下:
```python
earliest_year_per_user = records.groupby('uid').min()['date'].apply(lambda x: int(str(x)[:2]))
print(earliest_year_per_user)
```
其中,`min()['date']` 表示每个用户最早的借书日期,`apply(lambda x: int(str(x)[:2]))` 表示将日期转换为年份的前两位数字。
4. 查询每个用户每年借书借了几本书
你可以使用 Pandas 的 `groupby()`、`resample()` 和 `count()` 函数来查询每个用户每年借书借了几本书,代码如下:
```python
books_per_year_per_user = records.set_index('date').groupby('uid').resample('Y').count()['bid']
print(books_per_year_per_user)
```
其中,`set_index('date')` 表示将 `date` 列设置为索引,`resample('Y')` 表示按年进行重采样,`count()['bid']` 表示计算每年每个用户借了多少书。
5. 查询平均年借书量最多的十位用户
你可以使用 Pandas 的 `groupby()`、`resample()`、`count()` 和 `mean()` 函数来查询平均年借书量最多的十位用户,代码如下:
```python
avg_books_per_year_per_user = records.set_index('date').groupby('uid').resample('Y').count()['bid'].mean(level='uid')
top_10_avg_users = avg_books_per_year_per_user.nlargest(10)
print(top_10_avg_users)
```
其中,`mean(level='uid')` 表示按照 `uid` 列计算每个用户的平均年借书量,`nlargest(10)` 表示取出平均年借书量最多的前10个用户。
阅读全文