问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

python处理csv数据怎么更有效率

发布网友 发布时间:2022-04-18 08:21

我来回答

1个回答

热心网友 时间:2022-04-18 09:51

因为python处理json比较方便,所以首先测试一下csv和json哪个快。
首先生成测试数据
# coding: utf-8
import json
import csv
import random
from string import letters

low = 1e2 # 3-10位数字
hi = 1e11
cnt = 100000 # 10万条

total = {}
for _ in range(cnt):
total[str(random.randrange(low, hi))] = "".join(random.sample(letters, 10))

with open("data.json", "w") as f:
f.write(json.mps(total, ensure_ascii=False))

with open("data.csv", "w") as f:
writer = csv.writer(f, delimiter=',')
writer.writerows(total.items())

然后对比由这两者生成dict的速度
# coding: utf-8
import json
import csv
from time import clock

t0 = clock()

total1 = json.load(open("data.json"))

t1 = clock()

total2 = {}
with open("data.csv") as f:
reader = csv.reader(f)
for k, v in reader:
total2[k] = v
t2 = clock()

print "json: %fs" % (t1 - t0)
print "csv: %fs" % (t2 - t1)

输出是:
json: 0.109953s
csv: 0.066411s

果然csv还是蛮快的,那我们就用它吧。
接下来解决更新问题。我不知道题主对于重复项需要怎么处理,所以都写了。
# 先生成数据,同之前的做法。
low = 1e2
hi = 1e11
cnt = 100000
new = {}
for _ in range(cnt):
new[str(random.randrange(low, hi))] = "".join(random.sample(letters, 10))

# 找出重复项,因为是随机生成的数据,所以恰好没有重复项
plicate = {k:v for k, v in new.items() if k in total}
# 输出重复项
print(json.mps(plicate, ensure_ascii=False, indent=4))

# 1. 如果重复项是用new覆盖total
total.update(new)
# 2. 如果是保留total
new.update(total)
total = new
# 然后再写回csv文件中
with open("data.csv", "w") as f:
writer = csv.writer(f, delimiter=',')
writer.writerows(total.items())

至于运行时间,如果不算上输出重复项的时间,不到0.5s。算上的话大概也就0.8s。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
柿的同音字 趣填“shi”的同音字。 各( )各样 不甘( 一个人穷游韩国二万元人民币够吗 solidworks 装配体如何备份,使原装配体发生更改时,备份文件不会重建... ...塞翁失马焉知非福的故事---.八仙过海的故事- ...转身就忘前面唱妖兽……(我忘了,,)是周杰伦的什么歌?求歌名_百度知... 求《哈里波特 与火焰杯 》电影里面的 一段 配乐 初中学校的篮球比赛要注意哪些?自己回答别复制! 什么是 开放申赎 开放申赎什么意思 联想笔记本PF1ZSAX6桌面图标怎么改动 胆汁反流性胃炎怎么引起的 胆汁反流性胃炎是怎么引起的? 我想问下胆汁反流性胃炎一年了没好,是什么导致的?hp200多!没做过任何手术 胆汁反流性胃炎是胆囊的问题还是肝脏的问题 车辆年检保险单不见了 有人用过python 导出csv吗,问几个问题,详情见补充 上一年的交强险保单不见了怎么审车 win10浏览器怎么屏蔽页面广告 用什么鱼做生鱼片好吃。 醋精生鱼片的做法 被限制登录,一般要多久才能自动解除 我在支付宝上买了一年的定期基金,现在没有到期,怎么能提前取出来,急等用钱 被限制登录,一般要多久才能自动解除? 分析下面汉字的形态构造,并指出其造字法。切 命 删 劵 秉 罟 矣 到 乘 舂 甲骨文是一种比较成熟的古代文字什么是其最原始的造字方法?求答案啊 假借是一种怎样的造字法? “其”加什么偏旁可以组成什么字? 其中的其是什么造字 古代汉语"其"造字方法 泡网是什么意思 泡网有意思么? 泡网俱乐部是干什么的 女人喜欢泡网,说明什么 请教,泡泡网论坛是个什么论坛 喜欢泡网的男人都是单身吗? 在家泡网能以什么维生? 不锈钢304材质管线焊接问题 304不锈钢管焊接问题如何解决? 我在泡泡网同城在线交友网站上购买了119的套餐,可惜被骗了,大家千万别再相信了,以我为鉴呀 304不锈钢管能用316L焊条焊吗 304不锈钢能用316焊条焊吗 304不锈钢管用什么焊条焊接? 不锈钢304和304L焊接选用什么焊材? 请问焊接304不锈钢应该选择什么型号的焊条? 一点资讯评论发表提示“操作失败”是原因,不论在任何版本的情况都一样? 304不锈钢含碳量超过0.23%焊接性能还好吗 一点资讯为啥回复不了 4mm厚壁304不锈钢可以直接用不锈钢焊条焊接吗 关于一点资讯软件客户端刷新不了的问题