Построение количества значений за неделю из кадра данных - PullRequest
0 голосов
/ 01 октября 2018

Скажем, у меня есть кадр данных pandas следующего формата, иллюстрирующий общую стоимость покупки ($) человека в магазине на определенную отметку времени на каждый день в 2015 году:

       person_num               date       value
0             1  2015-01-01 00:23:32       298.00
1             2  2015-01-01 00:31:59       348.00
2             3  2015-01-01 02:30:21       533.00
3             4  2015-01-01 03:14:10       022.00
4             5  2015-01-01 05:51:43       448.00
5             6  2015-01-01 07:10:08       158.00
...         ...                  ...          ...
123728   123729  2015-12-31 23:13:34       109.00

и т. Д.и это продолжается до 2015-12-31 ... Как бы я мог построить общую стоимость за неделю.Таким образом, график будет иметь номер недели на оси x и общую стоимость (сумму всех сумм покупки за неделю) на оси y.

Редактировать: это относится только к столбцу значений, а не к человекуNum

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

Решение аналогично одному из ответов в связанном дубликате вопроса .Попробуйте это:

df.groupby(df.date.dt.weekofyear)['value'].sum().plot(style='.')
0 голосов
/ 01 октября 2018
import pandas as pd

# Construct input dataframe
df = pd.DataFrame({
    "person_num": [
        1,
        2,
        3,
        4,
        5,
        6,
    ],
    "date": [
        "2015-01-01 00:23:32",
        "2015-01-02 00:31:59",
        "2015-01-05 02:30:21",
        "2015-01-06 03:14:10",
        "2015-01-15 05:51:43",
        "2015-01-16 07:10:08",
    ],
    "value": [
        298.00,
        348.00,
        533.00,
        022.00,
        448.00,
        158.00,
    ],
})

# Construct dataframe with week number column and values column
df2 = df.loc[:, ["value"]]
df2["week_no"] = pd.to_datetime(df["date"]).dt.week

# Sum up weekly values
df3 = (
    df2
    .groupby("week_no")
    .sum()
    .reset_index()
)

# Plot results
df3.plot.scatter(x="week_no", y="value")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...