基于JSON数据统计指定文档访问国家并绘制直方图的实现咨询
国家访问量统计及直方图关联实现方案
1. 核心实现逻辑
- 先遍历所有读取完成的访问记录,筛选出
subject_doc_id和用户输入目标ID一致的条目 - 对筛选后的条目,统计
visitor_country字段的出现次数 - 将统计得到的国家列表、对应访问次数列表传入你已开发完成的直方图绘制函数即可
2. 代码示例
假设你已经完成了JSON数据读取,所有记录存储在列表变量all_visit_records中,用户输入的目标文档ID存储在变量target_doc_id中,Python实现代码如下:
from collections import Counter # 筛选目标文档的所有访问记录 target_records = [ item for item in all_visit_records if item.get("subject_doc_id") == target_doc_id ] # 统计不同国家的访问次数,自动跳过缺失国家字段的脏数据 country_visit_cnt = Counter( item["visitor_country"] for item in target_records if "visitor_country" in item ) # 转换为直方图绘制所需的输入格式:x轴为国家编码,y轴为对应访问次数 x_data = list(country_visit_cnt.keys()) y_data = list(country_visit_cnt.values()) # 调用你已经写好的直方图绘制方法即可,示例调用: # your_histogram_func(x=x_data, y=y_data, x_label="国家", y_label="访问次数", title="目标文档各国访问量分布")
3. 非标准JSON格式兼容处理
你提供的样例数据是多个JSON对象直接拼接、没有外层数组包裹的非标准格式,如果还没完成这部分解析可以参考以下代码:
import json import re # 读取原始数据文件 with open("你的数据文件路径", "r", encoding="utf-8") as f: raw_text = f.read() # 正则匹配所有独立的JSON对象 json_items = re.findall(r"\{[\s\S]*?\}", raw_text) # 解析为Python字典列表 all_visit_records = [json.loads(item) for item in json_items]
内容的提问来源于stack exchange,提问作者user17534067
相关产品推荐
相关产品推荐

