Python统计基础:生成频数分布表

为了解决特定问题而进行的学习是提高效率的最佳途径。这种方法能够使我们专注于最相关的知识和技能,从而更快地掌握解决问题所需的能力。

(以下练习题来源于《统计学—基于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)


都读到这里了,不妨关注、点赞一下吧!

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值