#老规矩,引入吧
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
##上句的意思是mat嵌入到notebook中,如果没有这句会怎么反应呢?
%config InlineBackend.figure_format = 'retina'
##这句应该是精度的意思,视网膜精度。
df=pd.read_csv(r"C:\Users\bog\Desktop\3-python lesson\smoking_cancer.txt",sep='\t')
df.head()
###??? 为什么是read_table,为什么读取txt格式文件,使用的是read_table,而不是read_txt呢?
数据的集中趋势
• 均值、中位数、众数 • 偏度
数据的离散程度
• 全距Range • 四分位距IQR& 箱图 • 方差、标准差 • 拇指规则& 切比雪夫定理
两个变量的关系 • 协方差 • 相关系数 • 相关性 VS 因果性
现在的问题是如何分析集中趋势?
- 算出中位数,均值等,关键是算出哪个变量的各种值呢?
- 不同洲之间的吸烟人数,肺癌的均值等
- 然后画出不同洲的分布图。
cig=df.CIG
cig.head()
0 18.20
1 25.82
2 18.24
3 28.60
4 31.10
Name: CIG, dtype: float64
cmean=np.mean(cig)
cmean
#各州吸烟者平均数
24.914090909090906
cmedian=np.median(cig)
cstd=np.std(cig)
print(cmedian)
print(cstd)
23.765
5.50958929263822
cmean>cmedian
True
均值大于中位数,看来图像右偏
plt.hist(cig,bins=50, rwidth=0.9,range=(12, 42) )
plt.show()
#### 如何设定y轴呢?
### 总觉得y轴可以设置,但不知道啊
10万人吸烟人数集中在20-30之间。
人均吸烟数的离散程度呢?
#画箱图
plt.boxplot(cig)
plt.show()
!conda install seaborn
!pip install seaborn
import seaborn
sns.boxplot(data=df, y='CIG', x='LUNG')
plt.show()
没有安装seaborn包,无反应。
相关性的一段
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
##上句的意思是mat嵌入到notebook中,如果没有这句会怎么反应呢?
%config InlineBackend.figure_format = 'retina'
##这句应该是精度的意思,视网膜精度。
df=pd.read_csv(r"C:\Users\bog\Desktop\3-python lesson\smoking_cancer.txt",sep='\t')
df.head()
#np.cov(cig,lung)
#np.corrcoef(salary, score)[0,1]
cig=df.CIG
cig
lung=df.LUNG
lung
print('协方差是:',np.cov(cig,lung)[0,1])
print('吸烟数和肺癌数的相关性是:',np.corrcoef(cig,df.LUNG)[0,1])
#"吸烟数和肺癌数的协方差是:"
#"吸烟数和肺癌数的相关性是:"
plt.scatter(cig,df.LUNG)
plt.show()
协方差是: 16.4339634249
吸烟数和肺癌数的相关性是: 0.697402504928
##烟和膀胱癌之间的相关性呢?
print('烟和膀胱癌之间的相关性:',np.corrcoef(df.CIG,df.BLAD)[0,1])
plt.scatter(df.CIG,df.BLAD)
plt.show()
烟和膀胱癌之间的相关性: 0.703621859461
<matplotlib.collections.PathCollection at 0x14cd75bd898>
###吸烟数和肾癌的相关性呢?
print('吸烟数和肾癌的相关:',np.corrcoef(df.CIG,df.KID)[0,1])
plt.scatter(df.CIG,df.KID)
plt.show()
吸烟数和肾癌的相关: 0.487389617034
###吸烟数和白血病的相关性呢?
print('与白血病的相关系数为:',np.corrcoef(df.CIG,df.LEUK)[0,1])
plt.scatter(df.CIG,df.LEUK)
与白血病的相关系数为: -0.0684812294766
<matplotlib.collections.PathCollection at 0x14cd7622c18>
相关性结论
- 白血病和吸烟数的相关性接近于0
- 肾癌跟吸烟的相关性系数低于50%
- 但是肺癌和膀胱癌跟吸烟相关性高达70%。
- 不过这个数据也有不合理的地方,假如A洲,吸烟人数为100,肺癌人数为20. 但这20人,可不一定包含于吸烟的100人中哦。
- 所以这次的分析只是在练习方法,对数据的信任度,需要另当别论。