? ? 我是萌新,在部門全體使用OC語言的時候偷偷學(xué)了python。然后被老大發(fā)現(xiàn)了灌曙,倒是沒有把我趕出部門,反而讓我用python處理一些數(shù)據(jù)相關(guān)的操作裕照。因為之前走的都是理論方面的路攒发,拿到真的項目要求的時候是有點手忙腳亂了。
? ? 我的第一個任務(wù)是將設(shè)備獲得的txt格式的數(shù)據(jù)日志按照關(guān)鍵字切割成n份晋南,這個沒難度惠猿,會簡單爬蟲的知道怎么打開文件匹配正則然后關(guān)閉文件的應(yīng)該都會寫。第二個任務(wù)是將txt數(shù)據(jù)獲取相關(guān)屬性值轉(zhuǎn)化成csv负间,這個也沒什么難度百度一下就有很多相關(guān)的操作了偶妖,我耗時最久的是第三個
? ? python如果不導(dǎo)入其他庫的話,用CSV讀寫文件的時候常見的是按照行讀寫政溃,你讀取的時候可以行列隨意趾访,但是寫的時候整列整列的寫入很惡心心。這里講講如何調(diào)用pandas庫來整列整列的寫進CSV文件董虱。我當(dāng)初不會用pandas的時候第三個任務(wù)頭鐵堅持想要按照列寫入從五點做到十一點最后困了不敢了被老大懟了一遍之后慫了老老實實的用行寫入扼鞋,但是第二天不服還是頭鐵,百度CSDN簡書伯樂在線等等全探討了一遍愤诱,發(fā)現(xiàn)pandas1是個很偉大的東西云头,于是下載了艾伯特的《利用Python進行數(shù)據(jù)分析》,然后整理了下面的東西:
? ? 首先呢淫半,你需要獲取你想要的數(shù)據(jù)的列名:
? ? import csv
? ? import pandas as pd
? ? from pandas import Series,DataFrame
????def get_wanne_DataFrame_header(logFile):
????????????title=[]
????????????df=pd.read_csv(logFile)
????????????#這里把所有列的數(shù)據(jù)的name全寫進title
????????????for f in pd:
????????????title.append(f)
????????????#倘若只想獲取幾列數(shù)據(jù)在下面寫個list將title的對應(yīng)的name寫進去然后return list跟df即可
????????????return title,df
? ? 其次呢溃槐,pandas里面的數(shù)據(jù)格式是Series跟DataFrame,我也不想說的這么抽象但是它就是這么個意思科吭。Series是一列數(shù)據(jù)昏滴,n個Series加起來就是DataFrame了就是一個表格了。想了解更多的后面再談砌溺,直接調(diào)用上面的函數(shù)就可以從CSV里面獲取數(shù)據(jù)列并組合成表了:
????def get_wanne_DataFrame_from_logFile(wanne_title_list,df_from_read_csv):
????????????#df[title[0]] is a Series
????????????#then pd.DataFrame turn it into a DataFrame
????????????df=df_from_read_csv
????????????wanne_data=pd.DataFrame(df[title[0]])
????????????for i in range (1,len(title)):
????????????????????????second=pd.DataFrame(df[title[1]])
????????????????????????wanne_data=pd.merge(wanne_data,second,left_index=True,right_index=True)
????????????return wanne_data
? ? 最后呢影涉,寫入存儲位置即可:
? ??def store_DataFrame_into_cv(wanne_data,store_path,store_name):
????????????os.chdir(store_path)
????????????dataframe.to_csv(store_name+'.csv',index=False,header=True)
? ? 也就一點小皮毛,老夫獻丑了规伐,謝謝各位看官蟹倾。