Python数据分析查询

Python及数据分析应用实验报告

学生姓名

学号

上机时间

上机地点

得分

实验主题:数据查询分析

  • 问题描述

查询借阅量最大的十本书、查询被同一用户在一年中借阅多次的图书借阅情况

  • 实验环境

Pycharm3.11 Anaconda环境

三、主要实验步骤

样例:

1)问题分析: 查询借阅量最大的十本书需要先按照title进行分组,再使用value_counts()函数找出借阅量前十的书名和总借阅量,最后print打印输出结果

2)代码层次设计:根据上述思路,Python工程分为以下几个模块/函数:
 
  1. import pandas 库函数:生成随机点
  2. 添加年份列
  3. 按照title进行分组并查询要求结果
  4. 检验查询结果
 
 

3)各模块代码展示(附上代码或者代码截图):

查询借阅量最大的十本书

import pandas as pd

records=pd.read_csv('lending.dat')

#第一问

records['year'] = pd.to_datetime(records['date']).dt.year

records1=records.groupby(['bid','title'])[['uid']].size().sort_values(ascending=False)

print(records1)

top10_books=records['bid'].value_counts()[:10].index

result1=records[records['bid'].isin(top10_books)].groupby(['bid']).size().sort_values(ascending=False).head(10)

print(top10_books)

print(result1)


#第二问

result=records.groupby(['uid','title','year','bid']).size()[records.groupby(['uid','title','year','bid']).size()>=2].reset_index()[['uid','title','year']]

print(result)
#写法2

borrow_counts=records.groupby(['uid','title','year','bid']).size().reset_index(name='counts')

mutiple_borrows=borrow_counts[borrow_counts['counts']>1#筛选借阅次数>1的记录

print(mutiple_borrows)
 
书名与bid不一一对应例如:

bid不同但title相同,应以bid作为分组依据
若以title作为分组依据代码和查询结果如下:
import pandas as pd

records=pd.read_csv('lending.dat')

records['year'] = pd.to_datetime(records['date']).dt.year
top10_books=records['title'].value_counts()[:10].index

result1=records[records['title'].isin(top10_books)].groupby(['title']).size().sort_values(ascending=False).head(10)

print(top10_books)

print(result1)
 

4)运行结果如图所示,结论为

查询借阅量最大的十本书:

查询被同一用户在一年中借阅多次的图书借阅情况

  • 11
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值