gpt4 book ai didi

python - 将时间序列转换为热图

转载 作者:行者123 更新时间:2023-12-01 01:25:33 25 4
gpt4 key购买 nike

我正在寻找 pandas 的良好转换,这将使我能够从测量的时间序列转换为每个 bin-per-timebin 列表。

假设我有我的:

x = list(range(count))
y = [random.gauss(1, 0.1) for _ in range(count)]

我可以将其转换为两侧的分箱间隔:

df = pandas.DataFrame.from_dict({'x': x, 'y': y})
df['x'].update(pandas.cut(df['x'], 20))
df['y'].update(pandas.cut(df['y'], 20))

我知道我可以使用以下方法获取 y 的值计数:

df['y'].value_counts()

但我无法将“按唯一 x 值分组的 y 上运行 value_counts,然后展开并返回”放入有效操作中。

<小时/>

示例:

y = [1, 1, 2, 3, 4, 4]
x = [0, 1, 2, 3, 4, 5]
bin_count = 2

预期:

df: x    y  count
0-2 1 2
0-2 2 1
3-5 3 1
3-5 4 2

最佳答案

我相信你需要SeriesGroupBy.value_countsreset_index :

y = [1, 1, 2, 3, 4, 4]
x = [0, 1, 2, 3, 4, 5]
bin_count = 2
df = pd.DataFrame.from_dict({'x': x, 'y': y})
df['x'].update(pd.cut(df['x'], bin_count))

df1 = df.groupby('x')['y'].value_counts().reset_index(name='count')
print (df1)
x y count
0 (-0.005, 2.5] 1 2
1 (-0.005, 2.5] 2 1
2 (2.5, 5.0] 4 2
3 (2.5, 5.0] 3 1

对于 y 中的列,请使用 unstack :

df1 = df.groupby('x')['y'].value_counts().unstack(fill_value=0)
print (df1)
y 1 2 3 4
x
(-0.005, 2.5] 2 1 0 0
(2.5, 5.0] 0 0 1 2

编辑:

如果 bin 需要唯一值,请将参数 labels=False 添加到 cut :

df['x'].update(pd.cut(df['x'], bin_count, labels=False))

df1 = df.groupby('x')['y'].value_counts().unstack(fill_value=0)
print (df1)
y 1 2 3 4
x
0 2 1 0 0
1 0 0 1 2

关于python - 将时间序列转换为热图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53390778/

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