【2019.06.07】【学习笔记】关于最近学习上遇到的一些坑

最近一直在做5147,5148,对于数据的可视化还有数据的处理都有了新的认识。这里记录一下我写代码过程中遇到过的一些坑。

首先,我比较喜欢用python写code。

在我印象当中,不管是用python处理csv文件,然后输出成json文件的时候都会存在一个问题。那就是单引号,双引号的问题。使用json.dumps的时候,python会自动把json文件保存成单引号,这个时候在读取的时候是没有问题的。但是就规范性而言,我们需要把json file保存成双引号。 比如:在我做5147的时候,在wrangling 数据之后,我觉得数据是没有问题了,之后拿到json校监器里查证发现数据格式不正确。

正确的json格式数据:

json = '{"name":"imooc"}'; // 这个是正确的JSON格式
 
json = "{\"name\":\"imooc\"}"; // 这个也是正确的JSON格式
 
json = '{name:"imooc"}'; // 这个是错误的JSON格式,因为属性名没有用双引号包裹
 
json = "{'name':'imooc'}";//这个也是错误的JSON格式,属性名用双引号包裹,而它用了单引号
 
// 检验JSON格式是否正确,可以使用 JSON.parse(json); 如果是正确的JSON格式,会返回一个对象
// 否则会报错

用python输出时要注意,加上:

x = str(x)  // 变换成string 格式
x = x.replace("'",'"')  // 替换所有单引号成双引号

json_x = json.dumps(x)  // 转换成json格式

with open('data.json', 'w') as json_file:  // 输出
    json_file.write(json_x)

对于可视化部分,因为一直在做D3的学习和研究,下面这个例子对于数据的导入,我们可以这样处理:

d3.json("data.json", function(d){
//        console.log(d)
        var json = JSON.parse(d)
        // 获取每个layer 的总值
        var total = function(layer){
            
            for(var i = 0; i < layer.length; i++){
                for(var key in layer[i]){
                    layer[i][key]
                }
            }
            
        }

这里我需要遍历每个json的obj的key 和 value 这个for循环可以这么写,对于python里的可以用更简单的enumerate来进行:

import re
for index,value in enumerate(df.bResult): // 遍历bResult 里所有值和位置
        if value == 1:  // 这里是判断,可以忽略
            towers = re.findall('\d+.\d',df.bTowers[index])  // 善于使用regular expression 这里的例子是在一个string里,寻找所有小数点一位之后的数字
            towers = sorted(towers)  // 排序 为了寻找 最小值
            first_tower.append(int(float(towers[0])))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Keepdreamlive

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值