分享人工智能實驗室部門考覈的第一份小作業

關注知乎“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(結果數據)

截圖:

文章存在諸多不足之處,還請批評指正,謝謝!下週的工作比較繁重,相信和大家分享的內容應該也會很豐富,盡情期待!

 

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