Python基本数据分析

【实验目的】

1.掌握Python软件数据预处理(缺失值、异常值、重编码、数据标准化);
2.掌握Python软件进行描述统计分析。
3.掌握Python软件进行假设检验分析。

【实验要求】

掌握本章讲授数据分析方法的基本Python编程操作。

【实验过程】(必要的实验步骤、绘图、代码注释、数据分析)

实验步骤

  • 1、读入数据
  • 2、数据预处理
  • 3、数据分析方法介绍
  • 4、编程实现数据分析方法,含代码注释
  • 5、重要结果的图表绘制
  • 6、必要的结果解释

1. 数据data_titanic.csv中存放了泰坦尼克号部分乘客生还情况记录,具体表格列信息见下表,要求完成下列数据预处理和分析工作。

SurvivedPclassSexAgeSibSpParchFareEmbarked生还与否 1-生还 0-死亡客舱等级性别 0-male 1-female年龄同船旁系亲属人数同船直系亲友人数票价登船港口 C = Cherbourg; Q = Queenstown; S = Southampton

(1)报告各列数据缺失值情况
(2)对Age列中缺失值进行插补,方法为使用该列平均值填补缺失值
(3)对Sex列,Embarked列进行重编码,变为0,1,2这种数值型变量。

代码:(不要截图,要文本格式代码,下同)

import numpy as np
from numpy import mean
import pandas as pd
data = pd.read_csv('data_titanic.csv')

print(data.columns)

print(data.isnull().sum())

print(data.isnull().sum())
mean_age=mean(data.iloc[:,4])
data1 = data.fillna(value = {'Age':mean_age},inplace = False)

print(data1.isnull().sum())

data2 = data1.copy()
data2['Sex'] = pd.Categorical(data1['Sex']).codes
data2['Embarked'] = pd.Categorical(data1['Embarked']).codes
print(data2)
  1. 数据集data_health.xlsx中存放了某高校四个年级学生体重和肺活量的数据,要求完成下列分析。

(1)计算1年级同学体重的平均值、最小值、最大值、标准差、变异系数;
(2)作出2年级男生和女生的肺活量箱线图(每个性别一个箱线图);
(3)不同性别学生平均体重(假设服从正态分布)之间是否存在显著差异?(独立样本T检验);
(4)不同年级学生肺活量(假设服从正态分布)之间是否存在显著差异?(方差分析)

代码:

import numpy as np
from numpy import mean,median,ptp,var,std
import pandas as pd
from  scipy.stats import ttest_ind, levene
from scipy import stats
from statsmodels.formula.api import ols
from statsmodels.stats.anova import anova_lm
from statsmodels.stats.multicomp import pairwise_tukeyhsd
data = pd.read_excel('data_health.xlsx')

mean_d1 = mean(data.iloc[0:52,2])
print('一年级体重平均值',np.round(mean_d1,2))
print('一年级体重最大值',np.max(data.iloc[0:52,2]))
print('一年级体重最小值',np.min(data.iloc[0:52,2]))

std_d1 = std(data.iloc[0:52,2])
print('一年级体重的标准差为',np.round(std_d1,2))

vc_d1 = std(data.iloc[0:52,2]) /mean(data.iloc[0:52,2])
print('一年级体重的变异系数为:',np.round(vc_d1,2))

import matplotlib.pyplot as plt
plt.boxplot(data.iloc[53:58,3])
plt.show()
plt.boxplot(data.iloc[59:81,3])
plt.show()

x=[]
y=[]

for i in range(0,17):
    x.append(data.iloc[i,2])

for i in range(53,58):
    x.append(data.iloc[i,2])

for i in range(82,87):
    x.append(data.iloc[i,2])

for j in range(18,52):
    y.append((data.iloc[j,2]))

for j in range(59,81):
    y.append((data.iloc[j,2]))

for j in range(88,106):
    y.append((data.iloc[j,2]))

a =  levene(x,y)
print('方差齐性检验结果:')
print('\n T统计量的值为:',np.round(a.statistic,3))
print('\n P值为:',np.round(a.pvalue,3))
print('----------------')

res = ttest_ind(x, y)
print('方差齐性情况下,均值比较结果(P值):\n',
      np.round(res.pvalue,3))
print('----------------')

'''res2 =ttest_ind(x,y,equal_var=False)
print('方差不具有齐性情况下,均值比较结果(P值):\n',np.round(res2.pvalue,3))'''

df=data
'''step3 前提性检验:levene检验'''
res_v = stats.levene(df['肺活量'][df['年级'] == 1],
             df['肺活量'][df['年级'] == 2],
             df['肺活量'][df['年级'] == 3])
print('方差齐性检验P值:',np.round(res_v.pvalue,3))

'''Step4 单因素方差分析'''
formula = '肺活量~年级'
anova_results = anova_lm(ols(formula,df).fit())
print('\n方差分析结果(ANOVA表):\n',anova_results)

'''Step5 多重比较'''

'''res_post = pairwise_tukeyhsd(df['肺活量'],
                             df['年级'],alpha=0.05)
print('\n多重比较结果:\n',res_post)'''

结果:
(1)一年级体重平均值 17.68
一年级体重最大值 21.2
一年级体重最小值 13.6
一年级体重的标准差为 1.61
一年级体重的变异系数为: 0.09
(2)

Python基本数据分析
Python基本数据分析

(3)方差齐性检验结果:

T统计量的值为: 0.174

P值为: 0.678
p值>0.05 方差具有齐性

方差齐性情况下,均值比较结果(P值):
0.877
P值>0.05 服从原假设,不同性别学生的平均体重不存在显著差异
方差齐性检验P值: 0.334
p值>0.05 方差具有齐性
方差分析结果:

ANOVA表dfsum_sqmean_sqFPR(>F)年级1.07.559653e+0475596.5301552.6265690.108117Residual104.02.993273e+0628781.470229NaNNaN

p值=0.108>0.05 服从原假设,不同年级同学肺活量不存在显著差异。

  1. 已知某减肥俱乐部推荐的减肥茶经过部分志愿者使用前后体重数据(data_tea.xlsx),假设服用前后志愿者体重均服从正态分布,试用配对样本T检验分析减肥茶是否有效?

代码:

from numpy import mean,median,ptp,var,std
from  scipy.stats import ttest_rel
import pandas as pd
import numpy as np

'''step2 读(导)入数据'''
data = pd.read_excel('data_tea.xlsx',engine='openpyxl')
before=[]
after=[]
for i in range(0,35):
      before.append(data.iloc[i,0])
      after.append(data.iloc[i,1])
print(before)
print(after)
'''Step3  配对样本t检验'''
res = ttest_rel(before, after)
print('T统计量值为:',np.round(res.statistic,2))
print('\n P值为:',np.round(res.pvalue,3))

'''Step4 若有显著差异,进一步分析'''
print('\n 样本均值之差:',np.round(mean(data.iloc[:,0])-mean(data.iloc[:,1])))

结果:
T统计量值为: 14.25

P值为: 0.0

样本均值之差: 19.0
减肥茶有减肥效果

Original: https://blog.csdn.net/gezongbo/article/details/123827339
Author: BoBo玩ROS
Title: Python基本数据分析

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/696143/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球