Панды накапливают данные для линейной регрессии - PullRequest
1 голос
/ 15 июня 2019

Я пытаюсь настроить свои данные так, чтобы накапливалось total_gross за день.Например,

`Created` `total_gross`  `total_gross_accumulated`
Day 1     100            100
Day 2     100            200
Day 3     100            300
Day 4     100            400

Любая идея, как мне изменить свой код, чтобы total_gross_accumulated доступно?

Здесь мои данные.

мой код:

from sklearn import linear_model

def load_event_data():
    df = pd.read_csv('sample-data.csv', usecols=['created', 'total_gross'])
    df['created'] = pd.to_datetime(df.created)
    return df.set_index('created').resample('D').sum().fillna(0)

event_data = load_event_data()

X = event_data.index
y = event_data.total_gross

plt.xticks(rotation=90)
plt.plot(X, y)
plt.show()

1 Ответ

2 голосов
/ 15 июня 2019

Понимание списка - самый питонический способ сделать это.

КРАТКИЙ ответ:

Это должно дать вам новый столбец, который вы хотите:

n = event_data.shape[0]

# skip line 0 and start by accumulating from 1 until the end
total_gross_accumulated =[event_data['total_gross'][:i].sum() for i in range(1,n+1)]

# add the new variable in the initial pandas dataframe
event_data['total_gross_accumulated'] = total_gross_accumulated

ИЛИ быстрее

event_data['total_gross_accumulated'] = event_data['total_gross'].cumsum()

ДЛИННЫЙ ответ: Полный код с использованием ваших данных:

import pandas as pd

def load_event_data():
    df = pd.read_csv('sample-data.csv', usecols=['created', 'total_gross'])
    df['created'] = pd.to_datetime(df.created)

    return df.set_index('created').resample('D').sum().fillna(0)


event_data = load_event_data()

n = event_data.shape[0]

# skip line 0 and start by accumulating from 1 until the end
total_gross_accumulated =[event_data['total_gross'][:i].sum() for i in range(1,n+1)]

# add the new variable in the initial pandas dataframe
event_data['total_gross_accumulated'] = total_gross_accumulated

Результаты:

event_data.head(6)

#            total_gross  total_gross_accumulated
#created
#2019-03-01      3481810                  3481810
#2019-03-02         4690                  3486500
#2019-03-03            0                  3486500
#2019-03-04            0                  3486500
#2019-03-05            0                  3486500
#2019-03-06            0                  3486500


X = event_data.index
y = event_data.total_gross_accumulated

plt.xticks(rotation=90)
plt.plot(X, y)
plt.show()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...