为了解决特定问题而进行的学习是提高效率的最佳途径。这种方法能够使我们专注于最相关的知识和技能,从而更快地掌握解决问题所需的能力。
(以下练习题来源于《统计学—基于Python》。联系获取原始数据。)
练习题
为评价旅游业的服务质量,随机抽取60个顾客进行调查,得到的满意度回答如下表所示(前3行和后3行)。
(1)分别生成被调查者性别和满意度的简单频数分布表。
(2)生成被调查者性别和满意度的二维列联表。
(3)对(2)生成的二维列联表做简单分析。
Python代码与结果
频数分布表(frequency distribution table)是展示数据的一种基本形式,它是对类别数据(因子的水平)计数或数值数据类别化(分组)后计数生成的表格,用于展示数据的频数分布(frequency distribution),其中,落在某一特定类别的数据个数称为频数(frequency)。
使用频数分布表可以观察不同类型数据的分布特征。比如,通过不同品牌产品销售量的分布可以了解其市场占有率;通过一所大学不同学院学生人数的分布可以了解该大学的学生构成,通过社会中不同收入阶层的人数分布可以了解收入的分布状况,等等。
(1)分别生成被调查者性别和满意度的简单频数分布表。
# 使用value_counts函数生成性别和满意度的简单频数分布表(一维表)
import pandas as pd
df = pd.read_csv('exercise2_4.csv')
tab11 = df['性别'].value_counts() # 生成性别频数表(类型是序列)
pd.DataFrame(tab11) # 转换成数据框
# 使用value_counts函数生成性别和满意度的简单频数分布表(一维表)
import pandas as pd
df = pd.read_csv('exercise2_4.csv')
tab12 = df['满意度'].value_counts() # 生成性别频数表(类型是序列)
pd.DataFrame(tab12) # 转换成数据框
(2)生成被调查者性别和满意度的二维列联表。
# 使用pd汇总的crosstab函数生成二维表
import pandas as pd
df = pd.read_csv('exercise2_4.csv')
tab21 = pd.crosstab(df.性别, df.满意度)
tab21
# 为二维表添加边际和并修改边际和的名称
tab22 = pd.crosstab(df.性别, df.满意度, margins = True, margins_name = '合计')
tab22
(3)对(2)生成的二维列联表做简单分析(计算各数据占总和的百分比)。
# 计算各列所占的比例,并转换成百分比表
tab24 = pd.crosstab(df.性别, df.满意度, margins = True, margins_name = '合计', normalize = 'columns')
round(tab24*100, 2)
# 计算各数据占总和的比例,并转换成百分比表
tab25 = pd.crosstab(df.性别, df.满意度, margins = True, margins_name = '合计', normalize = 'all')
round(tab25*100,2)
都读到这里了,不妨关注、点赞一下吧!