利用python 数据分析入门,详细教程,教小白快速入门

本文详细记录了使用Python对obo文件进行数据分析的全过程,包括数据解析、键值对处理、去重及转换为JSON格式。通过实例分享了遇到的问题及解决方案,适合初学者参考。
摘要由CSDN通过智能技术生成

这是一篇的数据的分析的典型案列,本人也是经历一次从无到有的过程,倍感珍惜,所以将其详细的记录下来,用来帮助后来者快速入门,,希望你能看到最后!

  需求:对obo文件进行解析,输出为json字典格式

  数据的格式如下:

  

  

  我们设定 一个trem or  typedef为一条标签,一行为一条记录或者是键值对,以此为标准!

  下面我们来对数据进行分析

  数据集中一共包含两种标签[trem] and [typedef]两种标签,每个标签下边有多个键值对,和唯一的标识符id,每行记录以“/n”结尾,且每条标签下下有多个相同的键值对,for examble: is_a,synonym...

 

  算法设计

  1. 数据集中含有【trem】和【typedef】两种标签,因此,我们将数据分成两个数据集分别来进行处理。

  2.循环遍历数据集,将键值对的键去除,并且对每一个键进行计数,并且进行去重操作

   (我刚开始的想法是根据id的数量于其他的键的数量进行比较,找出每个标签下存在重复的键值对,进而确定每个标签下存在重复的键值对 :is_a,有点想多了,呵呵~)

  3.由于发现每条标签下的记录的顺序都是一定的,id永远排在前面,用字典的形式存储是顺序是乱的,看上去很不舒服,所以我们相办法将他存在list里面,最大限度的还原了原有数据。

  4. 处理相同键的键值对,字典中不允许存在一键多值的情况,我们将他存到一个list里面,也就相当于大list里面套小list

  5.对数据集进行遍历,

    (1)将取出来的键值对的键值存储起来

    (2)以“【”作为我们的结束,将键值对的值存储到相对应的键下面,也就是一条标签

    (3)将我们所取得值存储到汇总在一起,并且对声明的字典和list进行初始化,方便进行下一次的循环

    (4)进行到这里,我们处理仅仅只是处理完了一个标签,还需要一个总的list,将所有的标签都存储进去

    (这里的算法还是不完善的,我希望看到这篇博客的人可以提出宝贵的建议)

代码设计以及踩过的坑:

1.打印出所有的键

附引用代码:

复制代码

 

'''
打印出所有的键
'''
with open('go.obo','r',encoding="utf-8") as f:         #打开文件

    for  line in f.readlines():                         #对数据进行每一行的循环
        list = []  ## 空列表
        lable = line.split(":")[0]                      #读取列表名,
        print(lable)
        list.append(lable)                   ## 使用 append() 向list中添加元素
        # print(list)

        #print(lable)

    # lst2 = list(set(lst1))
    # print(lst2)
    print(list)

复制代码

 

 

2.但是在做上一步的时候,出现了一个问题,那就是没有区分局部变量和全局变量,问题发现的思路,先观察list输出的值,发现只有最后一个值,这时候就要考虑值是否被覆盖,找到问题,于是把list升级为全局变量

附引用代码:

复制代码

with open('go.obo','r',encoding="utf-8") as f:         #打开文件
    # dict = {}
    list = []  ## 空列表

    for  line in f.readlines():                         #对数据进行每一行的循环
        total = []
        lable = line.split(":")[0]                      #读取列表名,正确来说读取完列表名之后,还要进行去重的处理
        # print(lable)
        # list.append(lable)                   ## 使用 append() 向list中添加元素
        # print(list)                            这种操作list中每次都只有一个变量
        list.append(lable)



        #print(lable)
    # lst2 = list(set(lst1))
    # print(lst2)

    # print(list)
    dict = {}
    for key in list:
        dict[key] = dict.get(key, 0) + 1
    print(dict)
    

 

复制代码

 

 

 

3.我们将统计的结果输出在txt中,这个时候问题出现了,输出的键值对中只有键没有值,这就搞笑了,接着往下走

附引用代码:

复制代码

'''
将dict在txt中输出
'''
with open('go.obo', 'r', encoding="utf-8") as f:  # 打开文件
    # dict = {}
    list = []  ## 空列表

    for line in f.readlines():  # 对数据进行每一行的循环
        total = []
        lable = line.split(":")[0]  #
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值