Python jsonlines文件读、写、去重

本文介绍如何使用Python的jsonlines库进行JSON Lines文件的读写操作,并演示了如何去除重复记录的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import jsonlines  #导入
# 写入
with jsonlines.open("./写入测试.jsonlines", 'w') as w:
    w.write({"第一行": "123"})
    w.write({"第二行": "456"})
    w.write({"第一行": "123"})
    w.write(["第四行"])
    w.write(("第五行", "789"))
"""
    {"第一行": "123"}
    {"第二行": "456"}
    {"第一行": "123"}
    ["第四行"]
    ["第五行", "789"]
"""
# 读取
with jsonlines.open("./写入测试.jsonlines") as f:
    for line in f:
        print(line)
# or
with open("./写入测试.jsonlines", "r", encoding='utf-8') as f:
    for line in jsonlines.Reader(f):
        print(line)
# 去重(以文本读,以文本写。)
with open("./写入测试.jsonlines", "r", encoding="utf-8") as f:
    temp = set(f.readlines())
with open("./去重测试.jsonlines", "w", encoding="utf-8") as w:
    for i in temp:
        w.write(i)

总结:只用open()打开时,要注意使用encoding='utf-8’指定编码;用jsonlines.open()打开时,不需要指定编码。

### 数据获取与处理 #### 地铁线路数据的获取 可以通过网络爬虫技术从公开的地图服务接口(如高德地图、百度地图等)抓取北京地铁线路的相关数据。以下是基于 `requests` 和 `json` 库的一个基本示例,展示如何通过 API 或者抓包的方式获取北京地铁线路信息: ```python import requests def fetch_subway_lines(city="北京市"): url = f"https://restapi.amap.com/v3/config/district?keywords={city}&key=YOUR_API_KEY" response = requests.get(url) data = response.json() if data['status'] != '1': raise Exception(f"Error fetching data: {data}") subway_url = "https://ditu.amap.com/service/subwayservice/station/linesName?&c=" city_code = data["districts"][0]["adcode"] lines_response = requests.get(subway_url + city_code) lines_data = lines_response.json() return lines_data beijing_subway_lines = fetch_subway_lines("北京市") print(beijing_subway_lines) ``` 上述代码利用了高德地图开放平台提供的行政区划查询接口以及地铁线路信息服务接口来获取北京地铁线路的具体信息。 #### 数据清洗与预处理 在实际应用中,原始数据可能包含一些无意义或者冗余的内容,因此需要对其进行必要的清理工作。例如复记录、填补缺失值等操作都可以借助 Pandas 工具完成[^1]。 ```python import pandas as pd # 假设已经得到了一份CSV文件形式存储的地铁站点列表 df_data = pd.read_csv('subway.csv', sep=',') print(df_data) # 处理缺失值 print('删除之前的行:', df_data.shape) print(df_data.info()) df_cleaned = df_data.dropna() # 移除含有任何NA/NAN的行 print('删除之后的行:', df_cleaned.shape) # 清洗复项 df_unique = df_cleaned.drop_duplicates() print('后的形状:', df_unique.shape) ``` 此部分展示了如何掉那些不完整的样本,并且保证最终得到的是独一无二的有效观测值集合。 #### 可视化分析 对于大规模的空间分布型数据集来说,仅仅依靠表格难以直观理解整体趋势特征;此时引入图形表达手段就显得尤为要了。下面列举了几种常用的绘图方法及其对应的库函数调用实例[^2]: - **折线图**: 描述各条路线之间的连接关系; - **热力图**: 展现特定区域内的人流量密度情况; - **词云图**: 统计各个站名出现频率从而反映热门程度差异。 ```python import matplotlib.pyplot as plt from wordcloud import WordCloud # 折线图绘制 plt.figure(figsize=(10,6)) for line_name in set(df_unique['line']): subset = df_unique[df_unique['line']==line_name] plt.plot(subset['longitude'], subset['latitude'], label=line_name) plt.legend() plt.show() # 构建词云对象 wc = WordCloud(font_path='simhei.ttf').generate(' '.join(list(df_unique['station']))) # 显示图像 plt.imshow(wc, interpolation='bilinear') plt.axis("off") plt.show() ``` 以上脚本片段分别实现了按照行驶路径顺序连点成线的效果渲染以及依据车站名称构建文字云图案两项功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值