① 如何用python進行大數據挖掘和分析
毫不誇張地說,大數據已經成為任何商業交流中不可或缺的一部分。桌面和移動搜索向全世界的營銷人員和公司以空前的規模提供著數據,並且隨著物聯網的到來,大量用以消費的數據還會呈指數級增長。這種消費數據對於想要更好地定位目標客戶、弄懂人們怎樣使用他們的產品或服務,並且通過收集信息來提高利潤的公司來說無疑是個金礦。
篩查數據並找到企業真正可以使用的結果的角色落到了軟體開發者、數據科學家和統計學家身上。現在有很多工具輔助大數據分析,但最受歡迎的就是Python。
為什麼選擇Python?
Python最大的優點就是簡單易用。這個語言有著直觀的語法並且還是個強大的多用途語言。這一點在大數據分析環境中很重要,並且許多企業內部已經在使用Python了,比如Google,YouTube,迪士尼,和索尼夢工廠。還有,Python是開源的,並且有很多用於數據科學的類庫。所以,大數據市場急需Python開發者,不是Python開發者的專家也可以以相當塊速度學習這門語言,從而最大化用在分析數據上的時間,最小化學習這門語言的時間。
用Python進行數據分析之前,你需要從Continuum.io下載Anaconda。這個包有著在Python中研究數據科學時你可能需要的一切東西。它的缺點是下載和更新都是以一個單元進行的,所以更新單個庫很耗時。但這很值得,畢竟它給了你所需的所有工具,所以你不需要糾結。
現在,如果你真的要用Python進行大數據分析的話,毫無疑問你需要成為一個Python開發者。這並不意味著你需要成為這門語言的大師,但你需要了解Python的語法,理解正則表達式,知道什麼是元組、字元串、字典、字典推導式、列表和列表推導式——這只是開始。
各種類庫
當你掌握了Python的基本知識點後,你需要了解它的有關數據科學的類庫是怎樣工作的以及哪些是你需要的。其中的要點包括NumPy,一個提供高級數學運算功能的基礎類庫,SciPy,一個專注於工具和演算法的可靠類庫,Sci-kit-learn,面向機器學習,還有Pandas,一套提供操作DataFrame功能的工具。
除了類庫之外,你也有必要知道Python是沒有公認的最好的集成開發環境(IDE)的,R語言也一樣。所以說,你需要親手試試不同的IDE再看看哪個更能滿足你的要求。開始時建議使用IPython Notebook,Rodeo和Spyder。和各種各樣的IDE一樣,Python也提供各種各樣的數據可視化庫,比如說Pygal,Bokeh和Seaborn。這些數據可視化工具中最必不可少的就是Matplotlib,一個簡單且有效的數值繪圖類庫。
所有的這些庫都包括在了Anaconda裡面,所以下載了之後,你就可以研究一下看看哪些工具組合更能滿足你的需要。用Python進行數據分析時你會犯很多錯誤,所以得小心一點。一旦你熟悉了安裝設置和每種工具後,你會發現Python是目前市面上用於大數據分析的最棒的平台之一。
希望能幫到你!
② 如何利用python進行數據分析
近年來分析學在數據、網路、金融等領域獲得了突出的地位。應用各種軟體組合起來進行數據收集,數據管理,以及數據分析,得出的結論用作商業決策,業務需求分析等等。分析學用於研究一個產品的市場效應,銀行的貸款決定,這些都只是分析學的冰山一角。它在大數據,安全,數字和軟體分析等領域有很深遠的影響,下面是Python在分析學中的主要作用的一個延續:
在這個信息過載的世界,只有那些可以利用解析數據的優勢來得出見解的人會獲益。Python對於大數據的解釋和分析具有很重要的作用。分析公司開發的很多工具都是基於Python來約束大數據塊。分析師們會發現Python並不難學,它是一個強有力的數據管理和業務支持的媒介。
使用單一的語言來處理數據有它的好處。如果你以前曾經使用過C++或者Java,那麼對你來說,Python應該很簡單。數據分析可以使用Python實現,有足夠的Python庫來支持數據分析。 Pandas是一個很好的數據分析工具,因為它的工具和結構很容易被用戶掌握。對於大數據來說它無疑是一個最合適的選擇。即使是在數據科學領域,Python也因為它的「開發人員友好性」而使其他語言相形見絀。一個數據科學家熟悉Python的可能性要比熟悉其他語言的可能性高得多。
除了Python在數據分析中那些很明顯的優點(易學,大量的在線社區等等)之外,在數據科學中的廣泛使用,以及我們今天看到的大多數基於網路的分析,是Python在數據分析領域得以廣泛傳播的主要原因。
不論是金融衍生品還時大數據分析,Python都發揮了重要的作用。就前者而言,Python能夠很好地和其它系統,軟體工具以及數據流結合在一起,當然也包括R。用Python來對大數據做圖表效果更好,它在速度和幫助方面也一樣可靠。有些公司使用Python進行預測分析和統計分析。
③ python 處理大數據程序運行的越來越慢的問題
最近編寫並運行了一個處理1500萬個數據的程序,本來最初每秒可以處理150個左右的數據,預計大概15個小時的時間就可以處理完,晚上的時候就開始運行,本以為等到第二天中午就可以得到結果呢,,,
可是,等我第二天的時候一看,什麼???還沒處理完,當前的數據處理速度變成了一秒5個左右,然後還需要等待300個小時。
然後就查了一下這個問題,原來同樣也有很多人在處理培察蔽大數據的時候遇到了這個問題,大多數的文章分析的原因都是說由於GC(垃圾回收)造成的性能下降。
Python的垃圾回收機制的工作原理為每個對象維護一個引用計數,每次內存對象的創建與銷毀都必須修改引用計數,從而在大量的對象創建時,需要大量的執行修改引用計數操作,對於程序執行過程中,額外的性能開銷是令人可怕的。回收的觸發時機有兩種可能,一是用戶主動調用gc.collect(),二是對象數量超過閾值。
所以正是GC拖慢了程序的性能,所以我們可以考慮在處理的時候禁止垃圾回收。
通過這樣的改進之後速度確度會有很大的提升。但是又有也會另外的一個問題,內存溢出,由於運行的過程中生成大量的對象,一次使用後就沒有了引用,由於關閉了垃圾回收機制,一直存在內存中得不到清理,然後程序的內存使用量越來越大。解決的方法就是定期打開gc.enable()再關配州閉或者主動調用gc.collect(),這樣就可以了。
通過上述的改進後程序確實了很多,可是我的程序還是運行的越來越慢,我都懷疑人生了,然後分別測試了各個步驟所花費的時間才知道了原因,我使用了pandas創建一個DataFrame,然後每次迭代得到的結果都添加新的數據到DataFrame中,隨著里邊的數據越來越多,添加的速度也就越來越慢了,嚴重的拖累的運行速度。這里的解決方法有兩個:
1 分段保存結果,間隔一段時間就保存一次結果,最後再將多次的結果合並。
2 換一個數據存儲方法,我是直接使用了python的沒和字典進行保存結果,它隨著數據的增多添加的速度也會變慢,但是差別不是很大,在可接受的范圍內,可以使用;或者再加上方法1,分段進行保存再合並也是可以的。
④ python大數據挖掘系列之基礎知識入門 知識整理(入門教程含源碼)
Python在大數據行業非常火爆近兩年,as a pythonic,所以也得涉足下大數據分析,下面就聊聊它們。
Python數據分析與挖掘技術概述
所謂數據分析,即對已知的數據進行分析,然後提取出一些有價值的信息,比如統計平均數,標准差等信息,數據分析的數據量可能不會太大,而數據挖掘,是指對大量的數據進行分析與挖倔,得到一些未知的,有價值的信息等,比如從網站的用戶和用戶行為中挖掘出用戶的潛在需求信息,從而對網站進行改善等。
數據分析與數據挖掘密不可分,數據挖掘是對數據分析的提升。數據挖掘技術可以幫助我們更好的發現事物之間的規律。所以我們可以利用數據挖掘技術可以幫助我們更好的發現事物之間的規律。比如發掘用戶潛在需求,實現信息的個性化推送,發現疾病與病狀甚至病與葯物之間的規律等。
預先善其事必先利其器
我們首先聊聊數據分析的模塊有哪些:
下面就說說這些模塊的基礎使用。
numpy模塊安裝與使用
安裝:
下載地址是:http://www.lfd.uci.e/~gohlke/pythonlibs/
我這里下載的包是1.11.3版本,地址是:http://www.lfd.uci.e/~gohlke/pythonlibs/f9r7rmd8/numpy-1.11.3+mkl-cp35-cp35m-win_amd64.whl
下載好後,使用pip install "numpy-1.11.3+mkl-cp35-cp35m-win_amd64.whl"
安裝的numpy版本一定要是帶mkl版本的,這樣能夠更好支持numpy
numpy簡單使用
生成隨機數
主要使用numpy下的random方法。
pandas
使用 pip install pandas 即可
直接上代碼:
下面看看pandas輸出的結果, 這一行的數字第幾列,第一列的數字是行數,定位一個通過第一行,第幾列來定位:
常用方法如下:
下面看看pandas對數據的統計,下面就說說每一行的信息
轉置功能:把行數轉換為列數,把列數轉換為行數,如下所示:
通過pandas導入數據
pandas支持多種輸入格式,我這里就簡單羅列日常生活最常用的幾種,對於更多的輸入方式可以查看源碼後者官網。
CSV文件
csv文件導入後顯示輸出的話,是按照csv文件默認的行輸出的,有多少列就輸出多少列,比如我有五列數據,那麼它就在prinit輸出結果的時候,就顯示五列
excel表格
依賴於xlrd模塊,請安裝它。
老樣子,原滋原味的輸出顯示excel本來的結果,只不過在每一行的開頭加上了一個行數
讀取SQL
依賴於PyMySQL,所以需要安裝它。pandas把sql作為輸入的時候,需要制定兩個參數,第一個是sql語句,第二個是sql連接實例。
讀取HTML
依賴於lxml模塊,請安裝它。
對於HTTPS的網頁,依賴於BeautifulSoup4,html5lib模塊。
讀取HTML只會讀取HTML里的表格,也就是只讀取
顯示的是時候是通過python的列表展示,同時添加了行與列的標識
讀取txt文件
輸出顯示的時候同時添加了行與列的標識
scipy
安裝方法是先下載whl格式文件,然後通過pip install 「包名」 安裝。whl包下載地址是:http://www.lfd.uci.e/~gohlke/pythonlibs/f9r7rmd8/scipy-0.18.1-cp35-cp35m-win_amd64.whl
matplotlib 數據可視化分析
我們安裝這個模塊直接使用pip install即可。不需要提前下載whl後通過 pip install安裝。
下面請看代碼:
下面說說修改圖的樣式
關於圖形類型,有下面幾種:
關於顏色,有下面幾種:
關於形狀,有下面幾種:
我們還可以對圖稍作修改,添加一些樣式,下面修改圓點圖為紅色的點,代碼如下:
我們還可以畫虛線圖,代碼如下所示:
還可以給圖添加上標題,x,y軸的標簽,代碼如下所示
直方圖
利用直方圖能夠很好的顯示每一段的數據。下面使用隨機數做一個直方圖。
Y軸為出現的次數,X軸為這個數的值(或者是范圍)
還可以指定直方圖類型通過histtype參數:
圖形區別語言無法描述很詳細,大家可以自信嘗試。
舉個例子:
子圖功能
什麼是子圖功能呢?子圖就是在一個大的畫板裡面能夠顯示多張小圖,每個一小圖為大畫板的子圖。
我們知道生成一個圖是使用plot功能,子圖就是subplog。代碼操作如下:
我們現在可以通過一堆數據來繪圖,根據圖能夠很容易的發現異常。下面我們就通過一個csv文件來實踐下,這個csv文件是某個網站的文章閱讀數與評論數。
先說說這個csv的文件結構,第一列是序號,第二列是每篇文章的URL,第三列每篇文章的閱讀數,第四列是每篇評論數。
我們的需求就是把評論數作為Y軸,閱讀數作為X軸,所以我們需要獲取第三列和第四列的數據。我們知道獲取數據的方法是通過pandas的values方法來獲取某一行的值,在對這一行的值做切片處理,獲取下標為3(閱讀數)和4(評論數)的值,但是,這里只是一行的值,我們需要是這個csv文件下的所有評論數和閱讀數,那怎麼辦?聰明的你會說,我自定義2個列表,我遍歷下這個csv文件,把閱讀數和評論數分別添加到對應的列表裡,這不就行了嘛。呵呵,其實有一個更快捷的方法,那麼就是使用T轉置方法,這樣再通過values方法,就能直接獲取這一評論數和閱讀數了,此時在交給你matplotlib里的pylab方法來作圖,那麼就OK了。了解思路後,那麼就寫吧。
下面看看代碼:
⑤ 數據分析員用python做數據分析是怎麼回事,需要用到python中的那些內容,具體是怎麼操作的
最近,Analysis with Programming加入了Planet Python。我這里來分享一下如何通過Python來開始數據分析。具體內容如下:
數據導入
導入本地的或者web端的CSV文件;
數據變換;
數據統計描述;
假設檢驗
單樣本t檢驗;
可視化;
創建自定義函數。
數據導入
1
這是很關鍵的一步,為了後續的分析我們首先需要導入數據。通常來說,數據是CSV格式,就算不是,至少也可以轉換成CSV格式。在Python中,我們的操作如下:
import pandas as pd
# Reading data locally
df = pd.read_csv('/Users/al-ahmadgaidasaad/Documents/d.csv')
# Reading data from web
data_url = "https://raw.githubusercontent.com/alstat/Analysis-with-Programming/master/2014/Python/Numerical-Descriptions-of-the-Data/data.csv"
df = pd.read_csv(data_url)
為了讀取本地CSV文件,我們需要pandas這個數據分析庫中的相應模塊。其中的read_csv函數能夠讀取本地和web數據。
數據變換
1
既然在工作空間有了數據,接下來就是數據變換。統計學家和科學家們通常會在這一步移除分析中的非必要數據。我們先看看數據(下圖)
對R語言程序員來說,上述操作等價於通過print(head(df))來列印數據的前6行,以及通過print(tail(df))來列印數據的後6行。當然Python中,默認列印是5行,而R則是6行。因此R的代碼head(df, n = 10),在Python中就是df.head(n = 10),列印數據尾部也是同樣道理
9
plt.show(sns.lmplot("Benguet", "Ifugao", df))
創建自定義函數
在Python中,我們使用def函數來實現一個自定義函數。例如,如果我們要定義一個兩數相加的函數,如下即可:
def add_2int(x, y):
return x + y
print add_2int(2, 2)
# OUTPUT
4
順便說一下,Python中的縮進是很重要的。通過縮進來定義函數作用域,就像在R語言中使用大括弧{…}一樣。這有一個我們之前博文的例子:
產生10個正態分布樣本,其中和
基於95%的置信度,計算和;
重復100次; 然後
計算出置信區間包含真實均值的百分比
Python中,程序如下:
import numpy as np
import scipy.stats as ss
def case(n = 10, mu = 3, sigma = np.sqrt(5), p = 0.025, rep = 100):
m = np.zeros((rep, 4))
for i in range(rep):
norm = np.random.normal(loc = mu, scale = sigma, size = n)
xbar = np.mean(norm)
low = xbar - ss.norm.ppf(q = 1 - p) * (sigma / np.sqrt(n))
up = xbar + ss.norm.ppf(q = 1 - p) * (sigma / np.sqrt(n))
if (mu > low) & (mu < up):
rem = 1
else:
rem = 0
m[i, :] = [xbar, low, up, rem]
inside = np.sum(m[:, 3])
per = inside / rep
desc = "There are " + str(inside) + " confidence intervals that contain "
"the true mean (" + str(mu) + "), that is " + str(per) + " percent of the total CIs"
return {"Matrix": m, "Decision": desc}
上述代碼讀起來很簡單,但是循環的時候就很慢了。下面針對上述代碼進行了改進,這多虧了Python專家
import numpy as np
import scipy.stats as ss
def case2(n = 10, mu = 3, sigma = np.sqrt(5), p = 0.025, rep = 100):
scaled_crit = ss.norm.ppf(q = 1 - p) * (sigma / np.sqrt(n))
norm = np.random.normal(loc = mu, scale = sigma, size = (rep, n))
xbar = norm.mean(1)
low = xbar - scaled_crit
up = xbar + scaled_crit
rem = (mu > low) & (mu < up)
m = np.c_[xbar, low, up, rem]
inside = np.sum(m[:, 3])
per = inside / rep
desc = "There are " + str(inside) + " confidence intervals that contain "
"the true mean (" + str(mu) + "), that is " + str(per) + " percent of the total CIs"
return {"Matrix": m, "Decision": desc}