当前位置:   article > 正文

Python期末复习题:文件_第7关:二手房数据统计

第7关:二手房数据统计

Python期末复习题:文件

一、二手房数据统计

在这里插入图片描述

附件文件house.csv 中存储一些二手房数据,中文编码为GBK,对文件中的数据进行统计分析。

文件中数据格式如下所示:

市区,小区,户型,朝向,楼层,装修情况,电梯,面积(㎡),价格(万元),年份

海淀,毛纺住宅北小区,3室1厅,东西,14,简装,无电梯,97,630,1997

海淀,知春里,3室1厅,南北,6,其他,无电梯,73,910,1988

要求输出价格由高到低的10个房源。

def read_data(file):
    ls1 = []
    with open(file, 'r', encoding='GBK') as f:
        for ls in f:
            ls2 = ls.strip().split(',')
            ls1.append(ls2)
    return ls1

def sorted_data(ls1, n):
    ls_1 = ls1[1:]
    ls_2 = sorted(ls_1, key=lambda x: float(x[n]), reverse=True)
    data_sorted = [ls1[0]] + ls_2
    data_10 = data_sorted[:10]
    print(data_10)

if __name__ == '__main__':
    file = './house.csv'
    house_data = read_data(file)
    sorted_data(house_data, 8)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

运行的结果是:

[['市区', '小区', '户型', '朝向', '楼层', '装修情况', '电梯', '面积(㎡)', '价格(万元)', '年份'], ['海淀', '紫御府', '4室2厅', '南北', '12', '精装', '
有电梯', '374', '4368', '2008'], ['海淀', '西山壹号院', '43', '东南', '6', '毛坯', '有电梯', '561', '4150', '2011'], ['海淀', '西山壹号院', '33', '西南', '6', '精装', '有电梯', '321', '3850', '2011'], ['海淀', '西山
壹号院', '42', '西南', '6', '毛坯', '有电梯', '347', '3750', '2011'], ['海淀', '西山壹号院', '42', '西南', '6', '毛坯', '有电梯', '347', '3750', '2011'], ['海淀', '鲁艺上河村三区', '42', '南北', '11', '精装', '无
电梯', '263', '3750', '2006'], ['海淀', '万泉新新家园', '42', '南北', '6', '精装', '有电梯', '286', '3600', '2001'], ['海淀', '西山壹号院', '43', '南北', '6', '精装', '无电梯', '435', '3500', '2013'], ['海淀', '龙湖 唐宁one', '42', '南北', '31', '精装', '有电梯', '378', '3500', '2011']]
  • 1
  • 2
  • 3
  • 4
  • 5

二、学生成绩统计

在这里插入图片描述

利用附件文件成绩单.csv(注意:可以用记事本打开查看其内容)中的成绩数据进行成绩统计,根据总分进行升序排序后,输出总分最低分和最高分,按总分升序输出前n名同学和后n名同学成绩信息(n为非负数,当n大于数据行数时,按实际行数输出),输出每题的平均成绩。

示例‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

输入:

2

输出:

最低分0分,最高分30分

[[‘12529’, ‘朱佳年’, ‘0121701100203’, ‘0’, ‘0’, ‘0’, ‘0’, ‘0’, ‘0’, ‘0’], [‘12347’, ‘李世祥’, ‘0121701100208’, ‘0’, ‘0’, ‘0’, ‘0’, ‘0’, ‘0’, ‘0’]]

[[‘11916’, ‘杨旺霖’, ‘0121701100527’, ‘5’, ‘5’, ‘5’, ‘5’, ‘5’, ‘5’, ‘30’], [‘11955’, ‘罗家威’, ‘0121701100622’, ‘5’, ‘5’, ‘5’, ‘5’, ‘5’, ‘5’, ‘30’]]

[3.11, 3.24, 2.97, 3.24, 2.57, 3.24]

def read_data(file):
    with open(file, 'r', encoding='utf-8') as f:
        score = [line.strip().split(',') for line in f]
        score.sort(key = lambda x:int(x[9]))
    return score

def input_score(score, n):
    if n > len(score):
        n = len(score)
    print('最低分{}分,最高分{}分'.format(score[0][9],score[-1][9]))
    print(score[:n])
    print(score[-n:])
    print([round(sum(int(x[i]) for x in score) / len(score),2) for i in range(3,len(score[0])-1)])  

if __name__ == '__main__':
    file = './成绩单.csv'
    n = int(input())
    score_data = read_data(file)
    input_score(score_data, n)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

运行的结果是:

最低分0,最高分30[['12529', '朱佳年', '0121701100203', '0', '0', '0', '0', '0', '0', '0'], ['12347', '李世祥', '0121701100208', '0', '0', '0', '0', '0', '0', '0']]
[['11916', '杨旺霖', '0121701100527', '5', '5', '5', '5', '5', '5', '30'], ['11955', '罗家威', '0121701100622', '5', '5', '5', '5', '5', '5', '30']]
[3.11, 3.24, 2.97, 3.24, 2.57, 3.24]
  • 1
  • 2
  • 3
  • 4
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/192382
推荐阅读
相关标签
  

闽ICP备14008679号