#python #r #python-3.x #pandas
#python #r #python-3.x #pandas
Вопрос:
Я использую Colab и Python, чтобы найти наиболее подходящее распределение для моих данных. Я новичок в этом, поэтому испытываю много проблем. Пока что вот мой код:
from rpy2.robjects import pandas2ri
from rpy2.robjects.packages import importr
MASS = importr('MASS')
pandas2ri.activate()
df_temp = pd.DataFrame()
df_temp["Values"] = [37.50,46.79,48.30,46.04,43.40,39.25]
ri_temp = pandas2ri.py2ri(df_temp)
params_temp = MASS.fitdistr(ri_temp, 'normal')
print(params_temp)
Сейчас происходит многое, чего я пока не понимаю. Пожалуйста, будьте как можно более описательными!:) Например, я не понимаю, почему я должен использовать pandas2ri.activate()
. Ошибка, которую выдает мой код, заключается в следующем:
/usr/local/lib/python3.6/dist-packages/rpy2/rinterface/__init__.py:146:
RRuntimeWarning: Error in (function (x, densfun, start, ...) :
'x' must be a non-empty numeric vector
… Обратная трассировка между ними…
warnings.warn(x, RRuntimeWarning)
RRuntimeError: Error in (function (x, densfun, start, ...) :
'x' must be a non-empty numeric vector
Итак, в чем проблема?
Причина, по которой я использую pandas в первую очередь, заключается в том, что мои данные хранятся в списке. Если я могу избежать использования pandas, то какова была бы альтернатива? Когда я попытался просто проанализировать MASS.fitdistr(list, 'normal')
, это также выдает мне ошибки. Кроме того, может быть, есть лучшая альтернатива использованию r для поиска наиболее подходящего распределения для данных данного списка? Какие-либо рекомендации?
Комментарии:
1. Пожалуйста, проверьте свой,
ri_temp
я предполагаю, что этоdata.frame
, в то время какfitdistr
, x должен бытьvector
Ответ №1:
Это помогло: my_array = np.asarray(my_list)
. А затем использую массив в качестве входных данных для: params_temp = MASS.fitdistr(my_array, 'normal')
.
Спасибо akrun.