数据清洗 -- 3.3 解析JSON文件 并转化成可用的DataFrame

"本文介绍了如何解析JSON文件并转化为DataFrame,包括读取文件、删除无用列、时间戳转换和经纬度提取。通过pandas的json_normalize处理"data",删除前9列,转换时间戳,并提取经纬度坐标,最终得到整洁的DataFrame。"
摘要由CSDN通过智能技术生成

数据清洗 – 3.3 解析JSON文件 并转化成可用的DataFrame


前言

从不同类型的数据源解析并读取数据是数据清洗的重要的环节。本篇文章讲述的是如何解析JSON文件,让我们开始吧。


提示:以下是本篇文章正文内容,下面案例可供参考

一、读取文件

百度网盘
链接: https://pan.baidu.com/s/1VmKij4jisUtPzyxaSUctwA
提取码: i8bd

Google Drive
https://drive.google.com/file/d/1W_Aw1x3BA0xaewjoZKzRKpVleqzdYBK0/view?usp=sharing


这个文件包含两部分,一个是”meta“的字典,一个是”data“的字典。
“meta”字典包含所有元信息,包括列名。“数据”字典实际上包含了我们想要的数据。

import json
with open("./Melbourne_bike_share.json") as json_file:
    json_data = json.load(json_file)
print (type(json_data))
json_data['meta']['view']

在这里插入图片描述

二、清洗数据

2.1 提取数据

我们可以使用json_normalize() 来把"data"中的数据转换成table并存在DataFrame里面。

from pandas.io.json import json_normalize
df = json_normalize(json_data,'data')
df.head()

可以看到这时的数据并不是十分的干净,我们还得继续处理。
通过查看具体是数据,其实前8列的数据(0-7)我们是不需要的,所以我们把这些数据drop掉。
在这里插入图片描述

2.2 删除无用列,并重置index

# 删除前9列
df.drop(range(8), axis=1, inplace=True)
# 添加列名称
df.columns = ['id','featurename','terminalname','nbbikes','nbemptydoc','uploaddate','coordinates']
# 以id为index
df.set_index(df.id, inplace= True)
df.drop('id', 1, inplace = True)
df.head()

在这里插入图片描述
现在我们还有两个事情要做,一个是目前的时间戳需要转换为标准的时间格式,二是坐标需要进一步加工。


2.3 时间戳转换

df['uploaddate'] = pd.to_datetime(df['uploaddate'], unit='s')
df.head()

结果显示时间格式变成标准时间的格式了,接下来我们提取经纬度。
在这里插入图片描述

2.4 提取经纬度

# 提取经纬度
df['lat'] = df['coordinates'].apply(lambda col: col[1]) 
df['lon'] = df['coordinates'].apply(lambda col: col[2])

# 删除原来的coordinates 列
df.drop('coordinates', 1, inplace = True)
# 把对应数据的类型转换成数字类型
df = df.apply(pd.to_numeric,errors='ignore') 
df.head()

经过了一系列的处理,我们得到了以下的数据。
在这里插入图片描述
现在就可以把它保存到csv文件或继续进行加工了。


总结

以上就是简单的JSON文件解析和数据提取。但这并不是数据清洗的全部,而仅仅是开始,目前只是将数据从数据存储文件中提取出来,并保存成相对容易操作的格式而已。接下来还需要进行数据内容的验证,比如检查是否有缺失值,是否存在数据不一致或错误数据,缺失值或数据不一致是否可以被修复,是否有重复的记录,是否存在离群值等。

下一篇文章会为大家介绍文本信息的预处理(Text Pre-processing)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值