绘制数据框中每周的值计数

问题描述 投票:0回答:3

假设我有一个以下格式的 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 轴上显示总价值(每周所有购买金额的总和)。

编辑:这仅适用于值列,不适用于人员编号

python-3.x pandas dataframe
3个回答
3
投票
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")

0
投票

解决方案类似于链接的重复问题中的答案之一。试试这个:

df.groupby(df.date.dt.weekofyear)['value'].sum().plot(style='.')

0
投票

另一种选择是使用

date
作为索引并对其进行重新采样。

df = df.set_index("date")
summed_values_per_week = df.resample("W").value.sum()
summed_values_per_week.plot()

请参阅有关重新采样的 pandas 文档

© www.soinside.com 2019 - 2024. All rights reserved.