gpt4 book ai didi

python - 具有来自表文件的重采样日期时间的交叉表数据框

转载 作者:太空宇宙 更新时间:2023-11-03 15:53:37 25 4
gpt4 key购买 nike

给定这样一个文件:

date    uselessinfo category    uselessinfo2
2011-07-22 02:56:36 banana 1 apple
2011-02-27 17:15:44 banana 4 apple
2010-12-12 00:13:42 banana 1 apple
2010-10-12 00:13:00 banana 2 apple

我正在使用 pandas 构建 DataFrame:

data = pd.read_table(pathToFile, "\t")

由此,我尝试使用简单的 pandas 方法来构建交叉表矩阵,例如:

        1   2   3   4

2010 1 1 0 0
2011 1 0 0 1

其中列是类别,行是日期箱,值是这些箱中类别的出现

我的问题是我不知道如何按年或月对日期时间进行分类,然后构建交叉表矩阵。我在 stackoverflow 上看到,重新采样函数是对日期时间和交叉表进行合并然后构建矩阵的最佳方式:

data = data.resample('M', on='date').sum()
data = pd.crosstab(data.date,data.category)

有没有办法结合这两个函数来获得所需的矩阵?还是我完全做错了?

要实现的目标是使用此矩阵绘制 seaborn 热图,如下所示: enter image description here

最佳答案

看来您需要将 date 转换为 year :

data = pd.read_table(pathToFile, "\t", parse_dates=['date'])

data = pd.crosstab(data.date.dt.year ,data.category)

print (data)
category 1 2 4
date
2010 1 1 0
2011 1 0 1

但如果需要按月重新采样:

data = data.resample('M', on='date').sum().reset_index()
data = pd.crosstab(data.date.dt.year,data.category)

如果更改数据,最能看出差异:

print (data)
date uselessinfo category uselessinfo2
0 2011-07-22 02:56:36 banana 1 apple
1 2011-07-27 02:56:36 banana 7 apple
2 2011-08-27 17:15:44 banana 4 apple
3 2011-09-12 00:13:42 banana 1 apple
4 2011-09-12 00:13:00 banana 2 apple


data = data.resample('M', on='date').sum().reset_index()
data = pd.crosstab(data.date.dt.year,data.category)
print (data)
category 3 4 8
date
2011 1 1 1

data = pd.crosstab(data.date.dt.year,data.category)
print (data)
category 1 2 4 7
date
2011 2 1 1 1

关于python - 具有来自表文件的重采样日期时间的交叉表数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44963691/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com