#python #pandas #plot #probability #finance
#питон #панды #сюжет #вероятность #финансы
Вопрос:
У меня есть ежедневные цены на сырую нефть, загруженные от Фреда, около 10 тыс. наблюдений, некоторые значения пусты(код очищает их). Я считаю, что не могу поделиться здесь листами excel, поэтому я просто дам вам скриншот того, как выглядят данные:
Я вычисляю различия и возвраты и очищаю данные, но я как бы застрял.
Вот как выглядит код, чтобы вы начали:
import pandas as pd import numpy as np import matplotlib.pyplot as plt data = pd.read_csv("DCOILWTICO.csv") nan_value = float("NaN") data.replace("", nan_value, inplace=True) data.replace(".", nan_value, inplace=True) data['Previous'] = data['DCOILWTICO'].shift(1) data.dropna(subset=['Previous'],inplace=True) data.replace("", nan_value, inplace=True) data.replace(".", nan_value, inplace=True) data['DCOILWTICO'] = data['DCOILWTICO'].astype(float) data['Previous'] = data['Previous'].astype(float) data['Diff'] = data['DCOILWTICO'] - data['Previous'] data['Return'] = (data['DCOILWTICO'] - data['Previous'])/data['Previous']
Здесь возникает вопрос: я пытаюсь скопировать график ниже.(который, как я полагаю, был сгенерирован с помощью Mathematica) Самое сложное — это уметь правильно создавать контейнеры. Глядя на график, кажется, что там около 200 ящиков. По оси x указаны возвраты, а по оси y-частоты(которые были разделены).
Ответ №1:
Я думаю, вы спрашиваете, как сделать ячейки с равным расстоянием в пространстве журналов. Если это так, то используйте np.geomspace
функцию (геометрическое пространство), а не np.linspace
(линейное пространство).
plt.figure() bins = np.geomspace(data['returns'].min(), data['returns'].max(), 200) plt.hist(data['returns'], bins = bins)
Комментарии:
1. Полезная функция! Но все еще не на 100% ясна процедура перехода от этого к сюжету.
2. Код после редактирования возвращает массив, в котором первое значение-min, а последнее значение-max, а остальные 198 записей-NAN.
3. то есть: эта строка, ячейки = np.geomspace(данные[‘Возврат’].min(), данные[‘Возврат’].макс(), 200)
4. К сожалению, у меня нет данных. Вы можете указать любые значения, которые вы хотите для минимальных и максимальных значений. Так что попробуйте 0,02 для минимума и 0,2 для максимума
5. Функции max и min, похоже, действительно работают. Они по отдельности возвращают: 0,5308641975308642 и -3,019661387220098