我有一个数据框
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 以及各自列中的 View 来执行数据透视表。
data.shape为741206行×3列
df_matrix = pd.pivot_table(data, values='Scrips_viewed', index='ClientId', columns='Scrips')
但是我的电脑挂起,我必须重新启动它。
我的独特 Scrips 数量是 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
最佳答案
您可以通过将字符串列转换为 categoricals 来减少数据帧占用的内存。 .
data[["ClientId", "Scrips"]] = data[["ClientId", "Scrips"]].astype('category')
然后尝试旋转。
关于具有 4000 个独特类别的大文件上的 Python 数据透视表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55454555/