首页 » Python » 一个读取csv计算新数据后生成结果csv的案例

一个读取csv计算新数据后生成结果csv的案例

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import csv
file = "BeijingPM20100101_20151231.csv"
with open(file) as f :
    reader = csv.reader(f)
    data_list = list(reader)
    print(data_list[0:11])
'''
No:数据编号
year:数据采集的年份
month:数据采集的月份
day:数据采集的日期
hour: 数据采集的时间点
season:数据采集的季节
PM_Dongsi、PM_Dongsihuan、PM_Nongzhanguan、PM_US Post:不同区域采集的PM2.5数据,没有值时用NA标识
DEWP:露点温度
HUMI:湿度
PRES:压力
TEMP:气温
cbwd:组合风向
Iws:累积风速
precipitation:每小时降水量(毫米)
Iprec:累积降水量(毫米)
'''
data_2015 = []
i = 0
for list2015 in data_list:
    if list2015[1] == '2015':
        data_2015.append(list2015)
        i += 1
print(i)
data_new = [
    ['No', 'year', 'month', 'day', 'hour', 'season', 'PM_Dongsi', 'PM_Dongsihuan', 'PM_Nongzhanguan', 'PM_US Post',
     'PM_Average']]
for item in data_2015:
    new_item = item[:10]  # 获取每行前10列内容放入new_item
    pm_slice = new_item[-4:]  # 将pm相关的4列内容取出放到pm_slice中
    no_na_num = 0
    pm_sum = 0
    for i in range(4):
        if pm_slice[i] != 'NA':
            no_na_num += 1
            pm_sum += int(pm_slice[i])  # 将pm_slice[i]累加到变量pm_sum中,注意pm_slice[i]是字符串类型,这里需要做类型转换
    if no_na_num == 0:
        new_item.append('NA')  # 如果4个元素都是0,结果列内容设置为'NA'
    else:
        pm_average = pm_sum/no_na_num  # 计算四个PM列的均值,存入变量pm_average变量中
        new_item.append(pm_average)  # 将新生成的pm_average值添加到new_item末尾
    data_new.append(new_item)  # 将new_item这行添加到data_new末尾

print(data_new[:2])  # 打印data_new的前3行
with open('jieguo.csv', 'w', newline='') as f:
    xieru = csv.writer(f)
    xieru.writerows(data_new)

原文链接:一个读取csv计算新数据后生成结果csv的案例,转载请注明来源!

0