我正在尝试预处理数据以进行进一步分析。首先,我从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_Data_V2_clear
的形状为(约 1100 万行 x 3 列)。
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
在另一个系统上,此操作需要一些时间,但在没有内存错误
的情况下完成。也许有人有好的想法来解决这个内存问题?也许append
比concat
更加友好?然而,在我的当前系统上,我的append
实现也失败了。
非常感谢!
category
数据类型..? 可以尝试在 read_csv 方法中传递dtype={'Username': 'category'}
...? - Chris Adamsdtype='category'
读入数据,然后直接使用df_new_gbyT = pd.crosstab(RawData_v2_clear.Username, RawData_v2_clear.Code)
..? - Chris Adams