【Excel数据分析】花垣县事业单位出成绩了,用Excel自带的M语言做一个数据分析

发布于:2025-06-27 ⋅ 阅读:(17) ⋅ 点赞:(0)

花垣县事业单位出成绩了,用Excel自带的M语言做一个数据分析

Power Query M 语言,简称 M 语言,全名叫 Power Query Formula Language。

需求

有人说这次考试太难了,难度堪比国考,那我们就来做一个数据分析看看到底怎么个事:

  1. 我们将根据所说这次难的人考试内容和分数进行分析,考的是笔试科目是“公共基础知识+职业能力倾向测验”

  2. 那么我就在岗位计划表里筛选出这个笔试科目的在这里插入图片描述

  3. 找到岗位代码 例如B1,B2等;

  4. 再到笔试成绩表里找到“报考岗位”这一列,是在文字中
    夹着有岗位代码的。这2个表我已经上传到附件zip里了。 在这里插入图片描述在这里插入图片描述

  5. 到这里,不难想到,到成绩表里去筛选,在报考岗位这列找到对应岗位代码B1,B2等就知道考笔试科目是“公共基础知识+职业能力倾向测验”的人数有多少了;

  6. 但是,到这里我发现我不会了
    在这里插入图片描述
    在这里插入图片描述
    这里的包含只能选2个啊,我除了B1,B2还有别的没选上呢?这咋搞?
    真把我难住了。

一下子查资料也没查到,还是写代码吧。一开始想用Python写的。后面写出来了:

import pandas as pd

plan_file = r'D:\Temp\岗位计划表.xlsx'
score_file = r'D:\Temp\成绩表.xlsx'

# 读取Excel文件
df = pd.read_excel(plan_file, header=2)

# 假设“笔试科目”这一列的列名为“笔试科目”,如果实际列名不同请修改
filtered_df = df[df['笔试科目'] == '''公共基础知识+
职业能力倾向测验''']

# 输出筛选结果
print(filtered_df)
# 取B列(第2列)所有非空数据作为查询条件
col_b_name = filtered_df.columns[1]  # 第2列列名
query_list = filtered_df[col_b_name].dropna().astype(str).tolist()

# 读取成绩表,从第2行开始(header=1表示第2行为表头)
score_df = pd.read_excel(score_file, header=1)

# 假设报考岗位那一列叫“报考岗位”,如实际不是请替换
apply_col = '报考岗位'

# 用循环和条件判断筛选
result_rows = []
for idx, row in score_df.iterrows():
    post = str(row[apply_col])
    for q in query_list:
        if q in post:
            result_rows.append(row)
            break  # 匹配到一个就可以了

# 构建新的DataFrame
filtered_score_df = pd.DataFrame(result_rows)
print(filtered_score_df)

# 如果需要保存结果
filtered_score_df.to_excel(r'D:\Temp\成绩表_筛选结果.xlsx', index=False)
# 如需保存筛选后的数据到新文件,可取消注释下一行
# filtered_df.to_excel(r"D:\Temp\岗位计划表_筛选结果.xlsx", index=False)

但这不是今天的重点,我要说的事Excel的M语言
在这里插入图片描述
入口在这里。
在这里插入图片描述
在这里插入图片描述
代码如下:

let
    Gwjh_Source = Excel.Workbook(File.Contents("D:\Temp\岗位计划表.xlsx"), null, true),
    Cj_Source = Excel.Workbook(File.Contents("D:\Temp\成绩表.xlsx"), null, true),

    Gwjh_SelectedSheet = Gwjh_Source{[Item="岗位计划表",Kind="Sheet"]}[Data],
    Cj_SelectedSheet = Cj_Source{[Item="成绩表",Kind="Sheet"]}[Data],

    // 岗位计划表处理
    SkippedRows = Table.Skip(Gwjh_SelectedSheet, 2),
    PromotedHeaders = Table.PromoteHeaders(SkippedRows, [PromoteAllScalars=true]),
    FilteredRows = Table.SelectRows(
        PromotedHeaders, each [笔试科目] = "公共基础知识+#(lf)职业能力倾向测验"
    ),
    GWDM_Name = Table.ColumnNames(FilteredRows){1},
    GWDM_List = Table.Column(FilteredRows, GWDM_Name),

    // 成绩表也要跳过前1行说明(假设字段在第2行,实际以你的Excel为准)
    Cj_SkippedRows = Table.Skip(Cj_SelectedSheet, 1),
    Cj_PromotedHeaders = Table.PromoteHeaders(Cj_SkippedRows, [PromoteAllScalars=true]),

    // 筛选报考岗位在GWDM_List中的行
   
    Cj_FilteredRows = Table.SelectRows(
        Cj_PromotedHeaders,
        each List.AnyTrue(List.Transform(GWDM_List, (x) => Text.Contains(Text.From([报考岗位]), Text.From(x))))
    )
in
    Cj_FilteredRows

在这里插入图片描述
写完选择这个关闭并上载就可以多出来一个Sheet1,就是结果了,还可以在有侧边栏看到。在这里插入图片描述
数据分析结果:
这次花垣事业单位,笔试考公基+职测的有2336人,60分以上的有647人,65分以上的有285人,70分以上的有79人。

三、招聘计划

(一)人才引进计划

本次计划公开引进高层次急需紧缺专业人才20名,其中高层次人才岗位12名(A类岗位),急需紧缺专业人才岗位8名(B类岗位)(详见附件1)

(二)事业单位公开招聘计划

本次计划公开招聘事业单位工作人员105名(C类岗位)(详见附件1)
http://www.huayuan.gov.cn/zwgk_23240/xzfxxgkml_23243/rsxx_23252/zkxx_23254/202505/t20250522_2257743.html

好像也不是很难。

Excel用得不太溜,不知道还有没有更好的方式,可以交流一下。


网站公告

今日签到

点亮在社区的每一天
去签到