-
1 # 一點先知
-
2 # 火龍果開發
我猜樓主問這個問題,主要還是對資料分析技術不太瞭解
先說結論:
如果你是想搭建完整的資料分析解決方案,從儲存,資料處理和清洗,分析,視覺化,那就用java,畢竟java這塊解決方案和框架較多,比如hadoop,spark,flink等
如果你只是純資料分析,資料集比較單一,比如想快速在excel或資料庫中,檢索,查詢,提煉自己想要的資料,就用python
我們來看看目前企業對資料分析的需求吧:
20%的資料發揮著80%的業務價值;80%的資料請求只針對20%的資料。
目前來看,不管是資料儲存處理、分析還是挖掘,最完整和成熟的生態圈還是基於關係型資料庫,比如報表、聯機分析等工具;另外就是資料分析人員更偏重於查詢分析語言如SQL、R、Python資料分析包而不是程式語言。
企業大資料平臺建設的二八原則是,將20%最有價值的資料——以結構化的形式儲存在關係型資料庫中供業務人員進行查詢和分析;而將80%的資料——以非結構化、原始形式儲存在相對廉價的Hadoop等平臺上,供有一定資料探勘技術的資料分析師或資料工程師進行下一步資料處理。經過加工的資料可以以資料集市或資料模型的形式儲存在NoSQL資料庫中,這也是後面要講到的“離線”與“線上”資料。
資料庫到資料倉庫,是事務型資料到分析型資料的轉變,分析型資料需要包括的是:分析的主題、資料的維度和層次,以及資料的歷史變化等等。而對大資料平臺來說,對分析的需求會更細,包括:
查詢:快速響應組合條件查詢、模糊查詢、標籤
搜尋:包括對非結構化文件的搜尋、返回結果的排序
統計:實時反映變化,如電商平臺的線上銷售訂單與發貨計算出的庫存顯示
挖掘:支援挖掘演算法、機器學習的訓練集
針對不同的資料處理需求,可能需要設計不同的資料儲存,還需要考慮如何快速地將資料複製到對應的儲存點並進行合適的結構轉換,以供分析人員快速響應業務的需求。
JAVA技術棧:
Hadoop一個分散式系統基礎架構。
解決了大資料(大到一臺計算機無法進行儲存,一臺計算機無法在要求的時間內進行處理)的可靠儲存(HDFS)和處理(MapReduce)。
Hive是建立在Hadoop之上的,使用Hadoop作為底層儲存的批處理系統。(可以理解為MapReduce的一層殼)
Hive是為了減少MapReduce jobs的編寫工作。
HBaseHBase是一種Key/Value系統,它執行在HDFS之上。
Hbase是為了解決Hadoop的實時性需求。
Spark和StormSpark和Storm都是通用的平行計算框架。解決Hadoop只適用於離線資料處理,而不能提供實時資料處理能力的問題。
區別:1. Spark基於這樣的理念,當資料龐大時,把計算過程傳遞給資料要比把資料傳遞給計算過程要更富效率。而Storm是把資料傳遞給計算過程。
2. 基於設計理念的不同,其應用領域也不同。Spark工作於現有的資料全集(如Hadoop資料)已經被匯入Spark叢集,Spark基於in-memory管理可以進行快訊掃描,並最小化迭代演算法的全域性I/O操作。Storm在動態處理大量生成的“小資料塊”上要更好(比如在Twitter資料流上實時計算一些匯聚功能或分析)。
Python技術棧
一張圖搞定
python技術棧
-
3 # 走在前方
對於小中型資料一般透過python就可以完成資料分析,對於大資料的資料分析需要使用分散式資料儲存和計算技術,一些常用的工具,hadoop,hive,spark,flink等。
掌握資料視覺化工具使用,可以幫助我們快速瞭解業務資料,比如pyecharts,seaborn,plotly,matplotlib等
在進行python資料分析時候,可以藉助一些工具庫快速完成,比如pandas,numpy
-
4 # IT人劉俊明
這是一個非常好的問題,作為一名IT從業者,我來回答一下。
首先,隨著大資料技術的落地應用,資料分析作為大資料的常見任務會逐漸增多,未來不僅IT(網際網路)行業會需要進行大量的資料分析,傳統行業領域也會逐漸釋放出大量的資料分析任務。
從當前的技術體系來看,目前常見的資料分析方式有兩種,一種是統計學方式,另一種是機器學習方式,而無論採用哪種資料分析方式,通常都離不開程式設計。當前在生產環境下,資料分析任務通常都基於平臺來展開,比如Hadoop、Spark就是比較常見的資料分析平臺。
在Hadoop和Spark平臺下,採用Java和Python都可以,同時也可以採用Scala和R等程式語言,開發人員可以根據自身的知識結構來選擇具體的程式語言,而對於初學者來說,當前學習Python語言是不錯的選擇。
採用Python進行資料分析有三方面好處,其一是Python語言自身比較簡單易學,初學者很容易上手;其二是Python語言有眾多的庫可以使用,比如Numpy、Matplotlib、Pandas等,這些庫對於提升Python資料分析能力有非常直接的幫助;其三是Python語言本身就是一門全場景程式語言,具有較強的落地應用能力。
從當前的使用情況來看,在資料分析領域,Python語言的上升趨勢還是比較明顯的,而且資料分析人員也比較願意使用Python,與Java語言主要應用在IT(網際網路)行業不同,Python語言在傳統行業的應用也比較普遍。
-
5 # 資料Talk
先說結論,
問題1回答:資料分析技術簡單來說可歸類為統計分析技術和資料視覺化兩類。
問題2回答:目前階段做資料分析使用Python更高效,方便一點。
希望我作為資料分析師的經驗能對你有幫助
1、資料分析的本質資料分析是指用適當的統計方法對收集的大量資料進行資料分析,提取有用資訊和形成結論而對資料加以詳細研究和概括總結的過程,最後再透過得到的結論應用到行業中解決實際問題。
簡單概括來說資料分析就是-- 處理資料然後推進最佳化現實工作。
資料分析應用在各行各業,網際網路,工業,諮詢行業等,有一個共同點,資料分析都是為業務服務的,用於解決實際運營中出來的問題,或者探索業務可最佳化的空間。
明白了這一點,就知道資料分析不是目的,資料分析的結果產出對業務的實際提升和最佳化才是目的,資料分析只是一種解決的方法,既然是方法,我們就要考慮它的效果,成本(學習成本,使用成本)等。
2.資料分析的技能要求以現在最熱門的網際網路行業的資料分析而言,隨便從招聘網站上擷取部分應屆生資料分析師招聘JD,選取應屆生是因為相對要求低一點,對題主想要入門應該更有參考下價值。
不同公司業務不同,對於“崗位職責”先可以不用太關注,我們這裡主要看“任職資格”這一部分,關於技能方面,可以看到有SQL,Python/R,Spark,hive,BI工具等。
看起來需要掌握的很多,那我們再來透過大資料的方法看一下,獲取招聘網站上的招聘要求,根據工具關鍵詞出現的頻率,繪製成資料分析所需工具詞雲圖:
可以看到,Excel,sql,python,PPT,hive,spss等出現的評率最高,同時可以可以看到還有很多其他的工具技能要求,但這幾個出現頻率最高的肯定是基本要求,那麼是否這些工具我們都需要掌握呢,這個根據兩個方面,一是你所處的工作階段,二是作為資料分析師的不同方向。
我這裡從資料分析方法的角度將資料分析方向分為三個:業務資料分析,資料探勘分析,大資料分析。將每個方向對應的工具和方法做成思維導圖如下:
可以見到,每個方向所對應的主要工具要求都不一樣,一般來說,從業務資料分析》資料探勘分析》大資料分析的技能門檻是逐步提高的,而且技能要求也是疊加的,也就是說例如資料探勘分析師也需要掌握業務資料分析的工具和方法。
但這並不是資料分析師的發展路徑,這只是資料分析不同的方向,如果對業務資料分析非常感興趣且工作非常有成效,有很好的資料分析思維,那麼完全可以往業務方向發展,只掌握SQL,EXCEL,PPT等成為商業分析師和集團戰略分析師也是沒有問題的,所以根據自己的情況,不用過分追求技術,別忘記,資料分析是為業務服務的!。
根據以上部分我們可以總結回答下題主的第一個問題(資料分析需要的技術),結合上圖,可以歸納為描述性統計分析技術(業務資料分析),探索性統計分析技術(資料探勘,大資料分析),資料視覺化(將資料分析結果圖表化,撰寫報告用或彙報用)。
3.Python
VS Java, 更高效,方便一點既然題主提出Python和Java的對比,說明對程式語言和資料分析還是有一定了解的,結合上面2部分的分析,題主可能實際想知道的是Python和Java哪一個更適合做探索性的資料分析(資料探勘和大資料分析),做簡單的探索性分析其實用SPSS和R語言等一樣可行。
但探索性資料分析裡目前非常重要且流行的一個方法是機器學習,目前機器學習的主要框架如Tensorflow, sklearn等均是基於Python語言,因為應用廣泛且被證明是高效可行的,所以目前來看使用成本相對較低,另外考慮到公司裡的團隊合作,使用同樣的程式語言,團隊交流合作也會更加高效。
另外涉及學習成本,Python出名的靈活便捷使其成為資料分析的首選,使用Python做資料分析,掌握基本語法之後,學會使用Numpy,Pandas,matplotlib等庫之後就可以開始資料分析,實現同樣的資料分析功能,先比於Java, Python用更少的程式碼即可實現, 另外Python的眾多資料分析相關的開源庫也提供了很好的資料分析平臺。
而Java並非在資料領域很少使用,相反它是大資料平臺的基礎,例如Hadoop等大資料平臺是基於Java, 但這部分更多的是資料開發和資料倉庫方向的技術開發的內容,與資料分析有較大區別。即使是大資料分析師,在使用大資料平臺時,掌握Hive sql 也能完成取數要求,並不需要掌握Java。
回覆列表
Java大資料:
Java語言應用廣泛,可以應用的領域也非常多,有完整的生態體系,另外Java語言的效能也非常不錯。Java與大資料的關係非常密切,一方面目前做大資料開發的程式設計師很多都是從Java程式設計師轉過去的,另一方面Hadoop平臺本身就是基於Java開發的,所以目前Java在大資料開發中的使用還是非常普遍的。
但是Java語言自身的複雜性讓很多程式設計師感覺它有點“重”,格式化的東西有點多,所以在Spark平臺下,很多程式設計師更願意使用Scala語言,而Scala就是基於Java語言構建的,所以有Java基礎再學習Scala還是比較輕鬆的。
單學Java以後的就業方向單一,薪資就是Java程式設計師的基本水平;而Java大資料工程師,以後的就業可以從事Java方面的工作,也可以涉獵大資料方面的工作,因為對大資料技術知識有所涉獵,所以談薪資的資本會高一些:
由於大資料產業的火爆,相關職位的待遇也是水漲船高。可以看到,大資料相關職位的平均薪資已經超過月薪20K。
Python大資料:
Python語言目前在大資料和人工智慧領域有廣泛的應用,原因就是Python語言簡單、直接、方便。Python語言是指令碼式語言,所以學習起來比較簡單,指令碼語言的天然屬性就是直接,所以Python在語法結構上比Java要“輕”很多。
另外,由於Python有豐富的庫支援,所以Python做軟體開發也非常“直接”,程式設計師的作用有點像做“整合”的感覺。目前Python在Hadoop和Spark平臺下的使用都非常普遍,而且越來越多的Java程式設計師轉向使用Python,因為沒人願意複雜。
但是Python缺點也比較明顯,那就是Python的效能遠不及Java,另外與大資料平臺的耦合度也不如Java好。但是如果你使用Python做演算法實現、資料分析、資料呈現等應用是完全沒有問題的,效率也比較高。