英文:
How to convert panda df to sparse df
问题
我有一个庞大的稀疏数据集在一个DataFrame中,一直在使用df.to_sparse,但它将很快被弃用,所以想要切换到pd.Series(pd.SparseArray()),但不确定如何对整个DataFrame进行操作?
我的最终DataFrame有100,000行和49,000列,所以需要一种自动化的方法。
英文:
I have a huge sparse dataset in a dataframe and have been using df.to_sparse but it will be deprecated soon so wanted to switch to pd.Series(pd.SparseArray()) but not sure how to do that for an entire dataframe?
My final df is 100K rows and 49K columns so need an automated way.
答案1
得分: 1
你可以尝试类似这样的方式:
dtype = {key: pd.SparseDtype(df.dtypes[key].type, fill_value=df[key].value_counts().argmax()) for key in df.dtypes.keys()}
df = df.astype(dtype)
然后使用 df.sparse.density
检查稀疏度。
这将为每列创建稀疏数据,以最常见的值作为填充值。
(不确定是否是最佳方法)
英文:
You could try something like this :
dtype = {key: pd.SparseDtype(df.dtypes[key].type, fill_value=df[key].value_counts().argmax()) for key in df.dtypes.keys()}
df = df.astype(dtype)
And then check the density with df.sparse.density
.
This will create sparse data for each column, taking most frequent value as filling value.
(not sure if it's the best approach though)
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论