分享人工智能实验室部门考核的第一份小作业

关注知乎“Py生活”,分享工作心得和生活感悟。


上周已经结束了入职培训,从这周开始,我应该和大家分享技术知识,但进入了社会工作,我们发现:“情商比智商更重要”,因此,在以后每周的技术分享系列文章中,我都会谈谈我在该段时间里的工作心得和生活感悟,算是作为与大家共饮的“心灵鸡汤”吧。

既然说,情商比智商重要,按照先后顺序,当然得先和大家共饮一碗鸡汤,才能开始学习吧,哈哈!这周的鸡汤成分有:

!截至目前,我很赞同也非常非常喜欢这句话:“有付出,则必有回报”;

!好好工作,好好学习,好好生活;不要耍小心思,不要胡思乱想,不要悲观。(哈哈,三个好好和三个不要,一一对应哦);

!在之前的文章中和大家分享过的一句话,今天再拿出来吧:“社会对一个有梦想、积极主动的人比较残酷,而对一个持有佛系工作或生活态度的人则比较温和。”

!我们工作是为了什么?为了梦想,为了自己爱的人,为了钱............归根结底,还不是为了自己好好生活嘛。如果你说:“你工作是为了自己爱的人”,请问你,你爱的人幸福,你是不是也幸福;你爱的人不幸福,你是不是也不幸福,显然,最终还不是为了自己,为了自己好好生活嘛。因此我想说,健康的身体一定是好好生活的必要条件,所以朋友们,千万不要放弃锻炼啊,坚持住啊!


这周主要完成了两项任务:

  • 办公软件及开发工具的安装(听上去很简单,实际上,国家保密行业,单位内都有自己的安全软件库,所以安装起来不是那么简单);
  • 简单的数据处理作业(也是周记的分享重点)

    作业题目是这样的,有一个csv文件(如下图所示),共有三列数据,其中第二列和第三列数据为统一认证号,第二列数据全为9位数,第三列数据位数小于或等于9位数(不足9位数的,在前面补0),要求:

  • 统计出现在第二列没有出现在第三列的统一认证号及个数;
  • 统计出现在第三列没有出现在第二列的统一认证号及个数;
  • 任务提交源代码及必要的说明文档。
数据格式

针对这个题目,我们小组内用了四种语言来解决,分别是:

  • python
  • R语言
  • SQL(MySQL)
  •  excel中的vb

由于我选择的是python,所以在这里我和大家分享一下我的解题思路:

很简单,利用集合思想中的交集和补集就行;

对应python中的set()函数,及“&”交集运算符和“-”补集运算符。

最后我提交的作业有三个文件:Daima.py(源代码);Readme.txt(方案说明);result.txt(结果数据)。在这里,我把这些内容写出来的目的有两个:

  • 让大家参考我提交作业的流程步骤,并真诚希望得到大家的建议;
  • 和大家分享我自己的编程习惯和文字撰写水平,并真诚希望得到大家的建议。

Daima.py(源代码)

#enconding='utf-8'

"""
代码功能介绍:
      此程序可以统计出存放在csv文件中的第二列和第三列的独立统一认证号(9位数,不足补0),即:
           *出现在第二列没有出现在第三列中的统一认证号及其个数
           *出现在第三列没有出现在第二列中第统一认证号及其个数
"""


import  pandas as pd
f=open('用户列表.csv')
Pre_Data=pd.read_csv(f)  #加载csv文件
Second_Id=list(Pre_Data.iloc[:,1]) #提取第二列数据
Third_Id=list(Pre_Data.iloc[:,2].dropna())  #提取第三列数据,并删除缺失值

Same_Id=set(Second_Id) & set(Third_Id)      #获取两列相同值的集合

Unique_Second_Id=set(Second_Id)-Same_Id     #获取第二列有,第三列无的数据集合
Unique_Second_Num=len(Unique_Second_Id)     #获取第二列有,第三列无的数据个数

Unique_Third_Id=set(Third_Id)-Same_Id      #获取第三列有,第二列无第数据集合
Unique_Third_Num=len(Unique_Third_Id)      #获取第三列有,第二列无的数据个数


#-----------将统计结果以字典形式保存至result.txt文件中-----------------------
file=open('result.txt','w')  #以只写形式保存数据,若无result.txt文件则创建它
#第三列数据为浮点数,转化为整型后再保存
Dict_result={'第二列独立数据有'+str(Unique_Second_Num)+'个,分别为:':list(Unique_Second_Id),
             '第三列独立数据有'+str(Unique_Third_Num)+'个,分别为:':[int(x) for x in Unique_Third_Id]}
file.writelines(str(Dict_result))
file.close()

Readme.txt(方案说明)

任务解决方案:

        *开发环境:

                pycharm、anaconda

        *源代码:

                Daima.py

        *数据源:

                  用户列表.csv

        *解决思路:

                (1)提取第二列和第三列,并转化为需要的格式(set),主要库为pandas

               (2)利用集合处理符号“&”和“-”,完成交集和补集的计算

               (3)利用len()函数完成第二列和第三列独立Id个数的统计

               (4)将结果以字典格式保存至result.txt文件中,包括第二列和第三列唯一Id及其个数

         *结论:

                  出现在第二列不在第三列的统一认证号有69个,出现在第三列不在第二列的统一认证号有46个;具体Id见result.txt文件 

result.txt(结果数据)

截图:

文章存在诸多不足之处,还请批评指正,谢谢!下周的工作比较繁重,相信和大家分享的内容应该也会很丰富,尽情期待!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章