以下是实现读取csv数据、分类求和并将结果写回csv文件中的完整攻略:
1. 读取csv数据
Python中可以使用标准库中的csv模块来处理csv文件。该模块提供了一个csv.reader函数,可以用来读取csv文件中的数据。
示例1:假设我们有一个csv文件,名为example.csv,它包含以下数据:
name,age,gender,score
Tom,18,M,95
Jerry,19,F,89
Bob,17,M,92
Amy,20,F,86
使用下面的代码可以读取该csv文件中的数据:
import csv
with open('example.csv', 'r') as f:
reader = csv.reader(f)
# 排除标题行
headers = next(reader)
data = []
for row in reader:
data.append(row)
print(data)
运行上述代码后,输出的结果为:
[['Tom', '18', 'M', '95'], ['Jerry', '19', 'F', '89'], ['Bob', '17', 'M', '92'], ['Amy', '20', 'F', '86']]
其中,读取文件时,需要注意文件名和路径。
2. 分类求和
示例2:我们假设有一个csv文件,名为sales.csv,它包含以下数据:
id,date,region,amount
1,2022-01-01,East,100
2,2022-01-02,East,120
3,2022-01-03,West,200
4,2022-01-04,South,150
5,2022-01-05,North,180
6,2022-01-06,East,80
现在我们想要按照region列进行分类,并计算每个地区的销售总额。使用下面的代码可以实现:
import csv
from collections import defaultdict
with open('sales.csv', 'r') as f:
reader = csv.reader(f)
headers = next(reader)
data = defaultdict(int)
for row in reader:
data[row[2]] += int(row[3])
print(data)
上述代码中,我们首先调用了csv.reader()函数读取 sales.csv 文件中的数据,并排除了标题行。然后使用 defaultdict(int) 定义了一个按照分类统计数量的字典 data。接着对每一行数据进行循环,并实现了通过 data[row[2]] += int(row[3]) 实现分类求和的功能。
运行上述代码后,输出的结果为:
defaultdict(<class 'int'>, {'East': 300, 'West': 200, 'South': 150, 'North': 180})
其中,每个地区的销售总额被存储在了字典 data 中。
3. 写入csv文件
Python中同样可以使用csv模块来写入csv文件。我们可以使用csv.writer()函数将数据写入csv文件。首先需要打开一个文件,并传入csv.writer()函数。csv.writer()函数的输出参数应该是同一行的各个列数据组成的列表。
示例3:我们继续拿上面的示例2,将上述字典 data 写入另一个csv文件中。实现该功能的代码如下:
import csv
from collections import defaultdict
with open('sales.csv', 'r') as f:
reader = csv.reader(f)
headers = next(reader)
data = defaultdict(int)
for row in reader:
data[row[2]] += int(row[3])
with open('result.csv', 'w', newline='') as f:
writer = csv.writer(f)
writer.writerow(['region', 'total_sales'])
for region, sales in data.items():
writer.writerow([region, sales])
上述代码中,我们首先读取了之前的sales.csv文件,使用 defaultdict() 实现了分类求和的功能,并将结果存放在 data 中。接着,用open()函数打开一个新的文件,该文件将被命名为 result.csv,并传递 'w' 以写入模式打开文件;因为我们打算写入新的行,所以设置 newline='',以写入 platform-native line endings。此后,我们将 writer 对象传递到循环中,从 data 取出键值对,并使用 csv.writer() 将每一行写入result.csv。
然后,在运行上述代码后,result.csv文件中的内容将会是:
region,total_sales
East,300
West,200
South,150
North,180
以上就是实现读取csv数据、分类求和并将结果写回csv文件的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python 实现读取csv数据,分类求和 再写进 csv - Python技术站