国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 莎车县| 精河县| 临洮县| 高尔夫| 乐亭县| 临泉县| 黑水县| 台东市| 五河县| 泸西县| 成都市| 离岛区| 中西区| 尚义县| 长宁县| 博乐市| 德兴市| 哈巴河县| 永顺县| 荥经县| 缙云县| 吉林市| 株洲市| 宜川县| 金乡县| 邻水| 青河县| 图木舒克市| 乡宁县| 青神县| 百色市| 水城县| 高唐县| 冷水江市| 象山县| 项城市| 顺昌县| 嫩江县| 方城县| 成都市| 广宗县|