gpt4 book ai didi

python - Pandas 分组并计算百分比,同时保持 NaN

转载 作者:太空宇宙 更新时间:2023-11-04 00:31:27 26 4
gpt4 key购买 nike

我有一个带有订单 ID 和 channel 的 df。

all_data_filtered = all_data[["order_id", "user_channel"]]
all_data_filtered.head(100).to_dict()

将其作为字典提供给某人,以便能够使用 pd.DataFrame(dict_bellow) 轻松复制它:

    {'order_id': {0: nan,
1: nan,
2: nan,
3: nan,
4: nan,
5: nan,
6: nan,
7: nan,
8: nan,
9: nan,
10: nan,
11: nan,
12: nan,
13: 7026578.0,
14: 7026584.0,
15: 7026890.0,
16: 7026959.0,
17: 7027028.0,
18: 7027109.0,
19: 7027175.0,
20: 7027193.0,
21: nan,
22: nan,
23: nan,
24: nan,
25: nan,
26: nan,
27: nan,
28: nan,
29: nan,
30: nan,
31: 7026635.0,
32: 7026842.0,
33: nan,
34: nan,
35: nan,
36: nan,
37: nan,
38: nan,
39: nan,
40: nan,
41: nan,
42: nan,
43: nan,
44: nan,
45: 7026923.0,
46: nan,
47: nan,
48: nan,
49: nan,
50: nan,
51: nan,
52: nan,
53: nan,
54: nan,
55: nan,
56: 7026662.0,
57: 7026677.0,
58: nan,
59: nan,
60: 7722035.0,
61: nan,
62: 7026686.0,
63: 7026695.0,
64: nan,
65: 7028045.0,
66: 7026698.0,
67: 7026701.0,
68: 7026740.0,
69: 7026743.0,
70: 7033025.0,
71: nan,
72: nan,
73: nan,
74: nan,
75: 7584236.0,
76: 7584395.0,
77: nan,
78: nan,
79: nan,
80: nan,
81: nan,
82: nan,
83: nan,
84: nan,
85: 7026761.0,
86: 7027055.0,
87: 7026755.0,
88: 7026758.0,
89: 7027709.0,
90: nan,
91: nan,
92: nan,
93: nan,
94: nan,
95: 7026764.0,
96: 7026824.0,
97: 7033052.0,
98: 7033112.0,
99: 7033349.0},
'user_channel': {0: 1,
1: 2,
2: 3,
3: 1,
4: 3,
5: 3,
6: 1,
7: 3,
8: 4,
9: 1,
10: 4,
11: 2,
12: 3,
13: 3,
14: 3,
15: 3,
16: 3,
17: 3,
18: 3,
19: 3,
20: 3,
21: 3,
22: 1,
23: 1,
24: 3,
25: 1,
26: 1,
27: 1,
28: 1,
29: 3,
30: 1,
31: 3,
32: 3,
33: 3,
34: 1,
35: 3,
36: 3,
37: 2,
38: 2,
39: 3,
40: 3,
41: 1,
42: 1,
43: 2,
44: 5,
45: 5,
46: 3,
47: 2,
48: 3,
49: 3,
50: 3,
51: 1,
52: 1,
53: 3,
54: 3,
55: 3,
56: 3,
57: 3,
58: 1,
59: 1,
60: 6,
61: 3,
62: 3,
63: 3,
64: 3,
65: 3,
66: 4,
67: 4,
68: 4,
69: 4,
70: 4,
71: 3,
72: 3,
73: 1,
74: 1,
75: 3,
76: 3,
77: 3,
78: 3,
79: 3,
80: 1,
81: 3,
82: 3,
83: 4,
84: 3,
85: 3,
86: 3,
87: 4,
88: 4,
89: 4,
90: 1,
91: 3,
92: 3,
93: 5,
94: 3,
95: 3,
96: 3,
97: 3,
98: 3,
99: 3}}

那些是个人订单。所以我试着将它们分组并计算它们:

all_data_filtered.groupby(["user_channel"]).agg(['count'])

它给出了这个并且很有用,因为我知道通过 channel 3 收到的订单最多:

               order_id
count
user_channel
1 391
2 211
3 1805
4 425
5 102
6 124
7 159

但这些排除了所有 NaN(通过 channel 访问但未提交订单的用户)。所以最后我可以获得一些百分比:90% 的用户通过 channel 3 来了,其中 10% 的用户下了订单,占所有订单的 40%。如何包含 NaN 以便计算百分比?

最佳答案

尝试使用 .agg('size')。

df.groupby('user_channel').agg('size')

user_channel
1 22
2 6
3 57
4 11
5 3
6 1
dtype: int64

对比

df.groupby('user_channel').agg('count')
order_id

user_channel
1 0
2 0
3 24
4 8
5 1
6 1

关于python - Pandas 分组并计算百分比,同时保持 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45717553/

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