小白學Python數據分析-Python初識和t分布實例

2021-02-19 大數據與數據科學家

[編者按] Python是大數據分析的常用技術之一,用Python進行數據分析的眾多優勢使得越來越多的人開始走上Python數據分析之路。後臺也常常有讀者來信,希望我們分享關於Python數據分析的知識。從本期開始,我們推出「小白學Python數據分析」專欄,本專欄邀請到一位Python數據分析的初學者小白,記錄他學習Python數據分析的歷程。大家可以和小白一起學習,並完成每期專欄中的實例,就可以掌握Python數據分析的常用方法和技術。教材方面,我們參考的是王宏志老師編著的《大數據分析原理與實踐》。由於小白也在學習過程中,所以文中難免會有認識和理解不當之處,歡迎大家批評指正,更歡迎大家通過後臺留言與我們進行討論交流,大家共同向Python數據分析高手的目標前進!

在本期專欄中,我們先熟悉一下Python,然後用Python的庫來實現一個t分布,這可是概率和統計學中的一個非常有用的知識哦!下面我們開始學習吧!

 

Python是一種面向對象的解釋型電腦程式設計語言,與其他解釋性語言相比,它擁有一個巨大而活躍的科學計算社區。Python擁有功能強大的庫,可以用來處理各種工作,而不需要再去做重複的工作,節約下來的時間就可以思考一些更高級的算法設計。在Python的學習中,對於庫的學習非常重要,掌握好這些庫的使用方法能讓你的編程的過程變得更加流暢輕鬆。小白我在剛開始學習的時候就總是陷入自己手動編底層操作的困局,走了很多彎路、浪費了很多時間,所以大家一定要吸取我的教訓,熟悉和掌握好Python的各種庫。

下面我們以Numpy和Scipy庫為例來說明庫的使用方法,請大家也跟隨本文的介紹自己動手嘗試一下。

Numpy庫是Python中的科學計算庫,是一個強大的N維數組對象ndarray,屬於廣播功能函數。其整合C/C++.fortran代碼的工具 ,更是Scipy、Pandas等的基礎。Numpy庫可以完成數組的維度變換、數組的類型變換、一維數組切片、多維數組索引、多維數組切片、數組的運算、數據的CSV文件存取、numpy隨機數函數、numpy的梯度函數、圖像的表示和變換等功能。後面我們採用Numpy庫來進行單個樣本的t分布具體算法的實施。

Scipy庫是基於Numpy庫的一種科學計算庫,是一個開源的Python算法庫和數學工具包。SciPy庫包含的模塊有最優化、線性代數、積分、插值、特殊函數、快速傅立葉變換、信號處理和圖像處理、常微分方程求解和其他科學與工程中常用的計算。後面我們採用Scipy庫中的stats模塊來進行t分布的相關計算。

接下來,我們就用這兩個庫來完成t分布的簡單實現。在概率論和統計學中,t分布用於根據小樣本來估計呈正態分布且方差未知的總體的均值。如果總體方差已知(例如在樣本數量足夠多時),則應該用正態分布來估計總體均值。t分布曲線形態與n(確切地說與自由度df)大小有關。與標準正態分布曲線相比,自由度df越小,t分布曲線愈平坦,曲線中間愈低,曲線雙側尾部翹得愈高;自由度df愈大,t分布曲線愈接近正態分布曲線,當自由度df=∞時,t分布曲線為標準正態分布曲線。

檢驗分為三種形式,單個樣本的檢驗、兩個獨立樣本均數檢驗和配對樣本均數檢驗。由於篇幅有限,我們利用Scipy庫進行了三種形式t檢驗的操作,同時,為了展示t檢驗的內部計算流程,我們寫了最原始的代碼來進行單個樣本的t檢驗。

單個樣本的檢驗


作用:檢驗總體均值是否與給定的值存在顯著差異(不相等)。

前提:只有一個總體,並且總體呈正態分布、

檢驗假設:

     

     

我們選取下列數據作為我們t分析的實例,其總體樣本的平均值為24。

Data1

22

20

19

23

25

29

27

33

26

25

原始方法計算:

隨後我們查t分布表,將t與比較大小。如果值較小,拒絕原本假設。

Scipy庫的方法計算:

Scipy庫提供了stats中的ttest_1samp函數計算單個樣本的檢驗。輸出如下:

Statistic值為t值,pvalue值為其內部參量,可不用討論。

兩個獨立樣本均數t檢驗


作用:考察兩個總體的均值是否存在顯著差異。

前提:兩樣本所代表的總體均服從正態分布,且兩總體方差相同,而兩組樣本數量可以不同。

檢驗假設:

H0:兩個樣本均值相同

H1:兩個樣本均值不同

Python實現的函數解釋:

兩個獨立樣本均數 t檢驗函數stats.ttest_ind(a, b, axis=0, equal_var=True)

其中:

a,b: 用以比較的數據

Axis:當a,b為多維數據時,選擇a,b中要用於比較的維度,計數由0開始;

equal_var:兩個樣本方差相同時值為True,不同為False,默認為True

方差比較函數:stats.levene(a,b)

應用實例

25例糖尿病患者隨機分成兩組,甲組單純用藥物治療,乙組採用藥物治療合併飲食療法,一個月後測空腹血糖 ,如下表所示,問兩種療法治療後患者血糖值是否相同?

代碼實現:

%導入數據

x1=np.array([8.4,10.5,12.0,12.0,13.9,15.3,16.7,18.0,18.7,20.7,21.1,15.2])

x2=np.array([5.4,6.4,6.4,7.5,7.6,8.1,11.6,12.0,13.4,13.5,14.8,15.6,18.7])

%先判斷兩總體方差是否相等,由於p值遠大於0.05,認為兩總體具有方差齊性

stats.levene(x1,x2)  

LeveneResult(statistic=0.1871049399293495,pvalue=0.6693659851427802)

 

%進行t檢驗

stats.ttest_ind(x1,x2)

Ttest_indResult(statistic=2.640273284328294,pvalue=0.014625940879142462)

(代碼部分圖片格式)


配對樣本均數t檢驗


作用:考察兩個一一對應的總體均值是否存在顯著差異。

前提:兩樣本所代表的總體均服從正態分布,且兩總體方差相同,而且由於是一一對應的,兩組樣本數量必須相同。

檢驗假設: :均值相同; :均值不同

Python實現的函數解釋:

scipy.stats.ttest_rel(a,b, axis=0, nan_policy='propagate')

解釋:當輸入的樣本中缺失數據(該缺失數據顯示為nan)時的操作。該值取值為『progagate』時輸出nan,為『raise』時顯示該指令錯誤無法執行,為『omit』時程序將忽略樣本缺失的數據對其他數據進行計算。默認取值為『progagate』。


運用實例:

有12名接種卡介苗的兒童,8周後用兩批不同的結核菌素,一批是標準結核菌素,一批是新制結核菌素,分別注射在兒童的前臂,兩種結核菌素的皮膚侵潤反應平均直徑如下表所示,問兩種結核菌素的反應性有無差別。

代碼實現:

y1=np.array([12.0,14.5,15.5,12.0,13.0,12.0,10.5,7.5,9.0,15.0,13.0,10.5])

y2=np.array([10.0,10.0,12.5,13.0,10.0,5.5,8.5,6.5,5.5,8.0,6.5,9.5])

stats.ttest_rel(y1,y2)

Ttest_relResult(statistic=4.5197977198732495,pvalue=0.0008723321459379539)

(代碼部分圖片格式)

特別鳴謝:張興遠(14級機電學院)、何濤(15級計算機學院)

本文算例來自由哈爾濱工業大學計算機學院的王宏志老師編著的《大數據分析原理與實踐》

「大數據與數據科學家」公眾號

主編:王宏志

特邀副主編: 朱劼

副主編: 丁小歐

責任編輯: 齊志鑫,宋揚,萬曉瓏、魏龑,張榮恩

編輯: 陶穎安

-精彩內容,記得分享到朋友圈-

長按下圖並點擊 「識別圖中二維碼」,即可關注大數據與數據科學家微信公共號 

相關焦點

  • 小白學 Python(12):基礎數據結構(字典)(上)
    人生苦短,我選Python前文傳送門小白學 Python(1):開篇小白學 Python(2):基礎數據類型(上)小白學 Python(3):基礎數據類型(下)小白學 Python(4):變量基礎操作小白學 Python(5):基礎運算符(上)小白學 Python(6):基礎運算符(下)小白學 Python(7):基礎流程控制(上)小白學 Python(8):基礎流程控制(下)小白學 Python(9):基礎數據結構(列表)(上)小白學 Python(10):
  • 小白學 Python 數據分析(3):Pandas (二)數據結構 Series
    Python 數據分析(1):數據分析基礎小白學 Python 數據分析(2):Pandas (一)概述引言先介紹下 Pandas 的數據結構,畢竟數據結構是萬物的基礎。Pandas 有兩種主要的數據結構:Series 和 DataFrame ,本文就先介紹第一種 Series 。
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    20爬蟲scrapy框架及案例 21數據分析 22機器學習 23深度學習 24數據結構和算法 25python網絡爬蟲 26機器學習入門篇 27機器學習入門篇2 28機器學習提升篇 29數據挖掘篇 30深度學習必備原理與實戰 31深度學習必備原理與實戰
  • python數據分析:numpy入門
    微信公眾號:學點啥玩點啥小白友好型python數據分析:numpy入門numpy:一個在python中做科學計算的基礎庫,重在數值計算,也是大部分python科學計算庫的基礎庫,多用於在大型、多維數組上執行數值計算。
  • Python做數據分析-簡潔、易讀、強大
    5. scipy.sparse:稀疏矩陣和稀疏線性系統求解器。6. scipy.special:SPECFUN(這是一個實現了許多常用數學函數(如伽瑪函數)的Fortran庫)的包裝器。7. scipy.stats:標準連續和離散概率分布(如密度函數、採樣器、連續分布函數等)、各種統計檢驗方法,以及更好的描述統計法。
  • python數據分析專題 (7):python數據分析模塊
    python是一門優秀的程式語言,而是python成為數據分析軟體的是因為python強大的擴展模塊。
  • 小白數據分析——Python職位數據分析全鏈路
    完成數據清洗後,我們就正式進入分析的環節了,分析分為兩部分,統計分析和文本分析,前者是對數值型指標做統計,後者是對文本進行分析。我們平時接觸到最多是前者,它可以讓我們從宏觀的角度去了解被分析的對象。文本分析也有不可替代的價值,我們下篇重點介紹。2.
  • Python數據分析—apply函數
    在對海量數據進行分析的過程中,我們可能要把文本型的數據處理成數值型的數據,方便放到模型中進行使用。
  • 量化交易之《Python數據分析》
    Numpy:提供數值數組和函數Scipy:科學計算庫Matplotlib:數據可視化 Numpy 數組的優勢1 Numpy數組能夠運用向量化運算來處理整個數組,而完成同樣的任務,python的列表則通常必須藉助循環語句遍歷列表,並對逐個元素進行相應的處理2 Numpy使用了優化過的C
  • 初識python
    :python ,php,等等。4,python的發展。5,python種類。3,input出來的數據類型全部是str10,基礎數據類型初始。數字:int 12,3,45+ - * / **% 取餘數ps:type()字符串轉化成數字:int(str) 條件:str必須是數字組成的。
  • python數據分析專題 (9):numpy基礎
    NumPy(Numerical Python的簡稱)是高性能科學計算和數據分析的基礎包。NumPy最重要的一個特點就是其N維數組對象(即ndarray),該對象是一個快速而靈活的大數據集容器。新手可能不理解這句話的含義,這個需要慢慢去理解 。總之,知道numpy是python數據分析最重要的基礎包就可以了。
  • Python數據分析:pandas讀取和寫入數據
    我的公眾號是關於自己在數據分析/挖掘學習過程中的一些技術和總結分享,文章會持續更新......繼續深入學習pandas相關操作,數據讀取寫入、分組、合併,轉換等等。前面一篇文章裡已經寫了關於描述性統計以及常用的基本操作。接下來的一段時間裡,我將陸續地去掌握並輸出。這篇文章是關於數據讀取與寫入的知識點。
  • 使用 R 與 python 進行 t 檢驗
    實際上 t 檢驗並沒有限制樣本的數量,資料上反而講到,t分布是接近標準正態分布的鐘型分布,當樣本量大於 30 時,通常使用正態分布。也就是說只要是正態分布或近似正態分布,就可以使用 t 檢驗。t檢驗是用 t 分布理論來推論差異發生的概率,他的檢驗有三種類型:例如,假設我們調查了一組男學生的身高,看看他們的平均值是否等於 170 cm。
  • python教程
    xadmin4001python分布式爬蟲打造搜尋引擎4002Python高效編程技巧Python工程師主要從事爬蟲開發、Web開發及數據分析工作,隨著人工智慧的崛起,Python作為最好的工具語言,已經被廣泛的大量使用。
  • Python中的運算符,如何通過算術運算符計算數據,實例操作演示
    什麼是Python的運算符在計算機系統中,變量就是存放數據的一個容器,簡單來說變量是用來存儲數據的,存儲數據最基本的作用就是為了運算,運算就會使用到運算符,那麼python中的運算符有哪些?例子中,1和 2被稱為操作數,"+" 稱為運算符。
  • python數據分析--回歸函數及線性回歸分析
    2.工具數據分析有很多成熟的工具可以使用,如R、python、spss等。此處我們選用python進行分析。首先,我們需要安裝並導入python數據分析常用的庫。# 工具:python3#固定導入import numpy as np #科學計算基礎庫,多維數組對象ndarrayimport pandas as pd #數據處理庫,DataFrame(二維數組)import matplotlib as mpl #畫圖基礎庫import matplotlib.pyplot
  • 初識Python
    開放原始碼,擁有強大的社區和生態圈,尤其是在數據分析和機器學習領域。解釋型語言,天生具有平臺可移植性,代碼可以工作於不同的作業系統。對兩種主流的編程範式(面向對象編程和函數式編程)都提供了支持。代碼規範程度高,可讀性強,適合有代碼潔癖和強迫症的人群。Python的缺點主要集中在以下幾點。
  • Python 四大數據類型總結
    基本數據類型數值型Python 中的數據皆是對象,比如被熟知的 int 整型對象、float 雙精度浮點型、bool 邏輯對象,它們都是單個元素。舉兩個例子。strip 用於去除字符串前後的空格:In [1]: ' I love python\t\n '.strip()Out[1]: 'I love python'replace 用於字符串的替換:In [2]: 'i love python'
  • Python生成器next方法和send方法區別詳解
    住址"python 生成器和迭代器的原理解析一.生成器簡介 在python中,生成器是根據某種算法邊循環邊計算的一種機制.主要就是用於操作大量數據的時候,一般我們會將操作的數據讀入內存中處理,可以計算機的內存是比較寶貴的資源,我認為的當要處理的數據超過內存四分之一的大小時就應該使用生成器. 二.生成器有什麼特點?
  • Python-SHAP的實現
    = clf_XG.predict_proba(X_test_type2)對特徵的總體分析explainer = shap.TreeExplainer(clf_XG)shap_values = explainer.shap_values(X_train_t_XG)shap.summary_plot