Python3处理csv文件的数据方法、代码、实例

1.CSV

就是(Comma-Separated Values)即逗号分隔值,可以用Excel打开查看。

由于是纯文本,任何编辑器也都可打开。

与Excel文件不同,CSV文件中:

1)值没有类型,所有值都是字符串

2)不能指定字体颜色等样式

3)不能指定单元格的宽高,不能合并单元格

4)没有多个工作表


2.在CSV文件中,以,作为分隔符,分隔两个单元格。

像这样a,,c表示单元格a和单元格c之间有个空白的单元格。依此类推。

不是每个逗号都表示单元格之间的分界。

所以即使CSV是纯文本文件,也坚持使用专门的模块进行处理。

Python内置了csv模块。先看看一个简单的例子。


3.从CSV文件中读取数据

import csv
filename = '/home/xgj/xgjpython/seaborn/seaborn-data-master/test.csv' #举例
with open(filename) as f:
 reader = csv.reader(f)
 print(list(reader))

data不能直接打印,list(data)最外层是list,里层的每一行数据都在一个list中,有点像这样

[['total_bill', 'tip', 'sex', 'smoker', 'day', 'time', 'size'], ['16.99', '1.01', 'Female', 'No', 'Sun', 'Dinner', '2'], ['10.34', '1.66', 'Male', 'No', 'Sun', 'Dinner', '3'], ['21.01', '3.5', 'Male', 'No', 'Sun', 'Dinner', '3'], ['23.68', '3.31', 'Male', 'No', 'Sun', 'Dinner', '2'], ['24.59', '3.61', 'Female', 'No', 'Sun', 'Dinner', '4'], ['25.29', '4.71', 'Male', 'No', 'Sun', 'Dinner', '4'], ['8.77', '2', 'Male', 'No', 'Sun', 'Dinner', '2'], ['26.88', '3.12', 'Male', 'No', 'Sun', 'Dinner', '4'], ['15.04', '1.96', 'Male', 'No', 'Sun', 'Dinner', '2'], ['14.78', '3.23', 'Male', 'No', 'Sun', 'Dinner', '2'], ['10.27', '1.71', 'Male', 'No', 'Sun', 'Dinner', '2'], ['35.26', '5', 'Female', 'No', 'Sun', 'Dinner', '4'], ['15.42', '1.57', 'Male', 'No', 'Sun', 'Dinner', '2'], ['18.43', '3', 'Male', 'No', 'Sun', 'Dinner', '4'], ......]

这样数据打印出来,但是就像摊饼一样,不好看。

4.改一下代码

import csv
filename = '/home/xgj/xgjpython/seaborn/seaborn-data-master/test.csv' #举例
with open(filename) as f:
 reader = csv.reader(f)
 for row in reader:
 # 行号从1开始
 print(reader.line_num, row)

结果:

xgj@xgj-PC:~$ /usr/bin/python3.8 /home/xgj/Desktop/333333.py

1 ['total_bill', 'tip', 'sex', 'smoker', 'day', 'time', 'size']

2 ['16.99', '1.01', 'Female', 'No', 'Sun', 'Dinner', '2']

3 ['10.34', '1.66', 'Male', 'No', 'Sun', 'Dinner', '3']

4 ['21.01', '3.5', 'Male', 'No', 'Sun', 'Dinner', '3']

5 ['23.68', '3.31', 'Male', 'No', 'Sun', 'Dinner', '2']

6 ['24.59', '3.61', 'Female', 'No', 'Sun', 'Dinner', '4']

7 ['25.29', '4.71', 'Male', 'No', 'Sun', 'Dinner', '4']

......

5.写数据到csv文件中

有reader可以读取,当然也有writer可以写入。一次写入一行,一次写入多行都可以。

代码:

import csv
#格式:['25.29', '4.71', 'Male', 'No', 'Sun', 'Dinner', '4']
# 使用数字和字符串的数字都可以
datas = [['28.88','5.21' ,'Male','Yes','Sun','Dinner','5']]
with open('/home/xgj/xgjpython/seaborn/seaborn-data-master/test.csv', 'w', newline='') as f:
 writer = csv.writer(f)
 for row in datas:
 writer.writerow(row)

------

注意覆盖原来数据了,所以如果需要,请注意备份或者这是新建一份数据不是追加数据。

------

也可以一次性增加多行数据。

import csv
datas = [['28.88','5.21' ,'Male','Yes','Sun','Dinner','5'],
 ['29.88','5.21' ,'Male','Yes','Sun','Dinner','6'],
 ['30.88','5.21' ,'Male','Yes','Sun','Dinner','7'],
 ['31.88','5.21' ,'Male','Yes','Sun','Dinner','8']
 ]
with open('/home/xgj/xgjpython/seaborn/seaborn-data-master/test.csv', 'w', newline='') as f:
 writer = csv.writer(f)
 for row in datas:
 #writer.writerow(row) 增加一次数据的 
 writer.writerows(datas) #增加多行数据,数据重复4次

结果,图csv1



图csv2


如果不指定newline='',则每写入一行将有一空行被写入。


6.DictReader和DictWriter对象

使用DictReader可以像操作字典那样获取数据,把表的第一行(一般是标头)作为key。

可访问每一行中那个某个key对应的数据。

假设数据是图csv3



代码如下:

import csv
filename = '/home/xgj/xgjpython/seaborn/seaborn-data-master/test.csv'
with open(filename) as f:
 reader = csv.DictReader(f)
 for row in reader:
 # total_bill是表第一行的某个数据,作为key
 max_temp = row['total_bill']
 print(max_temp)

结果是图csv4



7.使用DictWriter类,可以写入字典形式的数据,同样键也是标头(表格第一行)。

代码如下:

import csv
headers = ['name', 'age']
datas = [{'name':'Bob', 'age':23},
 {'name':'Jerry', 'age':44},
 {'name':'Tom', 'age':15}
 ]
with open('/home/xgj/xgjpython/seaborn/seaborn-data-master/example.csv', 'w', newline='') as f:
 # 标头在这里传入,作为第一行数据
 writer = csv.DictWriter(f, headers)
 writer.writeheader()
 for row in datas:
 writer.writerow(row)

结果图csv5



# 还可以写入多行

#writer.writerows(datas)

相关文章

使用python把csv汇总成excel(python怎么将csv文件中的列存入列表)

最近领导安排让我每周定时把grafana导出的csv文件进行统计汇总工作,需要处理的csv文件还是蛮多的,况且还要每周重复汇总处理。干脆写个脚本,每周执行一遍脚本,既方便还不会出错。一、需求分析1....

python爬虫25 | 爬取的数据怎么保存?CSV了解一下

大家好我是小帅b是一个练习时长两年半的练习生喜欢唱!跳!rap!篮球!敲代码!装逼!不好意思我又走错片场了接下来的几篇文章小帅b将告诉你如何将你爬取到的数据保存下来有文本文件、redis、数据库(My...

将MySQL查询结果输出为CSV格式的方法

技术背景在数据库管理和数据分析中,我们常常需要将MySQL查询结果以CSV格式输出,方便在其他工具(如Excel、Python数据分析库)中进行进一步处理。然而,由于CSV格式有其特定的规范,如字段分...

Django 如何使用视图动态输出 CSV 以及 PDF

Django 如何使用视图动态输出 CSV 以及 PDF这一篇我们需要用到 python 的 csv 和 reportLab 库,通过django视图来定义输出我们需要的 csv 或者 pdf 文件。...

Python版的迷你程序——json文件转换为csv

浅话C语言是过去几十年软件和硬件两个阵营之间,签署的最坚实的契约。硬件为C语言的语义提供了最能发挥其性能的基础构件,而软件虽然搞了很多的圆环套圆环般的层次,但最终都以C语言作为最后的沉淀收尾。----...

Python CSV文件的读写和处理(csv python 读取)

一、介绍CSV文件的概念和结构CSV(Comma-Separated Values,逗号分隔值)是一种常见的文本文件格式,用于存储表格数据。CSV 文件以纯文本形式存储数据,使用逗号作为字段之间的分隔...