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日

悬赏问题

  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?