相关疑难解决方法(0)

Pandas read_csv low_memory和dtype选项

打电话的时候

df = pd.read_csv('somefile.csv')
Run Code Online (Sandbox Code Playgroud)

我明白了:

/Users/josh/anaconda/envs/py27/lib/python2.7/site-packages/pandas/io/parsers.py:1130:DtypeWarning:列(4,5,7,16)有混合类型.在导入时指定dtype选项或设置low_memory = False.

为什么该dtype选项与此相关low_memory,以及为什么会False帮助解决此问题?

python parsing numpy dataframe pandas

270
推荐指数
10
解决办法
23万
查看次数

为什么 Pandas 数据帧消耗的 RAM 比原始文本文件的大小多得多?

我正在尝试使用 pandas 将一个大的 tab/txt(大小 = 3 gb)文件导入 Python pd.read_csv("file.txt",sep="\t")。我加载的文件是一个“.tab”文件,我将其扩展名更改为“.txt”以将其导入read_csv()。它是一个包含 305 列和 +/- 1 000 000 行的文件。

当我执行代码时,一段时间后 Python 返回一个 MemoryError。我搜索了一些信息,这基本上意味着没有足够的可用 RAM。当我指定nrows = 20read_csv()它工作正常。

我使用的计算机有 46gb 的 RAM,其中大约 20gb 可用于 Python。

我的问题:3gb 的文件怎么可能需要超过 20gb 的 RAM 才能使用 pandas 导入 Python read_csv()?我做错了什么吗?

编辑:在执行df.dtypes该类型的混合objectfloat64以及int64

更新:我使用以下代码来解决这个问题并执行我的计算:

summed_cols=pd.DataFrame(columns=["sample","read sum"])
while x<352:
    x=x+1
    sample_col=pd.read_csv("file.txt",sep="\t",usecols=[x])
    summed_cols=summed_cols.append(pd.DataFrame({"sample":[sample_col.columns[0]],"read sum":sum(sample_col[sample_col.columns[0]])}))
    del sample_col
Run Code Online (Sandbox Code Playgroud)

它现在选择一列,执行计算,将结果存储在数据框中,删除当前列,然后移动到下一列

python pandas

5
推荐指数
1
解决办法
3036
查看次数

标签 统计

pandas ×2

python ×2

dataframe ×1

numpy ×1

parsing ×1