python中级----处理 CSV 数据

 

| 1 CSV简介

| 1.1 什么是CSV?

CSV(Comma Separated Values)是一种简单的文件格式,用于存储表格数据,例如电子表格或数据库。CSV 文件以纯文本形式存储表格数据(数字和文本)。文件的每一行都是一个数据记录。每条记录由一个或多个字段组成,以逗号分隔。使用逗号作为字段分隔符是此文件格式名称的来源。对于在 python 中工作的 CSV 文件,有一个名为csv的内置模块。(当然,你同样可以使用pandas中的csv操作方法,您可以参考《数据科学---使用Pandas进行操作数据》)要使用csv模块,和其他模块一样,需要先进行导入


import csv

假设我们有这样一个csv文件(该csv文件的显示借助了VS Code里面的插件):


transaction_id,product_id,price

1000,1,5

1001,2,10

1002,3,15

| 2 读取CSV文件

| 2.1 使用csv.reader()

首先,在 'r' 模式下使用 open() 方法打开 CSV 文件(指定打开文件时的读取模式)如果你对文件的操作还不熟悉,可以参考《python基础----文件操作》,返回文件对象,然后使用 reader() 读取CSV 模块的方法,它返回遍历指定 CSV 文档中的行的读取器对象。

Tips : 推荐使用上下文管理器with,因为它简化了异常处理并自动关闭文件。


import csv

with open("data.csv") as file:
    reader = csv.reader(file)
    print(reader)
# <_csv.reader object at 0x0000028874CD8880>

当然,你也可以对reader对象进行遍历:

with open("data.csv") as file:
    reader = csv.reader(file)
    for lines in reader:
        print(lines)
Result:

在上面的程序中, reader() 方法用于读取将数据映射到列表中的 data.csv 文件。

| 2.2 使用csv.DictReader()

它类似于前面的方法,首先使用 open() 方法打开 CSV 文件,然后使用 csv 模块的 DictReader 类读取它,它的工作方式类似于普通阅读器,但映射信息为CSV 文件中的字典。该文件的第一行由字典键组成。

with open("data.csv") as file:
    reader = csv.DictReader(file)
    for lines in reader:
        print(lines)
 

Result:

 

 

| 3 写入CSV文件

| 3.1 使用csv.writer()

csv.writer类用于将数据插入CSV文件。此类返回一个编写器对象,该对象负责将用户的数据转换为分隔字符串。

csv.writer提供了两种方法,分别是writerow()和writerows().

Example:


rows = [[1000, 1, 5],
        [1001, 2, 10],
        [1002, 3, 15]]

with open("../data.csv", "w") as file:
    writer = csv.writer(file)
    writer.writerow(["transaction_id", "product_id", "price"])
    writer.writerow([1000, 1, 5])
    writer.writerow([1001, 2, 10])
    writer.writerow([1002, 3, 15])
    writer.writerows(rows)
 

| 3.2 使用csv.DictWriter()

此类返回一个将字典映射到输出行的写入器对象。

csv.DictWriter提供了两种方法,分别是writeheader()和writerows().

writeheader() : 只使用预先指定的字段名写入csv文件的第一行。

writerows() : 写入所有行,但是在每一行中只写入值,不写入键。

Example:


# importing the csv module 
import csv 
    
# my data rows as dictionary objects 
mydict =[{'branch': 'COE', 'cgpa': '9.0', 'name': 'Nikhil', 'year': '2'}, 
         {'branch': 'COE', 'cgpa': '9.1', 'name': 'Sanchit', 'year': '2'}, 
         {'branch': 'IT', 'cgpa': '9.3', 'name': 'Aditya', 'year': '2'}, 
         {'branch': 'SE', 'cgpa': '9.5', 'name': 'Sagar', 'year': '1'}, 
         {'branch': 'MCE', 'cgpa': '7.8', 'name': 'Prateek', 'year': '3'}, 
         {'branch': 'EP', 'cgpa': '9.1', 'name': 'Sahil', 'year': '2'}] 
    
# field names 
fields = ['name', 'branch', 'year', 'cgpa'] 
    
# name of csv file 
filename = "university_records.csv"
    
# writing to csv file 
with open(filename, 'w') as csvfile: 
    # creating a csv dict writer object 
    writer = csv.DictWriter(csvfile, fieldnames = fields) 
        
    # writing headers (field names) 
    writer.writeheader() 
        
    # writing data rows 
    writer.writerows(mydict)

 4 写在最后

本节给大家介绍了Python中处理CSV数据。很重要的内容,但是初学者很容易过分钻研,实则没什么必要,CSV在很多地方有很重要的应用,如果你的项目中用到了它,别忘了python中存在csv这个很方便的工具(当然你也可以使用pandas)。勤能补拙是良训,希望大家还是动手做一做,有问题可以私信我,欢迎交流和提出您的宝贵意见。

勘误:

由于我自己也不是资深编程高手,在创作此内容时尽管已经力求精准,查阅了诸多资料,还是难保有所疏漏,如果各位发现有误可以公众号内留言,欢迎指正。

你要偷偷学Python,然后惊艳所有人。

-END-

感谢大家的关注

   你关心的,都在这里

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值