python相關性分析圖
㈠ python做數據分析怎麼樣
我使用python這門語言也有三年了,被其簡潔、易讀、強大的庫所折服,我已經深深愛上了python。其pythonic語言特性,對人極其友好,可以說,一個完全不懂編程語言的人,看懂python語言也不是難事。
在數據分析和交互、探索性計算以及數據可視化等方面,相對於R、MATLAB、SAS、Stata等工具,Python都有其優勢。近年來,由於Python庫的不斷發展(如pandas),使其在數據挖掘領域嶄露頭角。結合其在通用編程方面的強大實力,我們完全可以只使用Python這一種語言去構建以數據為中心的應用程序。
由於python是一種解釋性語言,大部分編譯型語言都要比python代碼運行速度快,有些同學就因此鄙視python。但是小編認為,python是一門高級語言,其生產效率更高,程序員的時間通常比CPU的時間值錢,因此為了權衡利弊,考慮用python是值得的。
Python強大的計算能力依賴於其豐富而強大的庫:
Numpy
Numerical Python的簡稱,是Python科學計算的基礎包。其功能:
1. 快速高效的多維數組對象ndarray。
2. 用於對數組執行元素級計算以及直接對數組執行數學運算的函數。
3. 線性代數運算、傅里葉變換,以及隨機數生成。
4. 用於將C、C++、Fortran代碼集成到Python的工具。
除了為Python提供快速的數組處理能力,NumPy在數據分析方面還有另外一個主要作用,即作為在演算法之間傳遞數據的容器。對於數值型數據,NumPy數組在存儲和處理數據時要比內置的Python數據結構高效得多。此外,由低級語言(比如C和Fortran)編寫的庫可以直接操作NumPy數組中的數據,無需進行任何數據復制工作。
SciPy
是一組專門解決科學計算中各種標准問題域的包的集合,主要包括下面這些包:
1. scipy.integrate:數值積分常式和微分方程求解器。
2. scipy.linalg:擴展了由numpy.linalg提供的線性代數常式和矩陣分解功能。
3. scipy.optimize:函數優化器(最小化器)以及根查找演算法。
4. scipy.signal:信號處理工具。
5. scipy.sparse:稀疏矩陣和稀疏線性系統求解器。
6. scipy.special:SPECFUN(這是一個實現了許多常用數學函數(如伽瑪函數)的Fortran庫)的包裝器。
7. scipy.stats:標准連續和離散概率分布(如密度函數、采樣器、連續分布函數等)、各種統計檢驗方法,以及更好的描述統計法。
8. scipy.weave:利用內聯C++代碼加速數組計算的工具。
註:NumPy跟SciPy的有機結合完全可以替代MATLAB的計算功能(包括其插件工具箱)。
SymPy
是python的數學符號計算庫,用它可以進行數學表達式的符號推導和演算。
pandas
提供了使我們能夠快速便捷地處理結構化數據的大量數據結構和函數。你很快就會發現,它是使Python成為強大而高效的數據分析環境的重要因素之一。
pandas兼具NumPy高性能的數組計算功能以及電子表格和關系型資料庫(如SQL)靈活的數據處理功能。它提供了復雜精細的索引功能,以便更為便捷地完成重塑、切片和切塊、聚合以及選取數據子集等操作。
對於使用R語言進行統計計算的用戶,肯定不會對DataFrame這個名字感到陌生,因為它源自於R的data.frame對象。但是這兩個對象並不相同。R的data.frame對象所提供的功能只是DataFrame對象所提供的功能的一個子集。也就是說pandas的DataFrame功能比R的data.frame功能更強大。
matplotlib
是最流行的用於繪制數據圖表的Python庫。它最初由John D. Hunter(JDH)創建,目前由一個龐大的開發人員團隊維護。它非常適合創建出版物上用的圖表。它跟IPython(馬上就會講到)結合得很好,因而提供了一種非常好用的互動式數據繪圖環境。繪制的圖表也是互動式的,你可以利用繪圖窗口中的工具欄放大圖表中的某個區域或對整個圖表進行平移瀏覽。
TVTK
是python數據三維可視化庫,是一套功能十分強大的三維數據可視化庫,它提供了Python風格的API,並支持Trait屬性(由於Python是動態編程語言,其變數沒有類型,這種靈活性有助於快速開發,但是也有缺點。而Trait庫可以為對象的屬性添加檢校功能,從而提高程序的可讀性,降低出錯率。) 和NumPy數組。此庫非常龐大,因此開發公司提供了一個查詢文檔,用戶可以通過下面語句運行它:
>>> from enthought.tvtk.toolsimport tvtk_doc
>>> tvtk_doc.main()
Scikit-Learn
是基於python的機器學習庫,建立在NumPy、SciPy和matplotlib基礎上,操作簡單、高效的數據挖掘和數據分析。其文檔、實例都比較齊全。
小編建議:初學者使用python(x, y),其是一個免費的科學和工程開發包,提供數學計算、數據分析和可視化展示。非常方便!
其官網:www.pythonxy.com(由於某種原因,國內上不去,需要翻牆)
下載地址:ftp://ftp.ntua.gr/pub/devel/pythonxy/(小編到網上搜到的一個地址,親測可以用)
下圖展示了python(x, y) 強大功能。
㈡ python相關性分析如何生成兩個相關性最強的兩門
方法/步驟
第一步我們首先需要知道相關性主要有兩個方向,一個是正方向一個是負方向,相關性系數是衡量兩個變數之間影響程度,如下圖所示:
㈢ 如何使用Python繪制GWAS分析中的曼哈頓圖和QQ圖
曼哈頓圖和QQ圖是兩個在全基因組關聯(GWAS)分析裡面最常出現的圖形,基本上已經是GWAS的標配,幾乎在每篇GWAS的文章都會見到,它們的作用和所要傳達出來的信息我也在上一篇關於GWAS的博文中做了些說明,在這里我們就只集中在如何用Python和geneview將其有效地展現出來。
首先,准備一些數據來作為例子。
我這里用來展現的數據是2011年丹麥人所做過的一個關於年輕人過度肥胖的GWAS研究——GOYA,數據也是從他們所發表的結果中獲得,總共有5,373個樣本,其中超重的個體(case)有2,633個,正常的個體(control)是2,740個,從樣本量上看還算可以。為了方便使用,我對其做了相關的處理,包括從PED和MAP文件到GEN文件的生成,並重復了一次case-control的關聯性分析,計算出了晶元上所研究的各個SNP位點與肥胖相關的顯著性程度(即p-value),最後又將結果數據抽取出來做成數據集——放在這里供下載(15.6Mb,csv格式)。
【注】以上內容雖提及到了一些領域內術語和相關文件格式,但若不懂也請不必糾結,因為後續處理都是基於這個最終的數據集來完成的。
接著,需要將geneview軟體包加入到你的Python中,有多種不同的方式,但推薦直接使用pip,以下是安裝比較穩定的發布版,直接在終端命令行下(Linux or Mac)輸入:
pip install geneview
或者,也可以直接從github上安裝正在開發的版本:
pip install git+git://github.com/ShujiaHuang/geneview.git#egg=geneview
㈣ 如何利用python進行數據的相關性分析
1. 運算優先順序
括弧、指數、乘、除、加、減
2
如果你使用了非 ASCII 字元而且碰到了編碼錯誤,記得在最頂端加一行 # -- coding: utf-8 --
3. Python格式化字元
使用更多的格式化字元。例如 %r 就是是非常有用的一個,它的含義是「不管什麼都列印出來」。
%s -- string
%% 百分號標記 #就是輸出一個%
%c 字元及其ASCII碼
%s 字元串
%d 有符號整數(十進制)
%u 無符號整數(十進制)
%o 無符號整數(八進制)
%x 無符號整數(十六進制)
%X 無符號整數(十六進制大寫字元)
%e 浮點數字(科學計數法)
%E 浮點數字(科學計數法,用E代替e)
%f 浮點數字(用小數點符號)
%g 浮點數字(根據值的大小採用%e或%f)
%G 浮點數字(類似於%g)
%p 指針(用十六進制列印值的內存地址)
%n 存儲輸出字元的數量放進參數列表的下一個變數中
%c 轉換成字元(ASCII 碼值,或者長度為一的字元串)
%r 優先用repr()函數進行字元串轉換(Python2.0新增)
%s 優先用str()函數進行字元串轉換
%d / %i 轉成有符號十進制數
%u 轉成無符號十進制數
%o 轉成無符號八進制數
%x / %X (Unsigned)轉成無符號十六進制數(x / X 代表轉換後的十六進制字元的大小寫)
%e / %E 轉成科學計數法(e / E控制輸出e / E)
%f / %F 轉成浮點數(小數部分自然截斷)
%g / %G : %e和%f / %E和%F 的簡寫
%% 輸出%
輔助符號 說明
* 定義寬度或者小數點精度
- 用做左對齊
+ 在正數前面顯示加號(+)
<sp> 在正數前面顯示空格
# 在八進制數前面顯示零(0),在十六進制前面顯示「0x」或者「0X」(取決於用的是「x」還是「X」)
0 顯示的數字前面填充「0」而不是默認的空格
m.n m 是顯示的最小總寬度,n 是小數點後的位數(如果可用的話)
㈤ 如何用python進行相關性分析
用python進行相關性分析應該主要根據數據的內容進行分析,如果是帶標注的數據可以通過模型訓練的方式來獲取進行分析,找出對目標結果有最大影響的因素。如果沒有標注的話,可以用python構建網路知識圖譜手動分析,或者自己構建數據表格,人為觀察數據分布圖找到其中規律。一般來說相關性分析,主要依靠人為的觀察,並用數據和模型來輔助計算,從而獲得相對准確的結果。
㈥ 如何用python進行數據分析
1、Python數據分析流程及學習路徑
數據分析的流程概括起來主要是:讀寫、處理計算、分析建模和可視化四個部分。在不同的步驟中會用到不同的Python工具。每一步的主題也包含眾多內容。
根據每個部分需要用到的工具,Python數據分析的學習路徑如下:
相關推薦:《Python入門教程》
2、利用Python讀寫數據
Python讀寫數據,主要包括以下內容:
我們以一小段代碼來看:
可見,僅需簡短的兩三行代碼即可實現Python讀入EXCEL文件。
3、利用Python處理和計算數據
在第一步和第二步,我們主要使用的是Python的工具庫NumPy和pandas。其中,NumPy主要用於矢量化的科學計算,pandas主要用於表型數據處理。
4、利用Python分析建模
在分析和建模方面,主要包括Statsmdels和Scikit-learn兩個庫。
Statsmodels允許用戶瀏覽數據,估計統計模型和執行統計測試。可以為不同類型的數據和每個估算器提供廣泛的描述性統計,統計測試,繪圖函數和結果統計列表。
Scikit-leran則是著名的機器學習庫,可以迅速使用各類機器學習演算法。
5、利用Python數據可視化
數據可視化是數據工作中的一項重要內容,它可以輔助分析也可以展示結果。
㈦ 數據分析員用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}
數據變換
創建自定義函數
㈧ python可以做數據分析,好處是什麼呢怎麼學習
鏈接:https://pan..com/s/1FJZAznKSbwv-X52AM7uSfg
煉數成金:Python數據分析。Python是一種面向對象、直譯式計算機程序設計語言。也是一種功能強大而完善的通用型語言,已經具有十多年的發展歷史,成熟且穩定。Python 具有腳本語言中最豐富和強大的類庫,足以支持絕大多數日常應用。 Python語法簡捷而清晰,具有豐富和強大的類庫。它常被昵稱為膠水語言,它能夠很輕松的把用其他語言製作的各種模塊(尤其是C/C++)輕松地聯結在一起。
課程將從Python的基本使用方法開始,一步步講解,從ETL到各種數據分析方法的使用,並結合實例,讓學員能從中借鑒學習。
課程目錄:
Python基礎
Python的概覽——Python的基本介紹、安裝與基本語法、變數類型與運算符
了解Python流程式控制制——條件、循環語句與其他語句
常用函數——函數的定義與使用方法、主要內置函數的介紹
.....
㈨ 如何使用python繪制gwas分析中的曼哈頓圖和qq圖
曼哈頓圖
將示例數據下載下來:
wget https://raw.githubusercontent.com/ShujiaHuang/geneview-data/master/GOYA.csv
先簡單地查看一下數據的格式:
chrID,rsID,position,pvalue
1,rs3094315,742429,0.144586
1,rs3115860,743268,0.230022
1,rs12562034,758311,0.644366
1,rs12124819,766409,0.146269
1,rs4475691,836671,0.458197
1,rs28705211,890368,0.362731
1,rs13303118,908247,0.22912
1,rs9777703,918699,0.37948
1,rs3121567,933331,0.440824
一共是4列(逗號分隔),分別為:[1]染色體編號,[2]SNP rs 編號,[3] 位點在染色體上的位置,[4]顯著性差異程度(pvalue)。在本例曼哈頓圖中我們只需要使用第1,3和4列;而QQ圖則只需要第4列——pvalue。
下面先從繪制曼哈頓圖開始。我們先將需要的數據讀取到一個列表中,可以這樣做:
import csv
data = []
with open("GOYA.csv") as f:
f_csv = csv.reader(f)
headers = next(f_csv)
data = [[row[0], int(row[2]), float(row[3])] for row in f_csv]
現在GOYA.csv中的數據就都存放在data列表中了,由於Python在讀取文件中數據時,都是以string類型存放,因此對於第3和第4列的數據有必要事先把做點類型轉換。
接下來,調用geneview中的曼哈頓圖函數。
import matplotlib.pyplot as plt
from geneview.gwas import manhattanplot
ax = manhattanplot(data, xlabel="Chromosome", ylabel="-Log10(P-value)") # 這就是Manhattan plot的函數
plt.show()
只需這樣的一句代碼就能創建一個漂亮的曼哈頓圖,有必要再次指出的是,geneview是以matplotlib為基礎開發出來的,所創建的圖形對象實際上仍屬於matplotlib,geneview內部自定義了很多圖形風格,同時封裝了大量只屬於基因組數據的圖表類型,但圖形的輸出格式以及界面顯示都仍和matplotlib一樣,因此在這里我們使用matplotlib.pyplot的show()函數(上例中:plt.show())將所繪制出來的曼哈頓圖顯示出來。如果要將圖形保存下來,則只需執行`plt.savefig("man.png")`,這樣就會在該目錄下生成一個名為『man.png』png格式的曼哈頓圖,若是要存為pdf格式,則只需將所要保存的文件名後綴改成『.pdf』(plt.savefig("man.pdf"))就可以了。下面這些格式:emf,
eps, pdf, png, jpg, ps, raw, rgba, svg,
svgz等都是支持的,至於最新的還有多少種,還請參照matplotlib文檔中說明。
此外,geneview中的每個畫圖函數都有著足夠的靈活性,我們也可以根據自己的需要做一些調整,比如:
xtick = ['1', '2','3','4','5','6','7','8','9','10','11','12','13','14','16','18', '20','22']
manhattanplot(data,
xlabel="Chromosome", # 設置x軸名字
ylabel="-Log10(P-value)", # 設置y軸名字
xtick_label_set = set(xtick), # 限定橫坐標軸上的刻度顯示
s=40, # 設置圖中散點的大小
alpha=0.5, # 調整散點透明度
color="#f28b1e,#9a0dea,#ea0dcc,#63b8ff", # 設置新的顏色組合
)
實現新的顏色組合、限定x軸上的刻度顯示和散點大小的調節。甚至還可以將散點改為線:
manhattanplot(data,
xlabel="Chromosome", # 設置x軸名字
ylabel="-Log10(P-value)", # 設置y軸名字
xtick_label_set = set(xtick), # 限定橫坐標軸上的刻度顯示
alpha=0.5, # 調整散點透明度
color="#f28b1e,#9a0dea,#ea0dcc,#63b8ff", # 設置新的顏色組合
kind="line"
)
其它方面的調整請查看geneview文檔中的相關說明。
Q-Q圖
qq圖只需用到上例中的pvalue那一列:
import csv
import matplotlib.pyplot as plt
from geneview.gwas import qqplot
pvalue=[]
with open("GOYA.csv") as f:
f_csv = csv.reader(f)
headers = next(f_csv)
pvalue = [float(row[3]) for row in f_csv]
ax = qqplot(pvalue, color="#00bb33", xlabel="Expected p-value(-log10)", ylabel="Observed p-value(-log10)") # Q-Q 圖
plt.show()
同樣,也可以根據自己的需要對改圖進行相關的調整。
以上,便是如何使用Python來製作Manhattan圖和QQ圖的方法,geneview的集成函數簡化了這樣的一個過程。
另外,如果你也看過丹麥人的這個GOYA研究,就會發現實際以上的兩個圖和其文章中的基本是一致的,當然我自己做了些數據清洗的操作,結果上仍然會有些許的不同。雖然此刻下結論還有點為時尚早,但總的來講,我應該也可以通過這個數據集比較順利的將其結果重復出來了。
最後,附上利用geneview畫曼哈頓圖和QQ圖的代碼:
(1)曼哈頓圖:
(2)QQ圖:
㈩ python數據分析該怎麼入門呢
1.為什麼選擇Python進行數據分析?
Python是一門動態的、面向對象的腳本語言,同時也是一門簡約,通俗易懂的編程語言。Python入門簡單,代碼可讀性強,一段好的Python代碼,閱讀起來像是在讀一篇外語文章。Python這種特性稱為「偽代碼」,它可以使你只關心完成什麼樣的工作任務,而不是糾結於Python的語法。
另外,Python是開源的,它擁有非常多優秀的庫,可以用於數據分析及其他領域。更重要的是,Python與最受歡迎的開源大數據平台Hadoop具有很好的兼容性。因此,學習Python對於有志於向大數據分析崗位發展的數據分析師來說,是一件非常節省學習成本的事。
Python的眾多優點讓它成為最受歡迎的程序設計語言之一,國內外許多公司也已經在使用Python,例YouTube,Google,阿里雲等等。
3.數據分析流程
Python是數據分析利器,掌握了Python的編程基礎後,就可以逐漸進入數據分析的奇妙世界。CDA數據分析師認為一個完整的數據分析項目大致可分為以下五個流程:
在這一階段,Python也具有很好的工具庫支持我們的建模工作:
scikit-learn-適用Python實現的機器學習演算法庫。scikit-learn可以實現數據預處理、分類、回歸、降維、模型選擇等常用的機器學習演算法。
Tensorflow-適用於深度學習且數據處理需求不高的項目。這類項目往往數據量較大,且最終需要的精度更高。
5)可視化分析
數據分析最後一步是撰寫數據分析報告,這也是數據可視化的一個過程。在數據可視化方面,Python目前主流的可視化工具有:
Matplotlib-主要用於二維繪圖,它能讓使用者很輕松地將數據圖形化,並且提供多樣化的輸出格式。
Seaborn-是基於matplotlib產生的一個模塊,專攻於統計可視化,可以和Pandas進行無縫鏈接。
從上圖我們也可以得知,在整個數據分析流程,無論是數據提取、數據預處理、數據建模和分析,還是數據可視化,Python目前已經可以很好地支持我們的數據分析工作。