python - 减少使用 pandas 或内置函数打开解析大型 TSV 文件的时间
问题描述
我有一个非常大的 tsv 文件,文件内容如下所示
数据:
a b value1 value2
a550 b234 0.555 3.61
a710 b234 0.0963 5.18
a473 b234 0.0843 3.94
a782 b234 0.00542 14.0
a544 b234 0.105 3.94
a211 b234 0.0506 4.71
a656 b234 -0.0295 4.04
a303 b234 -0.0047 4.61
a303 b234 -0.017 4.56
a303 b234 0.0522 8.78
a244 b234 0.0806 5.56
.
.
.
.
我已经使用 pandas 读取文件并将其解析为字典,但这需要很多时间
import pandas as pd
import time
start_time =time.time()
data = pd.read_csv("bigfile.tsv", sep ="\t")
data['a_b'] = data[['a', 'b']].apply(tuple, axis=1)
data = dict(zip(data['a_b'], data['score']))
end_time = time.time()
execution_time = end_time-start_time
print(data)
print("time:",execution_time)
输出:
{('a550', 'b234'): -0.0828, ('a710', 'b234'): 0.00984, .............}
time: 464.0104968547821
我知道有更好的方法来加载这个文件以减少加载和解析时间,有人可以帮我吗
解决方案
data['a_b'] = data[['a', 'b']].apply(tuple, axis=1) 是大量计算。通过使用纯 python 来避免这种情况。我测试了长度超过 1000 万行的类似数据。只用了3秒完成任务。
data = pd.read_csv("bigfile.tsv", sep ="\t")
a_b = list(zip(data['a'].to_list(),data['b'].to_list()))
data = dict(zip(a_b, data['value1'].to_list()))
推荐阅读
- or-tools - or-tools NewIntVar 似乎不支持 python 中的 int64
- java - 计算球/点的弹跳角度
- postgresql - Sequilize 查询以在数组中查找 JSON 不起作用
- winforms - C# winforms 中的 WebBrowser 滞后
- windows - 为什么在我的 git repo 上找到的子模块符号链接上出现错误 404?
- angular - 无法捕捉在 Jasmine 上模拟的 HttpResponseError
- javascript - 无法安装 NODE-SCSS 模块
- scikit-learn - 使用 Scikit 学习库进行逻辑回归的截止点
- html - 均匀分布 html 选项卡式菜单的按钮
- git - “git add -A”什么都不输出,也不添加文件