癌癥測(cè)試結(jié)果
一、測(cè)試的問(wèn)題
1.總共有多少病人?
2.多少病人患癌癥?
3.多少病人沒(méi)有患癌癥?
4.患癌癥的病人比例是多少?
5.沒(méi)有患癌癥的病人比例是多少?
6.癌癥患者測(cè)試為陽(yáng)性的病人比例是多少?
7.癌癥患者測(cè)試為陰性的病人比例是多少?
8.非癌癥患者測(cè)試為陽(yáng)性的病人比例是多少?
9.非癌癥患者測(cè)試為陰性的病人比例是多少?
10.檢測(cè)結(jié)果為陽(yáng)性的病人患癌概率
11.檢測(cè)結(jié)果為陽(yáng)性的病人沒(méi)有患癌概率
12.檢測(cè)結(jié)果為陰性的病人患癌概率
13.檢測(cè)結(jié)果為陰性的病人沒(méi)有患癌概率
二、問(wèn)題解決
1.總共有多少病人?
思考路徑:
(1)先導(dǎo)入csv數(shù)據(jù)集,并查看開頭幾行數(shù)據(jù)格式是否合適
import pandas as pd
df = pd.read_csv('cancer_test_data.csv')
df.head()
(2)通過(guò)shape函數(shù)查看人數(shù)
df.shape
數(shù)據(jù)有四列:序號(hào)列;patient_id列;test_result列;has_cancer列
2.多少病人患癌癥?
思考路徑:求has_cancer列為True情況的總數(shù)。
(df.hac_cancer == True).sum()
3.多少病人沒(méi)有患癌癥?
思考路徑:同上一個(gè)問(wèn)題,將True改為False
(df.hac_cancer == False).sum()
4.患癌癥的病人比例是多少?
思考路徑:求比例的方法是將數(shù)據(jù)按照適用條件轉(zhuǎn)換為bool,符合條件為True,不符合條件為False,然后對(duì)條件求mean。求mean時(shí),邏輯為,結(jié)果為True的設(shè)為1,F(xiàn)alse的設(shè)為0,加總后求平均數(shù)就相當(dāng)于計(jì)算符合條件的數(shù)量的比例。
(df.has_cancer == True).mean()
5.沒(méi)有患癌癥的病人比例是多少?
(df.has_cancer == False).mean()
6.癌癥患者測(cè)試為陽(yáng)性的病人比例是多少?
思考路徑:同時(shí)調(diào)取符合條件的兩列,然后計(jì)算均值??紤]使用query函數(shù),前一個(gè)是基礎(chǔ)事件。
(df.query('has_cancer')['test_result'] == 'Positive').mean()
相當(dāng)于先用query調(diào)?。篽as_cancer列,然后在該列的基礎(chǔ)上篩選符合條件的['test_result'] == 'Positive'數(shù)據(jù)。
df正常調(diào)用test_result == ''
Positive時(shí)表達(dá)式是:df.test_result == Positive
現(xiàn)在將兩個(gè)條件直接并列即可。
query函數(shù)后只能調(diào)用str,所以需要將test_result == Positive轉(zhuǎn)變?yōu)閟tr格式。
7.癌癥患者測(cè)試為陰性的病人比例是多少?
思考路徑:同上一道題,
(df.query('has_cancer')['test_result'] == 'Negative').mean()
8.非癌癥患者測(cè)試為陽(yáng)性的病人比例是多少?
(df.query('has_cancer == False')['test_result'] == 'Positive').mean()
9.非癌癥患者測(cè)試為陰性的病人比例是多少?
(df.query('has_cancer == False')['test_result'] == 'Negative').mean()
10.檢測(cè)結(jié)果為陽(yáng)性的病人患癌概率
(df.query(" test_result == 'Positive' ")['has_cancer']).mean()
11.檢測(cè)結(jié)果為陽(yáng)性的病人沒(méi)有患癌概率
1 - (df.query(" test_result == 'Positive' ")['has_cancer']).mean()
12.檢測(cè)結(jié)果為陰性的病人患癌概率
(df.query(" test_result == 'Negative' ")['has_cancer']).mean()
13.檢測(cè)結(jié)果為陰性的病人沒(méi)有患癌概率
1 - (df.query(" test_result == 'Negative' ")['has_cancer']).mean()
三、總結(jié)
這次練習(xí)中重點(diǎn)是如何通過(guò)query同時(shí)調(diào)用兩列數(shù)據(jù),第一列數(shù)據(jù)用( ),第二列數(shù)據(jù)用[ ]。query函數(shù)后跟的是str型數(shù)據(jù),其他型數(shù)據(jù)會(huì)報(bào)錯(cuò)。
另外python比手工計(jì)算貝葉斯更快,而且方便理解,沒(méi)有更多的計(jì)算路徑,直接調(diào)取前后調(diào)取不同的數(shù)據(jù)即可。
這是Udacity數(shù)據(jù)分析(入門)課程的統(tǒng)計(jì)學(xué)lesson8的學(xué)習(xí)筆記三
Lesson8的課程學(xué)習(xí)結(jié)束
轉(zhuǎn)載請(qǐng)注明出處