python csv文件的读、写、以及合并

python中csv文件的读、写、以及合并

写csv

# 导入CSV安装包
import csv

# 1. 创建文件对象
f = open('xxx.csv','w',encoding='utf-8')

# 2. 基于文件对象构建 csv写入对象
csv_writer = csv.writer(f)

# 3. 构建列表头
csv_writer.writerow(["姓名","年龄","性别"])

# 4. 写入csv文件内容
csv_writer.writerow(["l",'18','男'])
csv_writer.writerow(["c",'20','男'])
csv_writer.writerow(["w",'22','女'])

# 5. 关闭文件
f.close()
  • 方法2:利用pandas包
  1. 利用字典形式,一列一列写入,来自python写入csv文件的几种方法总结
import pandas as pd

#任意的多组列表
a = [1,2,3]
b = [4,5,6]    

#字典中的key值即为csv中列名
dataframe = pd.DataFrame({'a_name':a,'b_name':b})

#将DataFrame存储为csv,index表示是否显示行名,default=True
dataframe.to_csv("test.csv",index=False,sep=',')

  1. 整体写入,强推
    上面这种用key,value的写入方式,不适合大批量的数据,比如说,你有几十几百列数据要写的…所以,一般我采用的比较多的是整体写入,很方便好用:
data_frame = pd.DataFrame(columns=keys,data=your_data)
data_frame.to_csv('xxx.csv'),sep='\t', index=False)   

当columns=['sex,‘age’],data=[[1,34],[0,53],[1,26]]时,csv是这样的:

       sex    age
0       1       34
1       0       53
2       1       26

当columns=['name,‘test_label’,‘test_proba’],data=[[‘张三’ ,[1 1 0 1 1 0 1],[0.8 0.9 0.5 0.6 0.8 0.6 0.9],[‘李四’ ,[1 0 1 1 0 1 1],[0.7 0.9 0.8 0.6 0.2 1. 0.5]]],csv文件是这样的:

       name          test_label	             test_prob	
0      张三         [1 1 0 1 1 0 1]   	[0.8 0.9 0.5 0.6 0.8 0.6 0.9]	
1      李四  	   [1 0 1 1 0 1 1]   	[0.7 0.9 0.8 0.6 0.2 1.  0.5]	

columns是文件表头,赋值的keys是一个列表,如[‘name’,‘sex’,‘age’…],表示每一列的索引,可以自己定义,如果不定义的话,写入时会自动分配[0,1,2…]作为索引。

data就是你要写入的数据,可以是numpy数组,也可以是列表,但是要注意,列表或数组的列数要和columns的数量统一,毕竟一个index要对应一个value。

sep是分割符,自己设定,可以选择’,’,’\t’等。

P.S. 这里插一句,如果想写成excel文件,也很简单,只要将to_csv改成to_excel即可:

info.to_excel('xxx.xlsx')

读csv

import pandas as pd

# 读取csv文件,选择分割符,要和csv文件里所使用的分割符一致
csv_data = pd.read_csv('xxx.csv', sep='\t')
# 读取csv文件的index,方便后面提取value
base_keys =[key for key in csv_data ] 
csv_values = csv_data [base_keys[1:4]].values

这里csv_data 是一个dadaframe,要获取文件中的value的话需要用.values来获取。如果要用全部的值,直接csv_data .values即可,如果只要其中某些值,那我们可以给定keys或者给定keys所在的位置,然后再用.values进行读取。

csv文件合并

  • 方法1,利用csv包

有时候需要将两个csv文件进行合并,其实合并的操作也是蛮简单的,不过有个前提:要合并的两个文件的列数得是一样的~不然读取的时候会报错。

比如现在有a.csv和b.csv两个文件,直接读取其中一个文件,然后利用mode=‘a+’,追加写入另一个文件即可:

b_data = pd.read_csv('b.csv', sep='\t')
# 选择header=False表示不保留列名,index=False表示不保留行索引
b_data .to_csv('a.csv', mode='a+', index=False,header=False,sep="\t")

想要更换csv中的某些值,或新增行、列,可以参考Pandas:DataFrame数据的更改、插入新增的列和行

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值