挑战2:Pandas 处理 json 文件

说明

本节实验为挑战,你将使用上一节实验中学习到的 Pandas 知识分析用户学习数据 json 文件,并从文件中统计出中指定的数据项。

挑战

首先在终端中,通过以下命令下载用户学习数据 json 文件 user_study.json:

cd ~/Code
wget http://labfile.oss.aliyuncs.com/courses/764/user_study.json

user_study.json 文件部分内容展示如下:

{"minutes": 30, "created_at": "2016-05-01 00:00:10", "user_id": 199071, "lab": "\u7528\u6237\u53ca\u6587\u4ef6\u6743\u9650\u7ba1\u7406", "course": "Linux \u57fa\u7840\u5165\u95e8\uff08\u65b0\u7248\uff09"}

可以看到,文件中每一项为用户学习记录,代表某用户的某一次学习,其中每一项字段含义如下:

  • user_id 用户 ID
  • lab 实验名称
  • course 课程名称
  • minutes 学习分钟数
  • created_at 学习时间

在本挑战中,你需要在 ~/Code/analysis.py Python 文件中编写一个解析并统计学习数据的函数 analysis,analysis 函数接受两个参数。第一个参数为学习数据 json 文件名称,其文件内容格式和 user_study.json 文件格式一致,第二个参数为 用户 ID。你需要使用 Pandas 读取 json 文件,并从中统计出第二个参数指定的用户 ID 的学习次数和总学习分钟数,也就是说函数将返回两个值,第一个为指定用户的学习时间,第二个为指定用户的总学习分钟数。

示例代码:

# 需要使用 json 包解析 json 文件
import json
import pandas as pd

def analysis(file, user_id):
    times = 0
    minutes = 0

    # 完成剩余代码

    return times, minutes

要求

  • 函数名必须是 analysis ;
  • 代码必须写入 ~/Code/analysis.py 文件中;
  • analysis 函数接受两个参数,第一个参数是 json 文件名称,第二个参数是用户 ID;
  • analysis 函数返回两个值,第一个值是指定用户的学习次数,第二个值是指定用户的学习分钟数;
  • 如果传递给 analysis 函数的文件不存在或者用户 ID 不存在时返回 0 即可;

提示

  • Pandas 中的 pandas.read_json 可以读取 json 文件;
  • Pandas 的 DataFrame 数据集可以使用形如 df[df['user_id'] == 5348] 的布尔索引过滤出 user_id 列等于 5348 的所有行;
  • user_study.json 文件包含的是 json 文本,包含了多项用户学习数据;
  • 默认实验环境使用的是 python 3.5,我们的实验均在 Anaconda 包含的 python 3.6.1 下执行。故在调试脚本时使用 anaconda3/bin/python 你的脚本.py 来执行,避免模块导入出错的问题。

results matching ""

    No results matching ""