数据挖掘05-python描述分析实践

小白入门数据挖掘,从零开始,每周一更。


00 项目简介

  • 数据集地址:http://jse.amstat.org/datasets/normtemp.dat.txt

  • 数据关于体温、性别、心率的临床数据,并对以下问题进行数据分析:

    01 人类体温均值真的是98.6F吗?

    02 体温样本数据是否服从正态分布?

    03 不正常的体温是多少?

    04 男性和女性的正常体温有明显的区别吗?

    05 体温和心率是否有相关性?


01 人类体温均值真的是98.6F吗?

  • 代码

    import pandas as pd
    我选择下载到本地,大家可以尝试使用request
    df = pd.read_csv('C:/Users/ny/Desktop/python/体温数据集.txt', engine='python', header=None, names=['体温', '性别', '心率'],sep='\s+')
    print(df['体温'].describe())

  • 执行结果

    count 130.000000
    mean 98.249231
    std 0.733183
    min 96.300000
    25% 97.800000
    50% 98.300000
    75% 98.700000
    max 100.800000
    Name: 体温, dtype: float64

  • 结论

    • 结果说明人的体温平均在98.25F

02 体温样本数据是否服从正态分布?

  • KS算法

    • 代码

      KS方法-(样本量大于50)
      u = df['体温'].mean()
      std = df['体温'].std()
      ks_test = stats.kstest(df['体温'], 'norm', (u, std))

    • 结果

      KstestResult(statistic=0.06472, pvalue=0.64503)

  • W检测

    • 代码

      end = stats.shapiro(df['体温'])

    • 结果

      (0.9865769743919373, 0.2331680953502655)

  • 直方图观察法

    • 代码

      plt.hist(df['体温'], bins=130, histtype='bar', color='r', density=True)
      plt.show()

    • 结果


  • 拟合曲线

    • 代码

      sns.set_palette("hls")
      sns.distplot(df['体温'], color='k', bins=130, kde=True)
      plt.show()

    • 结果


03 不正常的体温是多少?

  • 代码

    Q1 = df['体温'].quantile(q=0.25) Q3 = df['体温'].quantile(q=0.75)
    计算异常值范围,1.5倍四分位差
    low_quantile = Q1 - (Q3 - Q1) * 1.5 high_quantile = Q3 + (Q3 - Q1) * 1.5
    异常值筛选
    exception_value = df['体温'] < low_quantile) | (df['体温'] > high_quantile)]
    print(exception_value)

  • 结果

    0 96.3
    65 96.4
    129 100.8
    Name: 体温, dtype: float64

  • 箱线图

    • 代码

      plt.boxplot(df['体温']) plt.show()

    • 结果


04 男性和女性的正常体温有明显的区别吗?

  • 代码

    df2 = df[(df['体温'] >= low_quantile) | (df['体温'] <= high_quantile)]
    df_male = df2'体温' == 1]
    df_female = df2'体温' == 2]
    print(df_male.mean(), df_female.mean())

  • 结果

    98.1046153846
    98.3938461538


05 体温和心率是否有相关性?

  • 相关性解释

    相关系数 相关强度
    0.8-1.0 极强
    0.6-0.8
    0.4-0.6 中等
    0.2-0.4
    0.0-0.2 极弱
  • 代码

    print(df.corr())
    print(df.corr(method='pearson'))
    print(df.corr(method='spearman'))
    print(df.corr(method='kendall'))

  • 结果

    体温 性别 心率
    体温 1.000000 0.198006 0.253656
    性别 0.198006 1.000000 0.055766
    心率 0.253656 0.055766 1.000000
    体温 性别 心率
    体温 1.000000 0.198006 0.253656
    性别 0.198006 1.000000 0.055766
    心率 0.253656 0.055766 1.000000
    体温 性别 心率
    体温 1.000000 0.195231 0.280919
    性别 0.195231 1.000000 0.075927
    心率 0.280919 0.075927 1.000000
    体温 性别 心率
    体温 1.000000 0.163190 0.186489
    性别 0.163190 1.000000 0.063322
    心率 0.186489 0.063322 1.000000

  • 散点图

    • 代码

      plt.scatter(df['体温'], df['心率'])
      plt.show()

    • 结果


文章仅作为自己学习记录,内容来源于同学们学习总结内容。

Day Day up !

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容