gpt4 book ai didi

python - 拥有以 pandas 数据集列作为行的数据透视表的有效方法是什么?

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

让我们以以下数据集为例:

    make    address all     3d   our    over    length_total    y
0 0.0 0.64 0.64 0.0 0.32 0.0 278 1
1 0.21 0.28 0.5 0.0 0.14 0.28 1028 1
2 0.06 0.0 0.71 0.0 1.23 0.19 2259 1
3 0.15 0.0 0.46 0.1 0.61 0.0 1257 1
4 0.06 0.12 0.77 0.0 0.19 0.32 749 1
5 0.0 0.0 0.0 0.0 0.0 0.0 21 1
6 0.0 0.0 0.25 0.0 0.38 0.25 184 1
7 0.0 0.69 0.34 0.0 0.34 0.0 261 1
8 0.0 0.0 0.0 0.0 0.9 0.0 25 1
9 0.0 0.0 1.42 0.0 0.71 0.35 205 1
10 0.0 0.0 0.0 0.0 0.0 0.0 23 0
11 0.48 0.0 0.0 0.0 0.48 0.0 37 0
12 0.12 0.0 0.25 0.0 0.0 0.0 491 0
13 0.08 0.08 0.25 0.2 0.0 0.25 807 0
14 0.0 0.0 0.0 0.0 0.0 0.0 38 0
15 0.24 0.0 0.12 0.0 0.0 0.12 227 0
16 0.0 0.0 0.0 0.0 0.75 0.0 77 0
17 0.1 0.0 0.21 0.0 0.0 0.0 571 0
18 0.51 0.0 0.0 0.0 0.0 0.0 74 0
19 0.3 0.0 0.15 0.0 0.0 0.15 155 0

我想从以前的数据集中获取数据透视表,其中列(make、address all、3d、our、over、length_total)将由 y 列处理其平均值。下表是预期结果:

                    y   
1 0
make 0.048 0.183
address 0.173 0.008
all 0.509 0.098
3d 0.01 0.02
our 0.482 0.123
over 0.139 0.052
length_total 626.7 250

是否可以通过pandas.data对象中的pivot_table方法得到想要的结果?如果是这样,怎么办?

有更有效的方法吗?

最佳答案

有些人喜欢使用 stackunstack,但我更喜欢好的 ol' pd.melt “展平”或“反转”框架:

>>> df_m = pd.melt(df, id_vars="y")
>>> df_m.pivot_table(index="variable", columns="y")
value
y 0 1
variable
3d 0.020 0.010
address 0.008 0.173
all 0.098 0.509
length_total 250.000 626.700
make 0.183 0.048
our 0.123 0.482
over 0.052 0.139

(如果您想将原始列顺序保留为新的行顺序,可以使用 .loc 对此进行索引,例如 df2.loc[df.columns]。 dropna())。

<小时/>

Melting 进行扁平化,并将 y 保留为列,将旧列名称作为名为 "variable" 的新列(如果您愿意,可以更改它) ):

>>> pd.melt(df, id_vars="y").head()
y variable value
0 1 make 0.00
1 1 make 0.21
2 1 make 0.06
3 1 make 0.15
4 1 make 0.06

之后我们可以像平常一样调用pivot_table

关于python - 拥有以 pandas 数据集列作为行的数据透视表的有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27624926/

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