增加学业处理,并完成处理

main
wangchunlin 3 years ago
parent 9be2bc5aae
commit 4dc4d1d311

@ -0,0 +1,60 @@
import pandas as pd
# 定义文件列表和学期数量
files = ["2020_2021_1.xlsx", "2020_2021_2.xlsx", "2021_2022_1.xlsx", "2021_2022_2.xlsx"]
semester_count = len(files)
# 初始化空字典用于存储学生信息和学期数量
student_data = {}
# 遍历每个文件
for file in files:
# 读取每个文件的简洁版sheet
df = pd.read_excel(file, sheet_name="简洁版")
# 合并数据到学生字典中
for _, row in df.iterrows():
student_id = row["学号"]
student_name = row["姓名"]
# 如果学号已存在于字典中
if student_id in student_data:
# 检查是否有错误姓名
if student_name != student_data[student_id]["姓名"]:
student_data[student_id]["是否错误"] = 1
student_data[student_id]["姓名"] += f", {student_name}"
# 更新不合格课程门数和不合格课程门数组成
student_data[student_id]["不合格课程门数"] += row["不合格课程门数"]
student_data[student_id]["不合格课程门数组成"].append(row["不合格课程门数"])
# 否则,添加学号及初始信息
else:
student_data[student_id] = {
"学号": student_id,
"姓名": student_name,
"不合格课程门数": row["不合格课程门数"],
"不合格课程门数组成": [row["不合格课程门数"]],
"是否错误": 0,
"是否受过退学预警": 0,
"受过退学预警次数": 0
}
# 统计每个学生在所有文件中的退学预警次数
for student_id, data in student_data.items():
warning_count = 0
for file in files:
df = pd.read_excel(file, sheet_name="简洁版", usecols=["学号", "是否受过退学预警"])
if student_id in df["学号"].values:
if "" in df.loc[df["学号"] == student_id, "是否受过退学预警"].values or "曾受过退学预警" in df.loc[df["学号"] == student_id, "是否受过退学预警"].values:
warning_count += 1
student_data[student_id]["受过退学预警次数"] = warning_count
if warning_count > 0:
student_data[student_id]["是否受过退学预警"] = 1
# 将不合格课程门数组成转为逗号分隔的字符串
for data in student_data.values():
data["不合格课程门数组成"] = ",".join(str(num) for num in data["不合格课程门数组成"])
# 创建DataFrame并保存结果到新的Excel文件
output_df = pd.DataFrame(student_data.values())
output_df = output_df[["学号", "姓名", "不合格课程门数", "不合格课程门数组成", "是否错误", "是否受过退学预警", "受过退学预警次数"]]
output_df.to_excel("output_Study.xlsx", index=False)

Binary file not shown.

@ -0,0 +1,31 @@
2023年6月12日
完成label转换得到26111项数据标签
2023年6月14日
学习对于标签缺失,和数据不完整时的处理方法
2023年6月25日
在师兄的指导下,简化处理思路;对于部分特征数据缺失的情况
删除缺失值将包含缺失值的样本从数据集中删除。这种方法适用于缺失值较少且对整体数据影响较小的情况。可以使用pandas库中的dropna()函数来删除含有缺失值的行。
填充缺失值对缺失值进行填充使其具有某种特定的值。常用的填充方法包括用均值、中位数或众数填充数值型特征用最常见的类别填充分类特征。可以使用pandas库中的fillna()函数进行缺失值填充。
插值法通过已知数据的插值来估计缺失值。常用的插值方法包括线性插值、多项式插值、样条插值等。可以使用pandas库中的interpolate()函数进行插值操作。
特殊值标记将缺失值视为一种特殊的取值为其分配一个独特的标记。这样模型可以学习到缺失值可能对预测有一定的影响。可以使用pandas库中的fillna()函数将缺失值填充为特殊值。
可以直接删掉
2023年7月2日
完成请销假统计,去除错误数据,有一个错误
姓名重合:莫琰,莫䶮
2023年7月3日
完成学业预警统计统计,去除错误数据
姓名重合:扎西尼玛, 扎西尼马
2023年7月8日
完成特征值缩放和选择工作选择17个特征包括幺爸给的加权值相关性不管没想到好方法完成数据清洗和缺失值处理前面已经完成
2023年7月12日
最后筛选出需要的特征
Loading…
Cancel
Save