为什么Pandas read_CSV即使iterator=False也返回TextFileReader?
环境: python:3.7.10.final.0, python位:64, 操作系统:Windows,64GB内存, 操作系统版本:10, 版本:10.0.19041, 熊猫:1.2.4 我有一个非常简单的read语句,在一个简单的print语句之后,有条件地检查我是否确实想读取整个文件为什么Pandas read_CSV即使iterator=False也返回TextFileReader?,pandas,jupyter-notebook,jupyter-lab,timeit,Pandas,Jupyter Notebook,Jupyter Lab,Timeit,环境: python:3.7.10.final.0, python位:64, 操作系统:Windows,64GB内存, 操作系统版本:10, 版本:10.0.19041, 熊猫:1.2.4 我有一个非常简单的read语句,在一个简单的print语句之后,有条件地检查我是否确实想读取整个文件 %timeit csvDataFrame=pd.read_csv(fc.selected,sep=“,”,header='expert',na_values='?',skiprows=csvSkipRows=
%timeit csvDataFrame=pd.read_csv(fc.selected,sep=“,”,header='expert',na_values='?',skiprows=csvSkipRows=csvSkipRows,dtype=desiDtypesDict,comment='#',iterator=False)
其中fc.selected是约200万行(磁盘上524MB)CSV的完整路径;csvSkipRows=[]和desiDtypesDict是数据集中列的类型说明
如果我还添加(例如,chunksize=10
)并对结果进行迭代,那么CSV读取效果很好,因此我对参数很有信心,但是当我尝试一次读取整个文件时
- %timeit告诉我,它用了~6s/圈,共有7个圈
- csvDataFrame不是数据帧,而是TextFileReader
为什么会发生这种情况,以及我如何一次读取所有CSV?为什么会发生这种情况?%time它与熊猫的互动异常* 如何一次读取所有CSV?忽略%timeit 一个新内核和一个小的修改之后,我们发现问题是由于把%timeit放在read_csv之前 删除它,总时间是相同的,但现在返回一个数据帧,2684511行×31列,这与预期和期望的一样 建议:在推断确实存在问题之前,始终使用最少的代码进行测试 *到底是什么样的互动我不知道。。。也许其他人会 完整单元代码为:
# Read all at once.
print(readCSVAllAtOnce)
if readCSVAllAtOnce:
%timeit csvDataFrame = pd.read_csv(fc.selected, sep=",", header='infer', na_values ='?', skiprows=csvSkipRows, dtype=desiDtypesDict, comment = '#', iterator=False, chunksize=None)