数据预处理(csv-->json)

对于csv文件数据的预处理过程

1. csv文件读取并转换成列表存储

首先,我们将讨论从CSV文件中获取数据并将其转换为以JSON格式存储。 我们有一个示例CSV文件colors.csv,其中包含一些有关颜色的数据。 加载并打印内容时,我们可以看到每行对应一种颜色,并包含ID,颜色名称,该颜色的十六进制代码以及该颜色的红色,绿色和蓝色值 用于RGB代码。

import csv, json
from pprint import pprint

reader = csv.reader(open("./data/colors.csv", "r")) 
color_lists = list(reader)
pprint(color_lists[:8])
[['air_force_blue_raf', 'Air Force Blue (Raf)', '#5d8aa8', '93', '138', '168'],
 ['air_force_blue_usaf', 'Air Force Blue (Usaf)', '#00308f', '0', '48', '143'],
 ['air_superiority_blue',
  'Air Superiority Blue',
  '#72a0c1',
  '114',
  '160',
  '193'],
 ['alabama_crimson', 'Alabama Crimson', '#a32638', '163', '38', '56'],
 ['alice_blue', 'Alice Blue', '#f0f8ff', '240', '248', '255'],
 ['alizarin_crimson', 'Alizarin Crimson', '#e32636', '227', '38', '54'],
 ['alloy_orange', 'Alloy Orange', '#c46210', '196', '98', '16'],
 ['almond', 'Almond', '#efdecd', '239', '222', '205']]

2.将列表里面的数据转移到字典内

现在,我们可以遍历此颜色列表并创建字典来存储与每种颜色关联的值。 我们可以将这些词典放在另一个列表中:

color_dicts = []
for row in color_lists:
    
    color = {
        "id" : row[0],
        "name" : row[1],
        "hex_value" : row[2],
        "r" : row[3],
        "g" : row[4],
        "b" : row[5]
    }
    
    color_dicts.append(color)
pprint(color_dicts[:5])

输出:

[{'b': '168',
  'g': '138',
  'hex_value': '#5d8aa8',
  'id': 'air_force_blue_raf',
  'name': 'Air Force Blue (Raf)',
  'r': '93'},
 {'b': '143',
  'g': '48',
  'hex_value': '#00308f',
  'id': 'air_force_blue_usaf',
  'name': 'Air Force Blue (Usaf)',
  'r': '0'},
 {'b': '193',
  'g': '160',
  'hex_value': '#72a0c1',
  'id': 'air_superiority_blue',
  'name': 'Air Superiority Blue',
  'r': '114'},
 {'b': '56',
  'g': '38',
  'hex_value': '#a32638',
  'id': 'alabama_crimson',
  'name': 'Alabama Crimson',
  'r': '163'},
 {'b': '255',
  'g': '248',
  'hex_value': '#f0f8ff',
  'id': 'alice_blue',
  'name': 'Alice Blue',
  'r': '240'}]

3.字典可以轻易转换为JSON文件

json.dump(color_dicts, open("data/color-dicts.json", "w"))

4.notes

(1). json.dumps() json.dump()的区别

dumps是将dict转化成str格式,loads是将str转化成dict格式。

dump和load也是类似的功能,只是与文件操作结合起来了。

(2). 如何让json file数据变得更加有可读性?

nobel_laureates = json.load(open("data/nobel-laureates.json", "r"))

with open("./data/nobel-laureates-scalable.json", 'w') as f:
    for laureate in nobel_laureates['laureates']:
        f.write(json.dumps(laureate) + "\n")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值