zoukankan      html  css  js  c++  java
  • 数据分析实战(二)

    数据集地址 提取码: us2a

    Age: 年龄,指登船者的年龄
    Fare: 价格,指船票价格
    Embark: 登船的港口
    

    Q1: 按照港口分类,使用python求出各类数据年龄、票价格的统计量(均值、方差、标准差、变异系数等)

    import pandas as pd
    data = pd.read_excel("D:datadata.xlsx")
    
    data = data.set_index("ID")
    
    portS = data[data["Embarked"]=="S"]
    portC = data[data["Embarked"]=="C"]
    portQ = data[data["Embarked"]=="Q"]
    
    portS_age = portS["Age"]
    portS_fare = portS["Fare"]
    portC_age = portC["Age"]
    portC_fare = portC["Fare"]
    portQ_age = portQ["Age"]
    portQ_fare = portQ["Fare"]
    
    port_details = pd.DataFrame({"均值":[portS_age.mean(),portC_age.mean(),portQ_age.mean(),portS_fare.mean(),portC_fare.mean(),portQ_fare.mean()],
                "方差":[portS_age.var(),portC_age.var(),portQ_age.var(),portS_fare.var(),portC_fare.var(),portQ_fare.var()],
                "标准差":[portS_age.std(),portC_age.std(),portQ_age.std(),portS_fare.std(),portC_fare.std(),portQ_fare.std()],
                "变异系数":[portS_age.mean()/portS_age.std(),portC_age.mean()/portC_age.std(),portQ_age.mean()/portQ_age.std(),portS_fare.mean()/portS_fare.std(),portC_fare.mean()/portC_fare.std(),portQ_fare.mean()/portQ_fare.std()]},
                index=['S港口年龄', 'C港口年龄', 'Q港口年龄', 'S港口票价', 'C港口票价', 'Q港口票价'])
    

    Q1

    Q2: 画出价格的分布图像,验证数据服从何种分布(正态、卡方、T)?

    在已知所要处理的随机过程属于某一个随机过程族时,可以采用最大似然估计来 得到相关参数的值

    这部分代码参考某位群内大佬代码, 确实叹服代码写的很好, 后续继续研究学习代码内细节

    是否符合正态分布?

    fare = data['Fare'].copy().values   # 单独选取fare列值
    fare.sort()
    
    loc, std = stats.norm.fit(fare)  # 最大似然求得均值与标准差
    y = stats.norm.pdf(fare, loc=loc, scale=std)
    plt.hist(fare, bins=10, density=True, label='Fare Distribution')
    plt.plot(fare, y, color='#E78A61', label='normal fit')
    plt.xlabel("Fare")
    plt.ylabel("Density")
    plt.title('Fare Distribution')
    plt.legend()
    plt.show()
    
    norm_random = stats.norm.rvs(loc=loc, scale=std, size=len(fare))
    norm_KS_stastic, norm_pvalue = stats.ks_2samp(fare, norm_random)
    print("norm_KS_stastic = %.4f norm_pvalue = %.4f" % (norm_KS_stastic, norm_pvalue))
    if(norm_pvalue<0.05):
        print("该分布不符合正态分布")
    else:
        print("该分布符合正态分布")
    

    是否符合卡方分布?

    chi2_df,chi2_loc, chi2_std = stats.chi2.fit(fare)  # 最大似然求得均值与标准差
    y = stats.chi2.pdf(fare, df=chi2_df, loc=chi2_loc, scale=chi2_std)
    plt.hist(fare, bins=10, density=True,label='Fare Distribution')
    plt.plot(fare, y, color='#E78A61', label='chi2 fit')
    plt.xlabel("Fare")
    plt.ylabel("Density")
    plt.title('Fare Distribution')
    plt.legend()
    plt.show()
    
    chi2_random = stats.chi2.rvs(df=chi2_df,loc=chi2_loc, scale=chi2_std, size=len(fare))
    chi2_KS_stastic, chi2_pvalue = stats.ks_2samp(fare, chi2_random)
    print("chi2_KS_stastic = %.4f chi2_pvalue = %.4f" % (chi2_KS_stastic, chi2_pvalue))
    if(chi2_pvalue<0.05):
        print("该分布不符合卡方分布")
    else:
        print("该分布符合正态分布")
    

    是否符合T分布?

    t_df, t_loc, t_std = stats.t.fit(fare)  # 最大似然求得均值与标准差
    y = stats.t.pdf(fare,df=t_df, loc=t_loc, scale=t_std)
    plt.hist(fare,bins=10, density=True, label='Fare Distribution')
    plt.plot(fare, y, color='#E78A61', label='t fit')
    plt.xlabel("Fare")
    plt.ylabel("Density")
    plt.title('Fare Distribution')
    plt.legend()
    plt.show()
    
    norm_random = stats.t.rvs(df=t_df,loc=t_loc, scale=t_std, size=len(fare))
    t_KS_stastic, t_pvalue = stats.ks_2samp(fare, norm_random)
    print("t_KS_stastic = %.4f t_pvalue = %.4f" % (t_KS_stastic, t_pvalue))
    if(t_pvalue<0.05):
        print("该分布不符合T分布")
    else:
        print("该分布符合正态分布")
    

    最终分析

    该分布不符合以上三种中的任何一种

    Q3: 港口S与Q之间的价格之差是否符合某种分布?

    s_fare = portS_fare.copy().values
    q_fare = portQ_fare.copy().values
    
    mean2 = s_fare.mean()-q_fare.mean()
    std2 = (s_fare.std()**2/len(s_fare)+q_fare.std()**2/len(s_fare))**0.5
    
    x = np.arange(- 40, 40)
    y = stats.norm.pdf(x, mean2, std2)
    
    plt.plot(x, y)
    plt.xlabel("S_Fare - Q_Fare")
    plt.ylabel("Density")
    plt.show()
    

    由图像可知两港口费用之差近似服从于正态分布

  • 相关阅读:
    spring对事务的配置
    Mysq中的流程控制语句的用法
    mysql存储过程和常用流程控制
    ztree更换节点图标
    eclipse调试(debug)的时候,出现Source not found,Edit Source Lookup Path,一闪而过
    myeclipse如何设置或关闭断点调试自动跳入debug模式
    Druid数据源对数据库访问密码加密好麻烦
    js中if()条件中变量为false的情况
    TFS2008 安装图解(详细版本)(转载)
    数字格式化
  • 原文地址:https://www.cnblogs.com/S031602219/p/11432860.html
Copyright © 2011-2022 走看看