国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python中的探索性數(shù)據(jù)分析(功能式)

2020-02-16 11:16:06
字體:
來源:轉載
供稿:網友

這里有一些技巧來處理日志文件提取。假設我們正在查看一些Enterprise Splunk提取。我們可以用Splunk來探索數(shù)據(jù)。或者我們可以得到一個簡單的提取并在Python中擺弄這些數(shù)據(jù)。

在Python中運行不同的實驗似乎比試圖在Splunk中進行這種探索性的操作更有效。主要是因為我們可以無所限制地對數(shù)據(jù)做任何事。我們可以在一個地方創(chuàng)建非常復雜的統(tǒng)計模型。

理論上,我們可以在Splunk中做很多的探索。它有各種報告和分析功能。

但是...

使用Splunk需要假設我們知道我們正在尋找什么。在很多情況下,我們不知道我們在尋找什么:我們正在探索。可能會有一些跡象表明,一些RESTful API處理速度很慢,但還不止于此。我們如何繼續(xù)?

第一步是獲取CSV格式的原始數(shù)據(jù)。怎么辦?

讀取原始數(shù)據(jù)

我們將首先用一些附加函數(shù)來包裝一個CSV.DictReader對象。

面向對象的純粹主義者會反對這個策略。 “為什么不擴展DictReader?”他們問。我沒有一個很好的答案。我傾向于函數(shù)式編程和組件的正交性。對于一個純粹的面向對象的方法,我們不得不使用更復雜的混合來實現(xiàn)這一點。

我們處理日志的一般框架是這樣的。

with open("somefile.csv") as source:rdr = csv.DictReader(source)

這使我們可以讀取CSV格式的Splunk提取物。我們可以迭代閱讀器中的行。這是訣竅#1。這不是 非常 棘手,但我喜歡它。

with open("somefile.csv") as source:rdr = csv.DictReader(source)for row in rdr:print( "{host} {ResponseTime} {source} {Service}".format_map(row) )

我們可以 - 在一定程度上 - 以有用的格式報告原始數(shù)據(jù)。如果我們想粉飾一下輸出,我們可以改變格式字符串。那就可能是“{主機:30s} {回復時間:8s} {來源:s}”或類似的東西。

過濾

常見的情況是我們提取了太多,但其實只需要看一個子集。我們可以更改Splunk過濾器,但是,在完成我們的探索之前,過量使用過濾器令人討厭。在Python中過濾要容易得多。一旦我們了解到需要什么,就可以在Splunk中完成。

with open("somefile.csv") as source:rdr = csv.DictReader(source)rdr_perf_log = (row for row in rdr if row['source'] == 'perf_log')for row in rdr_perf_log:print( "{host} {ResponseTime} {Service}".format_map(row) )

我們已經加入了一個生成器表達式來過濾源行,能夠處理一個有意義的子集。

投影

在某些情況下,我們會添加額外的源數(shù)據(jù)列,這些列我們并不想使用。所以將通過對每一行進行投影來消除這些數(shù)據(jù)。

原則上,Splunk從不產生空列。但是,RESTful API日志可能會導致數(shù)據(jù)集中包含大量列標題,這些列標題是基于請求URI一部分的代理鍵。這些列將包含來自使用該代理鍵的一個請求的一行數(shù)據(jù)。對于其他行,在這一列中沒有任何用處。所以要刪除這些空列。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 徐水县| 金坛市| 阳山县| 夏邑县| 岳西县| 千阳县| 栾川县| 永清县| 乐平市| 盘山县| 东港市| 湘乡市| 阳西县| 阿拉善盟| 聊城市| 太仓市| 久治县| 雷山县| 嵊泗县| 乌拉特前旗| 敦化市| 息烽县| 垣曲县| 余庆县| 石家庄市| 陆良县| 波密县| 靖宇县| 来宾市| 子洲县| 新巴尔虎右旗| 邵阳县| 乌兰察布市| 舟山市| 张北县| 黑水县| 上高县| 乌什县| 珲春市| 岱山县| 抚州市|