适用于具有4000个唯一类别的大型文件的Pythonivot_table

时间:2019-04-01 11:56:42

标签: python pandas pivot

我有一个数据框

  ClientId  Scrips   Scrips_viewed
0    A123    Ibank           5
1    B234    SteelCorp      10
2    B234    KTTelecom       8
3    A123    JKFlights       5
4    A123    BPharma         3

我试图用数据透视表中的所有唯一的脚本和索引列中的所有客户端ID以及相应列中的视图来做数据透视表。

data.shape是741206行×3列

df_matrix = pd.pivot_table(data, values='Scrips_viewed', index='ClientId', columns='Scrips')

但是我的PC挂起了,我必须重新启动它。

我的独家股票数量为4200,即。 4200栏,我的唯一客户是85,000。 我的公羊是16 GB

我的错误是

else:
   1231         # Note that no copy of zero-sized arrays is made. However since they

MemoryError: 

Memory_usage(deep = True)

Index                   80
ClientId         11354188
Scrips             1921078
Scrips_viewed     5929648
dtype: int64

1 个答案:

答案 0 :(得分:1)

您可以通过将字符串列转换为categoricals来减少数据帧占用的内存。

data[["ClientId", "Scrips"]] = data[["ClientId", "Scrips"]].astype('category')

然后尝试旋转。