anonypy icon indicating copy to clipboard operation
anonypy copied to clipboard

Example in README returns error

Open CurtLH opened this issue 2 years ago • 5 comments

I'm hoping to learn how to use this package, but when I run the example in the README, I get the following error:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
Input In [2], in <cell line: 1>()
----> 1 main()

Input In [1], in main()
     26 sensitive_column = "col4"
     28 p = anonypy.Preserver(df, feature_columns, sensitive_column)
---> 29 rows = p.anonymize_k_anonymity(k=2)
     31 dfn = pd.DataFrame(rows)
     32 print(dfn)

File ~/miniconda3/envs/ppla-dev2/lib/python3.8/site-packages/anonypy/anonypy.py:18, in Preserver.anonymize_k_anonymity(self, k)
     17 def anonymize_k_anonymity(self, k):
---> 18     return self.__anonymize(k)

File ~/miniconda3/envs/ppla-dev2/lib/python3.8/site-packages/anonypy/anonypy.py:10, in Preserver.__anonymize(self, k, l, p)
      8 def __anonymize(self, k, l=0, p=0.0):
      9     partitions = self.modrian.partition(k, l, p)
---> 10     return anonymize(
     11         self.modrian.df,
     12         partitions,
     13         self.modrian.feature_columns,
     14         self.modrian.sensitive_column,
     15     )

File ~/miniconda3/envs/ppla-dev2/lib/python3.8/site-packages/anonypy/anonypy.py:79, in anonymize(df, partitions, feature_columns, sensitive_column, max_partitions)
     75 grouped_columns = df.loc[partition].agg(aggregations, squeeze=False)
     76 sensitive_counts = (
     77     df.loc[partition].groupby(sensitive_column).agg({sensitive_column: "count"})
     78 )
---> 79 values = grouped_columns.iloc[0].to_dict()
     80 for sensitive_value, count in sensitive_counts[sensitive_column].items():
     81     if count == 0:

AttributeError: 'list' object has no attribute 'to_dict'

CurtLH avatar Jul 22 '22 23:07 CurtLH

+1

gianmarcoaversanoenx avatar May 11 '23 12:05 gianmarcoaversanoenx

+1

MorTzadok avatar Jul 03 '23 12:07 MorTzadok

I had the same problem but when I tried to debug the code locally (using a single file containing all concatenated functions), it worked.

AshtonIzmev avatar Feb 05 '24 13:02 AshtonIzmev

I was able to make it work, I had to change the file anonypy.py on the lines 79 and 108

Replacing this line

values = grouped_columns.iloc[0].to_dict()

with this one

values= {} for name,val in grouped_columns.items(): values[name] = val[0]

Hope it helps.

IamWorld avatar Mar 01 '24 05:03 IamWorld

@CurtLH Thank you for all the messages. I've updated the dependent libraries and resolved the errors. I just released version 0.2.1, so please try using it.

glassonion1 avatar Sep 21 '24 00:09 glassonion1