python 实现读取csv数据,分类求和 再写进 csv

以下是实现读取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技术站

(1)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • Python 合并拼接字符串的方法

    下面是关于Python合并拼接字符串的方法的完整攻略。 标准字符串拼接 Python中可以使用 + 运算符将两个字符串进行拼接,例如: str1 = "hello" str2 = "world" result = str1 + " " + str2 print(result) # 输出 "…

    python 2023年5月14日
    00
  • Python通过Manager方式实现多个无关联进程共享数据的实现

    Python通过Manager方式实现多个无关联进程共享数据的实现方法如下: 准备工作 首先需要导入multiprocessing模块,从中获取Manager类。 import multiprocessing # 获取Manager类 manager = multiprocessing.Manager() 使用Manager创建共享变量 在获取了Manage…

    python 2023年5月13日
    00
  • pip报错“OSError: [Errno 13] Permission denied: ‘/usr/local/lib/python3.6/dist-packages/pip/_internal/utils/subprocess.py’”怎么处理?

    当使用pip安装Python包时,可能会遇到“OSError: [Errno 13] Permission denied”错误。这个错误通常是由以下原因之一引起的: 权限不足:如果您没有足够的权限来安装Python包,则会出现此错误。在这种情况下,需要使用管理员权限运行pip。 文件或目录权限:如果您尝试安装Python包到没有写入权限的目录,则会出现此错误…

    python 2023年5月4日
    00
  • pip报错“OSError: [Errno 2] No such file or directory: ‘pip’”怎么处理?

    当使用 pip 安装 Python 包时,可能会遇到 “OSError: [Errno 2] No such file or directory: ‘pip'” 错误。这个错误通常是由于 pip 没有正确安装或 pip 的路径没有添加到系统路径中导致的。以下是详细讲解 pip 报错 “OSError: [Errno 2] No such file or di…

    python 2023年5月4日
    00
  • python基础–除法(/,//,%)的应用说明

    下面是Python基础中除法(/,//,%)的应用说明的完整攻略: 一、除法(/) 除法(/)是Python中的一种基本运算,在数学中,除法是指将被除数除以除数,得到商和余数的运算。在Python中,除法的结果是一个浮点数,无论是两个整数相除,还是两个浮点数相除,都会返回一个浮点数结果。 示例说明: a = 10 b = 3 print(a / b) 输出结…

    python 2023年5月30日
    00
  • python如何提升爬虫效率

    下面是提升Python爬虫效率的攻略: 1. 使用多线程或多进程 使用多线程或多进程可以提高爬虫效率,因为爬虫程序往往是I/O密集型的任务,而多线程或多进程能够利用CPU的多核心进行并发处理。 1.1 多线程 Python的threading模块可以让我们方便地创建和控制线程。以下是一个简单的示例代码,向多个URL发送HTTP请求,使用多线程进行并发处理: …

    python 2023年5月14日
    00
  • 在 Python 中,如何在另一个 py 文件的 [if __name__ == ‘__main__’] 中调用子程序?

    【问题标题】:In Python, how to invoke subroutine inside [if __name__ == ‘__main__’] of another py file?在 Python 中,如何在另一个 py 文件的 [if __name__ == ‘__main__’] 中调用子程序? 【发布时间】:2023-04-01 11:2…

    Python开发 2023年4月8日
    00
  • python中wheel的用法整理

    Python中wheel的用法整理 概述 Python的wheel是一个二进制分发格式,它允许您将软件包编译为本机代码,并且安装起来比源代码更快。Wheel还提供了一种便捷的方式来构建Python软件包,即使您的软件包中包含C扩展也能有很好的表现。 在本篇文章中,我们将讲解一些使用wheel的常见场景和方法,以及如何使用pip安装和管理wheel包。这些应该…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部