r语言读取csv文件赋值gamma_tidyfst vs pandas(1):csv文件读写

作者:黄天元,复旦大学博士在读,热爱数据科学与开源工具(R),致力于利用数据科学迅速积累行业经验优势和科学知识发现,涉猎内容包括但不限于信息计量、机器学习、数据可视化、应用统计建模、知识图谱等,著有《R语言高效数据处理指南》(《R语言数据高效处理指南》(黄天元)【摘要 书评 试读】- 京东图书)。知乎专栏:R语言数据挖掘。邮箱:huang.tian-yuan@qq.com.欢迎合作交流。

在tidyfst中,csv文件的读写依赖于data.table直接提供的fread函数,而pandas中则是利用了其自带的read_csv函数。现在比较一下两者对于项目https://github.com/yeayee/joyful-pandas中data文件夹下UFO.csv(3.8M)的运行时间(各运行100次取平均值)。

Python代码:

import timeit as timeit
code_to_test = """
import pandas as pd
df = pd.read_csv("data/UFO.csv")
"""
elapsed_time = timeit.timeit(code_to_test, number=100)/100
print(elapsed_time)

f87f2c01a2a3cd20d586d46921b4dfd6.png

每次运行约花销0.078s。

R代码(观察mean这一项):

library(tidyfst)

res = microbenchmark::microbenchmark({
  library(tidyfst)
  fread("data/UFO.csv")
 } ,times = 100,unit = "s"
)

3ad8e32f05e6a94ccbad227d53e7ef55.png

每次运行约花销0.020s。

结论:就数据导入而言,pandas速度不及tidyfst,data.table比较厉害。如果数据量级变大,这个差距可能会更加明显。


由于测试的时候是另外创建环境,因此加载包的时间也要算进去。但是其实它们是微不足道的,我们可以进行一个小的补充测试(分别注释掉文件读取的代码):

Python:

614e07a3b27b0a9b0ee9a7b4d9ecc390.png

R:

860c34de0cc95ae7c83a849e09e73adc.png

我们比较的量级在1e-3左右,而加载包的时间量级在1e-5甚至更小。


吐槽:Python的帮助文档真的是一般,找一个测时间的函数找了半天也没有找到比较好的,R中无论bench包还是microbenchmark包都远远超越于此。如果有朋友知道python中更好的测时间的方法,敬请告知。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值