數據分析之--log文件自動化分析


https://mp.weixin.qq.com/s?__biz=MjM5NjE2MTIyMw==&mid=2257483803&idx=1&sn=efe24b040397cde3c16b890faf7f7717&chksm=a597abb392e022a5c1af95448abd4447a565e35199c2cd3a2f7b8891e52a20075b6ac312477d&mpshare=1&scene=1&srcid=&key=b79bd25d83f240ad4ead35697faece9905fec7160f80f3e6376d128d62c40b2d2cd2c2dfd66f8e9d1e0d9883cc9b6c1ed121ab9fb6fd2735650d82881c2aa4cdb5466c8ff2a9d42e0f950b87b7d3d2e1&ascene=1&uin=MjkxOTg1MjM0MQ%3D%3D&devicetype=Windows+10&version=62060833&lang=zh_CN&pass_ticket=S2vPzhfsZuo41GgVm%2Bek%2FliLi7nmgHlTEw39G2Lj6C55DEWxmX9T49C45ZAKKswr

 

1. 提出問題

 

產品測試過程中會出現各種各樣的問題,比如因為良品率導致機器終止或者產品本身的質量問題。一般測試都會產生測試記錄,從log里面提取出需要的數據,整理成報告。log是被zip起來的csv文件,log又有很多個,每個里面又記錄了不同的信息。log文件名包含時間戳,log里面包含時間機器號,單元,產品批次,以及原因,fail的分類,控制范圍等信息。

需要實現的結果:生成圖文報告,定期自動通過郵件將報告發送給相關人員。

2. 解決思路

使用bat腳本根據時間戳提取最近兩個月的log文件到指定的文件夾。然后使用python進行解壓,使用pandas進行數據提取處理。使用公司自己的數據庫管理軟件,對原始數據進行篩選,並使用軟件集成的R,Python等工具生成圖形報告,再用集成工具在服務器上進行運作,定期發送報告。

3. 具體實現過程

Bat script 提取最近兩個月的文件:

@echo ON
xcopy /s /y "d:\event\log\log_201906*.zip" "C:\Users\sanmy\project\logs\"
xcopy /s /y "d:\event\log\log_201905*.zip" "C:\Users\sanmy\project\logs\"

Python 進行zip 解壓

def file_name(file_dir):
L=[]

for root, dirs, files in os.walk(file_dir):

for file in files:

if os.path.splitext(file)[1] == '.zip':

L.append(os.path.join(root, file))

return L

file_dirs=r'C:\Users\sanmy\project\logs\' t=file_name(file_dirs)for i in t: x=i[:-3]+'csv'for i in t: myzip=ZipFile(i) #print(myzip) #print(my_file) f=myzip.open(i[13:-3]+'csv') file=pd.read_csv(f) # name file link to get_data() function get_data()

使用pandas 進行數據提取(此處代碼省略……)

def get_data():
……
……
log=file[['MC','A','action','time','year','month','day','times','dates','Fail']]
log.to_csv(r'.\logs.csv',mode='a')

4. 報告整理並發送郵件

最后將提取出來的數據進行分析整理,圖形話,並生成圖形文件,通過軟件發送郵件給相關人員。

5. 結果與報告

此圖為excel制作而成,數據是杜撰出來的,僅僅作為一個示例。而實際上生成了很多個圖文報告的。

如圖可以看出機器MC1 的報廢率是最差的,可能是機器出現了問題。


總結:

在這個項目的實現過程中遇到了很多之前沒有遇到過的問,比如文件的復制方法,因為在同一個文件夾下面還有很多其他名字的文件以及不同文件類型的文件,最后使用bat腳本實現也算是基本滿足了需求,但是過一段時間之后又需要去更改copy文件的時間戳。python 在公司數據庫處理軟件上的支持情況不太清楚,后來詢問了很多人最后才得以實現。對於數據庫軟件上集成的R語言生成的圖片報告,在排序的時候也遇到問題,始終不是以數據量的大小來排序的,而是以X坐標軸來排序,最后自己慢慢嘗試才琢磨出來。

雖然這不是一個很大的項目,但是前前后后花費了差不多3個月的時間。主要是在工作之余的時間來做的,但是對我自己來說也是收獲頗多。主要花費時間在使用pandas 處理csv文件的時候,雖然這個地方的代碼只有兩百多行,但是里面涉及到了很多的基礎知識以及以前沒有使用過的新知識。

還有個地方就是將所有這些需要實現的功能部署到服務器上去,因為運行的環境,配置不同,在調試的時候花費了很多時間,同時也遇到很多雷區。不過這些經過耐心的學習與請教,都一一搞定。

最曲折的是一個地方是數據源本來有一個已經整理好的JMP(不知道JMP 的可以去百度)的文件,這個文件本身可以直接制作圖形,但是缺點就是公司數據庫軟件不直接支持,需要將JMP 轉換成csv文件。后來嘗試了下使用JMP 的jsl腳本在server上運行,實現轉換然后再使用公司數據庫軟件進行分析,最后也實現了相同的功能。但是剛剛實現沒幾天,公司不維護這個JMP 文件了,所有又折騰回來。

最終程序每天早晨8點定時運行,並且定時將報告發送給相關人員。對有問題的機器或者其他一些指標進行監控,發現異常及時采取行動,提高產品良品率,同時降低維護成本。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM