如何将pandas DataFrame转换为稀疏DataFrame

huangapple go评论90阅读模式
英文:

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)

huangapple
  • 本文由 发表于 2020年1月3日 20:02:41
  • 转载请务必保留本文链接:https://go.coder-hub.com/59578301.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定