m0_56262318 2021-11-29 15:33 采纳率: 100%
浏览 35
已结题

读入数据文档Statistic进行统计分析

读入数据文档Statistic进行统计分析,年龄(5岁一档)进行统计,并打印出每个年龄段的人数及数据平均年龄;分别分析男性、女性数据,身高体重(身高区间为10,体重区间为5)二维分布情况,并将男性、女性分析结果分别写去两个文档中。
这个问题的思路是怎么样的

  • 写回答

2条回答 默认 最新

  • 关注

    重复代码很多,没有用太复杂的函数和方法,希望你能看懂.有疑问继续交流.有帮助请采纳一下,谢谢

    
    import math
    
    age = {}
    nanheight = {}
    nvheight = {}
    nanweight = {}
    nvweight = {}
    with open('Statistic', 'r', encoding='utf8') as f:
        # 忽略表头
        f.readline()
        # 读取第二行有效数据
        a = f.readline().replace('\n', '')
        while a:
    
            # 处理数据转换为元组
            a = eval(a.replace(' ', ','))
            # print(a)
            # 获取年龄段上下线
            up = math.ceil(a[0] / 5) * 5
            low = (math.ceil(a[0] / 5) - 1) * 5
            # 处理年龄数据
            key = f"{low}-{up}"
            if age.get(key):
                age[key][0] += 1
                age[key][1] += a[0]
    
            else:
                age[key] = [1, a[0]]
            # 处理男女升高体重数据 0女1男
    
            if a[1] == 1:
                # 获取身高段上下线
                up = math.ceil(a[2] / 10) * 10
                low = (math.ceil(a[2] / 10) - 1) * 10
                key = f"{low}-{up}"
                if nvheight.get(key):
                    nvheight[key] += 1
                else:
                    nvheight[key] = 1
                # 获取体重段上下线
                up = math.ceil(a[3] / 5) * 5
                low = (math.ceil(a[3] / 5) - 1) * 5
                key = f"{low}-{up}"
                if nanweight.get(key):
                    nanweight[key] += 1
                else:
                    nanweight[key] = 1
            else:
                # 获取身高段上下线
                up = math.ceil(a[2] / 10) * 10
                low = (math.ceil(a[2] / 10) - 1) * 10
                key = f"{low}-{up}"
                if nanheight.get(key):
                    nanheight[key] += 1
                else:
                    nanheight[key] = 1
                # 获取体重段上下线
                up = math.ceil(a[3] / 5) * 5
                low = (math.ceil(a[3] / 5) - 1) * 5
                key = f"{low}-{up}"
                if nvweight.get(key):
                    nvweight[key] += 1
                else:
                    nvweight[key] = 1
    
            # 读取处理数据替换回车
            a = f.readline().replace('\n', '')
            
    for k,v in age.items():
        print(k,v[0],v[1]/v[0])
    
    with open('nan.txt','w+',encoding='utf8') as f:
        f.write("身高\n")
        for k,v in nanheight.items():
            f.write(f"{k}:{v}\n")
        f.write("体重\n")
        for k,v in nanweight.items():
            f.write(f"{k}:{v}\n")
        
    with open('nv.txt','w+',encoding='utf8') as f:
        f.write("身高\n")
        for k,v in nvheight.items():
            f.write(f"{k}:{v}\n")
        f.write("体重\n")
        for k,v in nvweight.items():
            f.write(f"{k}:{v}\n")
    

    img

    img

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月30日
  • 已采纳回答 11月30日
  • 创建了问题 11月29日

悬赏问题

  • ¥15 公交车和无人机协同运输
  • ¥15 stm32代码移植没反应
  • ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效
  • ¥100 连续两帧图像高速减法
  • ¥15 组策略中的计算机配置策略无法下发
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)