Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pandas Concat正在运行内存错误_Python_Pandas_Dataframe - Fatal编程技术网

Python Pandas Concat正在运行内存错误

Python Pandas Concat正在运行内存错误,python,pandas,dataframe,Python,Pandas,Dataframe,我试图对数据进行预处理,以便进一步分析。首先,我从csv文件(x)读取数据 然后我把它分成三部分。最后,我需要使用get_dummies、concat和sum对一个数组进行变换,以得到groupby的结果 import pandas as pd RawData_v2_clear=pd.read_csv('C:\\Users\\User\\Documents\\top200users_filtered.csv', sep=';', usecols = ['Username',

我试图对数据进行预处理,以便进一步分析。首先,我从csv文件(x)读取数据

然后我把它分成三部分。最后,我需要使用
get_dummies
concat
sum
对一个数组进行变换,以得到
groupby
的结果

import pandas as pd

RawData_v2_clear=pd.read_csv('C:\\Users\\User\\Documents\\top200users_filtered.csv', 
        sep=';', usecols = ['Username', 'Code', 'Object'], error_bad_lines=False, 
        encoding='latin-1')

dfU = RawData_v2_clear['Username']              
dfT = RawData_v2_clear['Code']   
dfO = RawData_v2_clear['Object'] 

del RawData_v2_clear, dfO                               (to free up some memory)

df_newT = pd.concat([dfU,pd.get_dummies(dfT)],axis=1)

df_new_gbyT = df_newT.groupby('Username').sum()
Raw\u Data\u V2\u clear
具有形状(约1100万行x 3列)

错误:
文件“c:\Users\User\Desktop\faulture_skcript.py”,第XXX行,在
df_newT=pd.concat([dfU,pd.get_dummies(dfT)],轴=1.sum()
文件“C:\Users\User\AppData\Local\Continuum\anaconda3\lib\site packages\pandas\core\remove\remove.py”,第866行,在get\u dummies中
dtype=dtype)
文件“C:\Users\User\AppData\Local\Continuum\anaconda3\lib\site packages\pandas\core\restrape\restrape.py”,第963行,位于“获取”dummies\u 1d中
虚拟物体=np.眼睛(物体的数量,dtype=dtype).取(代码,轴=0)
记忆者
在另一个系统上,此操作需要一些时间,但完成时没有出现
内存错误
。也许有人有个好主意来解决这个内存问题?也许append比concat对内存更友好?然而,我在当前系统上的append实现也失败了

多谢各位

IIUC,在
read\u csv
方法中尝试参数,改为:


更普遍的解决方案是使用Dask。我在处理大型数据集时经常遇到这个问题。如果您使用的是ipython/jupyter笔记本,可以尝试重置内核以释放内存。也可以尝试将csv分块读取,然后稍后将其连接起来?可以尝试将“用户名”列强制转换为
类别
dtype。。?可以尝试传递
dtype={'Username':'category'}
来读取\u csv方法…?@YashNag是的,我通过Conda尝试了Spyder和VS代码。然而,两者都遇到了同样的问题。以后很难将它们连接起来,因为这是我将要分析的最终数据。令人困惑的是,这在另一个功能较弱的系统上运行得很好。克里斯:我有3000个不同的用户名,所以用它作为分类可能没有多大帮助,对吧?分类类型是超级高效的内存。如果它是“object”类型,则将其转换为category将释放大量空间。。。在引擎盖下编码为“int”。如果您有超过1100万行,只有3000个唯一用户名,那么无论如何都值得一试@迈克听到这个消息很难过,伙计。看起来你最终会尝试创建“用户名”和“代码”的交叉选项卡。。。?试着用
dtype='category'
读入,然后直接进入
df_new\u gbyT=pd.crosstab(RawData\u v2\u clear.Username,RawData\u v2\u clear.code)
。。?
Error:
  File "c:\Users\User\Desktop\Faulty_Skript.py", line XXX, in <module>
    df_newT = pd.concat([dfU,pd.get_dummies(dfT)],axis=1).sum()
  File "C:\Users\User\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\reshape\reshape.py", line 866, in get_dummies
    dtype=dtype)
  File "C:\Users\User\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\reshape\reshape.py", line 963, in _get_dummies_1d
    dummy_mat = np.eye(number_of_cols, dtype=dtype).take(codes, axis=0)
MemoryError
import pandas as pd

RawData_v2_clear=pd.read_csv('C:\\Users\\User\\Documents\\top200users_filtered.csv', 
        sep=';', usecols = ['Username', 'Code', 'Object'], error_bad_lines=False, 
        encoding='latin-1', dtype='category')

df_new_gbyT = pd.crosstab(RawData_v2_clear.Username, RawData_v2_clear.Code)