北京天气数据csv处理

import csv

file = "data/BeijingPM20100101_20151231.csv"

with open(file) as f:
    # TODO
    # 完成如下两行代码,使用csv.reader将文件读入到二维列表data_list中
    reader =csv.reader(f)
    data_list = list(reader)

    # TODO
    # 打印data_list的前10行
    for i in range(10):
        print(data_list[i])

数据计算

# TODO
# 将data_list中所有2015年的数据抽取出来,存储到列表data_2015中
data_2015=[]
for lines in data_list:
    if lines[1]=='2015':
        data_2015.append(lines)
        
# TODO
# 打印data_2015共有多少行组成
print(len(data_2015))

数据计算

# TODO
# 将data_list中所有2015年的数据抽取出来,存储到列表data_2015中
data_2015=[]
for lines in data_list:
    if lines[1]=='2015':
        data_2015.append(lines)
        
# TODO
# 打印data_2015共有多少行组成
print(len(data_2015))

在抽取的2015年数据中,我们希望通过每天的数据中的PM_Dongsi、PM_Dongsihuan、PM_Nongzhanguan、PM_US Post四个数字,计算出PM的均值。

如果某个数据为NA,则计算时不需考虑该元素,如果当天四个元素都为NA,则当天的计算结果也是NA。

最终生成一个新的列表,列表每行内容为:‘No’, ‘year’, ‘month’, ‘day’, ‘hour’, ‘season’, ‘PM_Dongsi’, ‘PM_Dongsihuan’, ‘PM_Nongzhanguan’, ‘PM_US Post’, ‘PM_Avarage’。

data_new = [['No', 'year', 'month', 'day', 'hour', 'season', 'PM_Dongsi', 'PM_Dongsihuan', 'PM_Nongzhanguan', 'PM_US Post', 'PM_Avarage']]
for item in data_2015:
    # 获取每行前10列内容放入new_item
    new_item = item[:10]
    
    # TODO
    # 将pm相关的4列内容取出放到pm_slice中
    pm_slice = new_item[6:10]
    
    no_na_num = 0
    pm_sum = 0
    for i in range(4):
        if pm_slice[i] != 'NA':
            no_na_num += 1
            # TODO
            # 将pm_slice[i]累加到变量pm_sum中,注意pm_slice[i]是字符串类型,这里需要做类型转换
            pm_sum += int(pm_slice[i])
    if no_na_num == 0:
        # 如果4个元素都是0,结果列内容设置为'NA'
        new_item.append('NA')
    else:
        # TODO
        # 计算四个PM列的均值,存入变量pm_avarage变量中
        pm_avarage = pm_sum/4
        # TODO
        # 将新生成的pm_avarage值添加到new_item末尾
        new_item.append(pm_avarage)
        
    
    # 将new_item这行添加到data_new末尾
    data_new.append(new_item)
    
# TODO
# 打印data_new的前3行
for i in range(3):
    print(data_new[i])

结果写回
将计算的结果data_new,写回到csv文件中。

with open('./data/BeijingPM_result.csv', 'w', newline='') as f:
    # TODO
    # 将data_new内容写出到文件./data/BeijingPM_result.csv
    writer =csv.writer(f)
    writer.writerows(data_new)
   

猜你喜欢

转载自blog.csdn.net/lildn/article/details/114489927