机器学习训练营——机器学习爱好者的自由交流空间(入群联系qq:2279055353)
JSON介绍
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,方便人们阅读和编写。任何支持的数据类型都可以通过json来表示,例如字符串、数字、对象、数组等。但是对象和数组是比较特殊且常用的两种类型,其特点是:
-
对象表示为键值对
-
数据由逗号分隔
-
花括号保存对象
-
方括号保存数组
JSON 键值对是用来保存 JS 对象的一种方式。键/值对组合中的键名写在前面并用双引号 “” 包裹,使用冒号 : 分隔,然后紧接着值,例如:
{"firstName": "Json"}
JSON转成CSV
通常,数据文件是CSV格式的,即,数据之间用逗号分隔的形式。因此,当一个数据文件里有json变量时,需要先将这些变量转换成规则的csv格式,然后再加载统一成csv格式的数据集。
load_df()函数
自定义的函数load_df(), 实现转换json, 加载csv数据集的作用。
import os
import json
import numpy as np
import pandas as pd
from pandas.io.json import json_normalize
def load_df(csv_path='../input/train.csv', nrows=None):JSON_COLUMNS = ['device', 'geoNetwork', 'totals', 'trafficSource']df = pd.read_csv(csv_path, converters={column: json.loads for column in JSON_COLUMNS}, dtype={'fullVisitorId': 'str'}, # Important!!nrows=nrows)for column in JSON_COLUMNS:column_as_df = json_normalize(df[column])column_as_df.columns = [f"{column}.{subcolumn}" for subcolumn in column_as_df.columns]df = df.drop(column, axis=1).merge(column_as_df, right_index=True, left_index=True)print(f"Loaded {os.path.basename(csv_path)}. Shape: {df.shape}")return df
数据实践
加载前的数据集
这里的变量’device’, ‘geoNetwork’, ‘totals’, 'trafficSource’是json类型。
加载后的数据集
更多精彩内容请关注微信公众号“统计学习与大数据”