Pandas Series.strids устарела, и ошибка групповых панд - PullRequest
0 голосов
/ 24 августа 2018

Вот несколько строк кода:

import pandas as pd
import numpy as np
from mlxtend.frequent_patterns import apriori 
from mlxtend.frequent_patterns import association_rules

def encode_c(x):
if x <= 0:
    return 0
if x >= 1:
    return 1
return 0


def get_product_consequents():
  all_transactions_df = get_dataframe()
  basket = (all_transactions_df.groupby(['a', 'b'])['c']
    .sum().unstack().reset_index().fillna(0)
    .set_index('a'))
  basket = basket.applymap(encode_c)
  frequent_itemsets = apriori(basket, min_support=0.07, use_colnames=True)
  rules = association_rules(frequent_itemsets, metric="lift", 
    min_threshold=1)
  rules['antecedants_length'] = rules['antecedents'].str.len()
  rules['consequents_length'] = rules['consequents'].str.len()
  rules = rules[(rules['lift'] >= 4) &  # 6
              (rules['confidence'] >= 0.4)]  # 0.8
  rules = rules[(rules['antecedants_length'] == 1) & 
    (rules['consequents_length'] == 1)]
  rules = (rules.groupby(['antecedants'])['consequents'])

ИЗОБРАЖЕНИЕ 1

deprecated error image

ИЗОБРАЖЕНИЕ 2

key error image

Когда я ДЕЛАЮ: Изучение априори от

rules["antecedant_len"] = rules["antecedents"].apply(lambda x: len(x))

Я ПОЛУЧАЮ:
ИЗОБРАЖЕНИЕ 1

C:\Program Files\JetBrains\PyCharm 2018.1.4\helpers\pydev\_pydevd_bundle
\pydevd_resolver.py:71:
FutureWarning: Series.strides is deprecated
and will be removed in a future version
  return getattr(var, attribute)

Я делал это из: mlxtend association_rules и apriori docs
Как говорит ошибка: Series.strides устарели.
Так, как я могу найти длину каждого frozenset в серии? то есть сделать то же, что и выше?

ОСНОВНАЯ ОШИБКА

ИЗОБРАЖЕНИЕ 2

rules = (rules.groupby(['antecedants'])['consequents'])

После оценки выше строки:

Traceback (most recent call last):
File "C:\Program Files\JetBrains\PyCharm         
2018.1.4\helpers\pydev\_pydevd_bundle\pydevd_vars.py", line 376, in 
evaluate_expression compiled = compile(expression, '<string>', 'eval')
File "<string>", line 1
rules = (rules.groupby(['antecedants'])['consequents'])
      ^
SyntaxError: invalid syntax  

----- ПОЧЕМУ синтаксическая ошибка, хотя она отлично работает на JUPYTER NOTEBOOK?

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\Program Files\JetBrains\PyCharm 
2018.1.4\helpers\pydev\_pydevd_bundle\pydevd_comm.py", line 1159, in do_it
result = pydevd_vars.evaluate_expression(self.thread_id, self.frame_id, 
self.expression, self.doExec)
File "C:\Program Files\JetBrains\PyCharm 
2018.1.4\helpers\pydev\_pydevd_bundle\pydevd_vars.py", line 378, in 
evaluate_expression
Exec(expression, updated_globals, frame.f_locals)
File "C:\Program Files\JetBrains\PyCharm 
2018.1.4\helpers\pydev\_pydevd_bundle\pydevd_exec2.py", line 3, in Exec
exec(exp, global_vars, local_vars)
File "<string>", line 1, in <module>
File "C:\ProjcetPath\venv\lib\site- 
packages\pandas\core\generic.py", line 6659, in groupby
observed=observed, **kwargs)
File "C:\ProjcetPath\venv\lib\site- 
packages\pandas\core\groupby\groupby.py", line 2152, in groupby
return klass(obj, by, **kwds)
File "C:\ProjcetPath\venv\lib\site- 
packages\pandas\core\groupby\groupby.py", line 599, in __init__
mutated=self.mutated)
File "C:\ProjcetPath\venv\lib\site- 
packages\pandas\core\groupby\groupby.py", line 3291, in _get_grouper
raise KeyError(gpr)
KeyError: 'antecedants'

--- Наконец, он сообщает об ошибке ключа, во время обработки syntax ошибка key ошибка произошла, наверняка это не ошибка ключа, как я вижу столбец в sciView, также я могу получить к нему доступ, это было как сделано в приведенных выше строках кода.

ДРУГАЯ ИНФОРМАЦИЯ : Я также использую Django.

...