数据分析day1:json数据处理

作者: james_chang | 来源:发表于2018-05-25 11:16 被阅读60次

    数据来自《利用python进行数据分析》附加数据文件,本篇使用采集的用户匿名数据

    读取一行数据

    很乱,很难看懂

    利用第三方转换为易读模式
    每一行都是一个json格式数据,里面有不少数据,目前我能看出来几个:时区,国家,浏览器,URL啥的

    从第二行开始解释一下:
    列表推导式是经常使用的,后半句for line in open(path)一行一行读取这个文件每一行为一个元素,最后输出为一个列表
    json.loads(line)又对每一行的json数据进行了处理转换为了dict(字典)
    所以最终的输出是一个列表(当然这是毋庸置疑的列表推导式肯定返回列表),里面的每一个元素都是字典。

    可以看到输出的第一个元素:一个字典


    报错keyerror

    这里抛出了一个错误,咋一看语句没啥错误,但是为什么抛出这个错误呢,这里我直接说了:这个列表中的每一个字典并不是都有(时区)tz字段,所以有的就会找不到key啊,所以会抛出keyerror

    如何解决:列表推导式加判断


    可以看到这次可以了,下面再来解释下这个列表推导式:
    首先明确records是一个列表,for rec in records这里的recrecords中的元素:字典
    这里就是遍历records中的每一个字典
    原先是直接将每一个字典中的时区字段取出来组成一个新的列表
    但是并不是每一个字典中都有时区字段,所有加了个判断if 'tz' in rec如果这个字典存在这个key'tz'再将它取出来
    综上希望能完全理解这个列表推导式,会对我们后面的学习有很大帮助
    最后输出为一个列表可以切片操作取出前十个看一下

    先用笨方法进行计数:

    两种方法
    两种方法都能实现,第二种可以记一下,生成了一个字典,但是其中的所有value存在切默认为0
    美国纽约
    第二个函数生成的字典很神奇,一个没有设置的key,依然存在,且value为0
    美国纽约的记录数为1251
    前十位时区及其计数值
    count_dict.items()返回一个可以遍历的元组数组,然后计数和时区换下位置,最后输出一个列表
    sort()方法对列表进行升序排序(默认升序,可自己设定)

    当然有简单的方法

    简单方法
    标准库collections.Counter
    使用Counter类直接对这个列表进行了计数
    使用most_common(int)函数直接进行排序与取值

    下面要学的是今天的重头戏,利用科学计算库pandas来对时区进行计数

    首先了解一下DataFrame

    DataFrame是pandas中最重要的数据结构,它用于将数据表示为一个表格先看一个简单的例子


    DataFrame

    内容太多,最好自己尝试一下,这里的参数紧接上文,是上文中的参数

    这里输出的是摘要视图,主要用于比较大的DataFrame对象

    这个时候就已经快要完工了,直接取时区就可以了


    计数完成

    这种通过字段查找返回的是一个Series对象,又一个自带的value_counts函数可以自动计数排序,返回的依然是Series对象,并且可以进行切片操作

    替换操作
    fillna这里将值为NA的替换为missing,下面执行了一个相当于查找赋值语句(这一行想深究什么意思建议查资料),将值为空的赋值Unknow, 绘图
    这样就绘制出了常见时区的条形图,这里利用的是matplotlib库,可能你没有看到我导入这个库,这是因为我启动Ipython的时候使用了--pylab指令,或者你也可以用--matplotlib指令 获取浏览器数据
    可以看出来索引为a的是浏览器相关信息,下面解释下第56行的列表推导式是如何拿到浏览器数据的
    首先frame.a.dropna()取到了所有的浏览器相关数据并删除了为空的数据,之后遍历这些数据并利用空格切割字符串拿到索引为0的也就是浏览器字段 排序

    这里解释一下where的用法,where接收三个参数,第一个是条件,第二个是满足条件后的输出,第三个是不满足条件的输出,也就是查找a字段并区分为两种,一种为windows一种为not windows,最后并利用时区和操作系统排序生成一个新的DataFrame

    转载请注明出处

    python自学技术互助扣扣群:670402334

    相关文章

      网友评论

      本文标题:数据分析day1:json数据处理

      本文链接:https://www.haomeiwen.com/subject/lazjjftx.html