У меня есть набор данных, структурированный так:
"Date","Time","Open","High","Low","Close","Volume"
Этот временной ряд представляет значения универсального фондового рынка.
Я хочу рассчитать разницу в процентах между двумя строками столбца «Закрыть» (на самом деле, я хочу знать, насколько стоимость акции увеличилась или уменьшилась; каждая строка представляет день).
Я сделал это с помощью цикла for (это ужасно при использовании pandas при проблеме больших данных), и я создаю правильные результаты, но в другом фрейме данных:
rows_number = df_stock.shape[0]
# The first row will be 1, because is calculated in percentage. If haven't any yesterday the value must be 1
percentage_df = percentage_df.append({'Date': df_stock.iloc[0]['Date'], 'Percentage': 1}, ignore_index=True)
# Foreach days, calculate the market trend in percentage
for index in range(1, rows_number):
# n_yesterday : 100 = (n_today - n_yesterday) : x
n_today = df_stock.iloc[index]['Close']
n_yesterday = self.df_stock.iloc[index-1]['Close']
difference = n_today - n_yesterday
percentage = (100 * difference ) / n_yesterday
percentage_df = percentage_df .append({'Date': df_stock.iloc[index]['Date'], 'Percentage': percentage}, ignore_index=True)
Как можноЯ рефакторину это, используя преимущества dataFrame api, удаляя цикл for и создавая новый столбец на месте?