zhangjian5255 2024-07-05 14:46 采纳率: 42.9%
浏览 15

python做数据统计

比如说在/home/zhang目录下很多txt文件,文件中格式都是这样几个字段。

性别,年龄,籍贯,总分,语文,数学

性别10为男,0为女
年龄,总分,语文,数学的值都是数字
籍贯的格式为,湖南省长沙市,北京市朝阳区,类似这种

比如统计几个指标。
语文成绩大于等于60的学生总数,男生人数,女生人数

湖南省湘潭市最高分女生学生姓名,

湖南省株洲市学生平均分。

  • 写回答

1条回答 默认 最新

  • 图说交通 2024-07-05 15:12
    关注
    
    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}")
    
    评论

报告相同问题?

问题事件

  • 创建了问题 7月5日

悬赏问题

  • ¥15 短剧的sdk在哪里接入
  • ¥15 求:可不可以提供一些 在国内可以用,低代码不要太难 在电脑上可以下载的 制作app的软件
  • ¥60 找人回答kibana8.14.3二次集成开发,自定义插件ui导航栏如何设置
  • ¥15 fluke高精度万用表8845A型号测交流电压一直跳动,且去掉输入后显示不归零
  • ¥15 不同模型怎么用同一个shader
  • ¥15 安卓启动没有ais proxy与v4l2的log打印
  • ¥15 go怎么读取mdb文件里面的数据
  • ¥60 Matlab联合CRUISE仿真编译dll文件报错
  • ¥15 脱敏项目合作,ner需求合作
  • ¥15 脱敏项目合作,ner需求合作