Nano Hash - криптовалюты, майнинг, программирование

Pandas concat и проблема OHLC

У меня есть старый скрипт, и раньше он работал отлично, он был разработан для получения данных тиков (предложений и запросов) и преобразования их в данные OHLC с использованием панд .resample и .agg, как показано ниже:

df = pd.DataFrame(list(MDB.CHART.find()))
DF = df[['dt','bid','ask']]
DF = DF.set_index('dt')

DB = DF['bid'].resample('2T').agg({ 'openbid' : 'first',
                                    'highbid' : 'max',
                                    'lowbid'  : 'min',
                                    'closebid': 'last'})

DA = DF['ask'].resample('2T').agg({ 'openask' : 'first',
                                    'highask' : 'max',
                                    'lowask'  : 'min',
                                    'closeask': 'last'})

dg = pd.concat([DB, DA], axis = 1)

And it would produce the following DataFrame layout:

dt  openbid  highbid  lowbid  closebid  openask  highask lowask closeask
....
....

Но теперь, когда я запускаю тот же скрипт (с точно такими же данными), я получаю следующее:

                                  bid      ask
         dt                                   
closeask 2015-08-19 06:00:00      NaN  1.10619
         2015-08-19 06:02:00      NaN  1.10636
         2015-08-19 06:04:00      NaN  1.10646
         2015-08-19 06:06:00      NaN  1.10657
         2015-08-19 06:08:00      NaN  1.10649
...                               ...      ...
openbid  2015-08-20 13:28:00  1.11661      NaN
         2015-08-20 13:30:00  1.11683      NaN
         2015-08-20 13:32:00  1.11684      NaN
         2015-08-20 13:34:00  1.11697      NaN
         2015-08-20 13:36:00  1.11673      NaN

[7592 rows x 2 columns]

Я так понимаю или предполагаю, что панды изменили (снова) функции resample и agg? Может ли кто-нибудь взмахнуть палочкой и избавить меня от необходимости приближать голову к документам?

Спасибо.

пс. когда я использую следующее

df = (DF.resample('2T').agg({'Open': 'first', 'High': 'max', 'Low': 'min', 'Close': 'last'}))
I am getting a future warning:

FutureWarning: using a dict with renaming is deprecated and will be removed in a future version

Но пока ничего в документах!


  • Являются ли БД и DA мультииндексными? Кроме того, использование словаря с agg будет удалено в будущих версиях, поэтому вам следует создать виртуальную среду и сохранить ту же версию Python для своего кода. 24.11.2017
  • @ djk47463 приветствует ответ, я знаю, что он выходит в новой версии, и это позор, поскольку я использую его с диаграммами в реальном времени, и теперь накладные расходы будут огромными, так как мне придется создать новый DataFrame из отдельных столбцов. . Не беспокойтесь о вопросе, я в процессе создания чего-то, что прослужит долго. 24.11.2017

Ответы:


1

Так что с этого момента нам придется использовать следующее при использовании данных спроса и предложения, так как переименование с помощью dict скоро обесценится:

    db = DF.bid.resample('2T').ohlc().add_suffix('bid')
    da = DF.ask.resample('2T').ohlc().add_suffix('ask')
    df = pd.concat([db, da], axis = 1)

df.head(3)

                     openbid  highbid   lowbid  closebid  openask  highask   lowask  closeask
dt                                                                                           
2015-08-19 06:00:00  1.10586  1.10620  1.10558   1.10615  1.10587  1.10623  1.10560   1.10619
2015-08-19 06:02:00  1.10615  1.10650  1.10611   1.10634  1.10618  1.10652  1.10614   1.10636
2015-08-19 06:04:00  1.10634  1.10674  1.10623   1.10645  1.10637  1.10676  1.10624   1.10646
24.11.2017
  • используя pandas.pydata.org/pandas-docs/stable /generated/ вместо переименования для вашего случая 24.11.2017
  • Как @Wen предложил использовать add_suffix вместо DF.bid.resample('2T').ohlc().add_suffix('bid') то же самое для ask 24.11.2017
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..