比如说在/home/zhang目录下很多txt文件,文件中格式都是这样几个字段。
性别,年龄,籍贯,总分,语文,数学
性别10为男,0为女
年龄,总分,语文,数学的值都是数字
籍贯的格式为,湖南省长沙市,北京市朝阳区,类似这种
比如统计几个指标。
语文成绩大于等于60的学生总数,男生人数,女生人数
湖南省湘潭市最高分女生学生姓名,
湖南省株洲市学生平均分。
比如说在/home/zhang目录下很多txt文件,文件中格式都是这样几个字段。
性别,年龄,籍贯,总分,语文,数学
性别10为男,0为女
年龄,总分,语文,数学的值都是数字
籍贯的格式为,湖南省长沙市,北京市朝阳区,类似这种
比如统计几个指标。
语文成绩大于等于60的学生总数,男生人数,女生人数
湖南省湘潭市最高分女生学生姓名,
湖南省株洲市学生平均分。
import pandas as pd
import os
# 获取指定目录下所有txt文件的列表
def get_txt_files(directory):
return [os.path.join(directory, f) for f in os.listdir(directory) if f.endswith('.txt')]
# 读取所有txt文件并合并到一个DataFrame
def read_txt_files(file_list):
dfs = [pd.read_csv(file, sep=',', header=None, names=['性别', '年龄', '籍贯', '总分', '语文', '数学']) for file in file_list]
return pd.concat(dfs, ignore_index=True)
# 统计指标函数
def calculate_statistics(df):
# 语文成绩大于等于60的学生总数
total_students_above_60 = len(df[df['语文'] >= 60])
# 男生和女生人数
male_count = len(df[df['性别'] == 10])
female_count = len(df[df['性别'] == 0])
# 湖南省湘潭市最高分女生学生姓名
max_score_female_xiangtan = df[(df['性别'] == 0) & (df['籍贯'] == '湖南省湘潭市')].nlargest(1, '总分')['姓名']
# 假设学生姓名字段存在,如果不存在则需调整逻辑或提前处理数据
# 湖南省株洲市学生平均分
average_score_zhuzhou = df[df['籍贯'] == '湖南省株洲市']['总分'].mean()
return total_students_above_60, male_count, female_count, max_score_female_xiangtan, average_score_zhuzhou
# 主程序
if __name__ == "__main__":
directory = "/home/zhang"
txt_files = get_txt_files(directory)
combined_df = read_txt_files(txt_files)
# 确保籍贯列是字符串格式,以便进行文本匹配
combined_df['籍贯'] = combined_df['籍贯'].astype(str)
total_students_above_60, male_count, female_count, max_score_female_xiangtan, average_score_zhuzhou = calculate_statistics(combined_df)
print(f"语文成绩大于等于60的学生总数: {total_students_above_60}")
print(f"男生人数: {male_count}")
print(f"女生人数: {female_count}")
if not max_score_female_xiangtan.empty:
print(f"湖南省湘潭市最高分女生学生姓名: {max_score_female_xiangtan.iloc[0]}")
else:
print("湖南省湘潭市没有符合条件的女生")
print(f"湖南省株洲市学生平均分: {average_score_zhuzhou:.2f}")