不同学位不同学历层次下不同年龄段的人数

不同学位不同学历层次下不同年龄段的人数

需求分析:

按照不同学位不同学历层次下不同年龄段的人数,出生日期举例:20231029

代码:

    def agade_teacher(self):
        # 读取表格数据,假设表格文件名为data.xlsx
        data = pd.read_excel("teacher_high.xlsx", sheet_name='Sheet2')

        # 获取当前日期
        current_date = datetime.datetime.now()

        # 计算年龄,并根据年龄范围进行分类
        data['出生日期'] = data['出生日期'].astype(str)
        data['出生日期'] = pd.to_datetime(data['出生日期'], format='%Y%m%d')
        data['年龄'] = (current_date - data['出生日期']).dt.days // 365  # 计算年龄,以年为单位

        # 创建年龄范围的标签
        age_bins = [0, 29, 34, 39, 44, 49, 54, 59, 64, 200]
        age_labels = ['29岁以下', '30-34岁', '35-39岁', '40-44岁', '45-49岁', '50-54岁', '55-59岁', '60-64岁', '65岁以上']

        data['年龄范围'] = pd.cut(data['年龄'], bins=age_bins, labels=age_labels)

        # 根据不同学位和学历层次要求进行筛选和统计
        degrees = ['硕士', '学士', '无']
        education_levels = ['硕士研究生', '大学本科', '大学专科', '高中阶段以下']

        result_degrees_education = {}

        for degree in degrees:
            for education_level in education_levels:
                filtered_data = data[(data['所获学位'] == degree) & (data['学历层次'] == education_level)]
                result = filtered_data.groupby('年龄范围').size().reset_index(name='人数')
                result_degrees_education[f"{degree}-{education_level}"] = result

        # 输出不同学位和学历层次要求下的人数
        print("按学位和学历层次要求统计:")
        for key, result in result_degrees_education.items():
            print(f"学位和学历层次: {key}")
            print(result)
            print()

重要知识点:

data['出生日期'] = pd.to_datetime(data['出生日期'], format='%Y%m%d'):
使用 pd.to_datetime 函数将字符串日期转换为 Pandas 中的日期时间数据类型。format='%Y%m%d' 表示日期的格式是年-月-日。
data['年龄'] = (current_date - data['出生日期']).dt.days // 365: 这行代码计算了一个新的列 '年龄',通过当前日期 current_date 减去 '出生日期' 列来获取日期间隔。dt.days 返回日期间隔的天数,// 365 将总天数转换为年数。
//::Python中两个斜杠即双斜杠(//)表示地板除,即先做除法(/),然后向下取整(floor)
cut函数:见前文

result = filtered_data.groupby('年龄范围').size().reset_index(name='人数'):
此行代码使用 groupby 函数按照 '年龄范围' 对已筛选的数据进行分组,然后使用 size 方法计算每个年龄范围的人数。最后,reset_index 用于重置索引,并为 '人数' 这一新的列指定名称。 reset_index(name='人数') 将创建一个新的 DataFrame,其中包含 '年龄范围' 作为索引,以及 '人数' 作为列,显示每个年龄范围内的人数统计。

result_degrees_education[f"{degree}-{education_level}"] = result:
将名为 result 的 Series 或 DataFrame(存储在 result 变量中)赋值给名为 result_degrees_education[f"{degree}-{education_level}"] 的 DataFrame 中的某一列。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

5-StarrySky

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值