А вы точно уверены что вы хотите что бы все экземпляры вашего класса были связаны с одним списком storage. То есть ИЗМЕНЕНИЕ storage из любого экземпляра, будет МЕНЯТЬ storage во всех других экземплярах класса. Это желаемое поведение?
Rett-oo, Не надо надеяться, надо делать, как положено и он не будет ничего выдавать. В приведенном тобой примере у фреймов одинаковые и индексы и имена колонок, по этому все работает без ошибок. Если на твоих реальных фреймах выдает такую ошибку, значит имена колонок отличаются, или индексы отличаются. Сделай разным индекс или имя хоть одной колонки у приведенных тобой фреймах и все перестанет работать.
А во вторых я не стал в ответе это писать потому что думал может замену надо сделать на какую то другую величину. Но если есть два фрейма и тебе там где они отличаются нужно взять значения из второго фрейма, а зачем вообще тогда сравнение, можно просто брать второй фрейм и все.
Ася, Если в виде строк это другое дело, лишь бы чисел там не было, потому что операции над числовыми видами данных, вам недоступны, я об этом и говорил. Там смотрите, еще раз pandas не будет понимать что это списки со строками. Он будет понимать все это как строку вместе с элементами []. Есть акссесор str, который позволяет работать с каждым элементом ячейки, как если бы это была отдельная python строка, там у него куча методов есть включая хоть regex можно прикрутить.
Ася, Хорошо, когда вы получаете фрейм из файла, все может быть на много хуже, чем списки. В чем проблема списка как элемента ячейки, в том что для pandas нет никакого списка если вы вызовете df.dtypes то увидите тип данных вашей колонки 'object'. Что это значит? А значит это что pandas понимает содержание колонки как "python" объект и никакие операции кроме строковых ему недоступны, вы все еще можете например написать функции и применить ее методом apply например которая будет вычислять mean или что то другое, но будет страшно медленная и для каждой операции придется писать функцию, это так не работает.
Вам нужно распарсить данные увеличить количество столбцов если необходимо и применять операции согласно типу данных.
Chubaka, Ну я чуть-чуть на бегу писал, решение то рабочее, но я им сам недоволен, вообще такие задачи решаются через многомерный индекс. Где день это первый уровень индекса, артист второй, потом песни, потом случайная выборка на каждую песню, а потом распремляем индексы и получаем тот же результат, только с меньшим количеством кода плюс куда быстрее, чем мой вариант. Чуть время появится, сделаю для тренировки, задачка ваша не плохая может пригодится.
Ты используешь pandas, вместо pd_series.to_excel pd_series.to_csv(database)
и все, параметр engine не нужен. Да и поменяй у тебя database = 'data.xls' на 'data.csv'.
Это называется выборка без замены элемента и она такая же случайная, как и выборка с заменой, как в случае с монеткой. Есть пространство выборки и есть то как мы осуществляем выборку с заменой элемента или без замены. В случае выборки БЕЗ замены, размер пространства выборки сокращается на 1 с каждым новым выбором да и все.
Поправить, api что бы все заработало не проблема, но вот графика такого не выдаст да и я если честно слабо себе представляю, такая маленькая временная последовательность, а должна предсказывать на 39 шагов вперед, Слишком уж далеко. При чем обрати внимание, что оно тебе выдает если ты используешь метод forecast он тебе вернет series с прогнозами. Закомментруй все что касается интервалов уверенности убери стандартную ошибку. То есть оставь вот так, fc = model.forecast(39, alpha=0.05) и глянь на него сначала он пытается прогнозировать, а потом выдает одинаковые результаты, а интервалы, стандартные ошибки, есть объекты где они содержаться атрибутами да и все, api это вообще не проблема, я две строчки поменял и все заработало. Но прогноза, как на графике он не делает, по этому я и не стал публиковать ответом. Как по мне качество статьи оставляет желать лучшего да и все.
a scikit-learn, statsmodels? Что то изучали, pandas и numpy это про манипуляции данными а не про построение предиктивных моделей или про делание статистических выводов. Data Science - в двух словах это наука о превращении сырых данных в ЦЕННУЮ информацию. На чистом pandas ну разве что EDA анализ можно сделать (Визуализировать распределения, и потенциальные взаимоотношения как индивидуально между предикторами и целью, так и взаимоотношения предикторов между собой).
Каковы задачи вашего проекта? что можно использовать? проект о простеньких манипуляциях + визуализация на pandas или что то по серьезнее со статистическими выводами и прогнозированием?
Сергей П, Нет, я не то что бы спорить зачем есть логические операторы и их надо использовать в первую очередь, а если есть какие то причины требующие побитовые то только тогда побитовые, я согласен с вами, потенциальный эффект логического оператора ну например False AND some_function() если функция скажем не валидная должно быть исключение а вместо исключения у нас будет False, это негативный сценарий на позитивный указали вы, мы избегаем лишних вызовов функций. Полностью согласен.
Буду честен я использовал побитовые машинально, потому что основной код который пишу это pandas а там вместо логических используются побитовые. Но я не должен машинально использовать, а должен понимать, что делаю, python мой основной язык. По большему счету мне ПОВЕЗЛО, что код не имеет побочных эффектов. Повезло, это не профессионально и не куда не годится.
Я вечерком открыл побитовую арифметику и не нашел потенциальных побочных эффектов. Где у нас могут проблемы (как мне думается) если мы вылетим где то из 0 или 1. например 10 & 9 он вернет 8, почему потому что в результате побитового умножения мы мы получим 8 (сначала в бинарном представлении) ну и он конвертирует в целое число 8. Ну и такие кейсы это не то что мы хотим. Но за счет того что любой критерий это True или False то есть 1 или 0, я не увидел не каких кейсов где это будет иметь непредсказуемое поведение.
В любом случае спасибо за дискуссию, лучше лишний раз что то повторить и разобраться.
Сергей, Почитал , немножко разочарован (с ваших слов я ожидал, что что-то серьезное упустил) побочный эффект как раз таки имеет логический оператор, собственно вы этот эффект и предлагали изначально использовать что бы не производить лишние вычисления. По битовое AND (&) он берет бинарное представление целого числа далее a_i * b_i для бинарного представления числа. По битовое OR (|) например a_i + b_i - (a_i * b_i). Бинарное представление True ->1, False ->0, то любая операция даст на выходе 1 или 0, как и ожидается.
False, True являются подклассом int. 0, 1 соответственно. ,бинарная форма 0 -> 0 , бинарная форма 1 -> 1. Откуда тут взяться побочным эффектам.
Сергей Паньков, Не ну насчет критериев, понятно надо вводить критерий сложности. Хотя бы что то вроде этого. Энтропия = log_2(Количество возможных символов^длинна пароля). Ну и сравнивать, оптимизимировать, относительно желаемых условий и т.д.
Сергей Паньков, Отлично, правильно логические на то и логические (что бы тестировать логически) а по битовые что бы тестировать оба операнда. Что же меня ждет явное повторение булевых и побитовых операций в чистом python. Спасибо надо устранять, я так ошибаться не должен.
Сергей Паньков, А вот это уже аргумент, вы правы. В моем случае, когда дизайн подразумевает при любом раскладе вычисление всех критериев, странно использовать побитовое AND, надо использовать логическое AND, раз уже все посчитано, так пусть полностью выполняет выражение, а не если слева False то стоп, если True идем дальше. Согласен. Надо было мне в этом моменте быть внимательно, привык в pandas использовать ПОБИТОВЫЕ операторы и влепил. Ну это не оправдание, в этом моменте вы правы.
Сергей Паньков, Смотрите, я вас понял прекрасно, что вы имеете ввиду. Вы мне говорите, что я зря посчитал критерии, потому что в булевом выражение например простейшем (False & .. ) то что справа никогда не будет выполнено, так как python уже поймет, что выражение False, как результат происходят лишние вычисления критериев, в моем коде они то все вычисляются (А если держать их функциями и вставить функции в булевое выражение, питону надо будет вызовет, не надо будет не вызовет). Оптимизация ли это конечно оптимизация.
Повторюсь, для меня это был вопрос дизайна, как минимум в аналитике при декомпозиции, сложный ввод, или какие то выборки из структур данных, разбивают на критерии и выполняют их все, когда возможно конечно, (ваше замечание никто не отменял), потому что в большинстве случаев нам необходимо не только выполнить выражение, но и знать по какому именно критерию у нас False. (Собственно, вы уже предложили, добавить сообщение пользователю, о том в чем причина почему пароль не надежный).
По этому при все уважении, я не согласен, что я учу плохому, мой код плохая практика, грязный хак, как вы выразились. И останусь на своем.
Ну а мнение, всегда ценно (критическое ценно вдвойне) . Спасибо.
Сергей Паньков, Спасибо за ваше мнение , но я не согласен с вами. В целом я вообще не думал об оптимизации при написании данного кода (для меня вопрос не в этом), я ставил целью продемонстрировать дизайн который легко читать, легко проверять и т.д. Создание отдельных критериев и затем создание из них булевого выражения довольно распространенная практика. Если условий будет больше и они будут сложнее мой код, легко адаптируется под них.
можно просто
cat.categories
А ты перед созданием cat что бы категории получать их тах получаешь. Понял.