小编SCo*_*ool的帖子

如何将一个pandas分成多个groupby?

我有一个交易和客户社交群体的数据框:

print(df.sample(10))


           Shop  Transaction_value Social Group
7           KFC                  7         Rich
22  Burger King                342         Rich
19  Burger King                  6         Rich
5           KFC                  2         Poor
14    McDonalds                245         Rich
2           KFC                  3         Poor
16    McDonalds                 56         Poor
6           KFC                  6         Poor
20  Burger King                 23         Poor
8           KFC                  5         Poor
Run Code Online (Sandbox Code Playgroud)

我做了一个 groupby,它告诉我每个商店最常见的社交群体:

(df.groupby(['Shop', 'Social Group'])['Transaction_value'].count())

Shop         Social Group
Burger King  Poor            7
             Rich            3
KFC          Poor            6
             Rich            3
McDonalds    Poor            3
             Rich            6
Run Code Online (Sandbox Code Playgroud)

我想将上面的数字除以value_counts()每个社会群体的数字:

df['Social Group'].value_counts()

Poor    16 …
Run Code Online (Sandbox Code Playgroud)

python pandas

4
推荐指数
1
解决办法
39
查看次数

如何避免 applymap() 中出现 NaN?

我正在尝试执行一个简单的操作,将数据帧转换为标题大小写。

有一些 NaN 会导致错误,所以我想通过str.title()仅应用它来避免它们not null

然而我得到了invalid syntax

df= df.applymap(lambda x: x.title() if pd.notnull(x))
                                                                    ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

另一种尝试:

df= df.applymap(lambda x: x.title() if not pd.isnull(x))

SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

python pandas

2
推荐指数
1
解决办法
3037
查看次数

如何按列名称切片数据框的多个部分?

如何获得第一列,然后添加另一个切片?

例如:

import pandas as pd
df = pd.DataFrame(pd.np.random.rand(6,6), columns = list('abcdef'))

          a         b         c         d         e         f
0  0.147163  0.710360  0.069732  0.180949  0.694066  0.639505
1  0.771643  0.094805  0.371702  0.177538  0.089168  0.420331
2  0.431394  0.790537  0.378049  0.402930  0.350409  0.827950
3  0.421411  0.451595  0.703630  0.469526  0.612122  0.076728
4  0.854117  0.302925  0.664647  0.664098  0.959504  0.637122
5  0.659791  0.525526  0.007151  0.448761  0.738571  0.349142
Run Code Online (Sandbox Code Playgroud)

我正在尝试获取专栏a,以及之后的所有专栏c

这给我只是列c,d,e,f

df.loc[:'a', 'c':]
Run Code Online (Sandbox Code Playgroud)

这根本不起作用:

df.loc['a':'a', 'c':]
Run Code Online (Sandbox Code Playgroud)

我做了几次尝试,但它们只是随机猜测,我确实无法在线找到解决方案。

注意:我正在处理一个巨大的真实数据框,因此写像这样的单个列名将是不切实际的 df.loc[:,['a','c','d','e','f]]

python pandas

2
推荐指数
2
解决办法
42
查看次数

如何使用 groupby 计算平均每周支出,每周是周一到周日?

我有一个包含购买金额和日期的客户数据框。在这种情况下,我有两个客户,A并且B

df1 = pd.DataFrame(index=pd.date_range('2015-04-24', periods = 50)).assign(purchase=[x for x in range(51,101)])
df2 = pd.DataFrame(index=pd.date_range('2015-04-28', periods = 50)).assign(purchase=[x for x in range(0,50)])

df3 = pd.concat([df1,df2], keys=['A','B'])

df3 = df3.rename_axis(['user','date']).reset_index()
print(df3.head())

  user       date  purchase
0    A 2015-04-24        51
1    A 2015-04-25        52
2    A 2015-04-26        53
3    A 2015-04-27        54
4    A 2015-04-28        55
Run Code Online (Sandbox Code Playgroud)

我只想知道用户的平均每周支出,一周是从周一到周日。预期结果:

  user       average_weekly_spend 
0    A       51
1    B       60
Run Code Online (Sandbox Code Playgroud)

但是我不知道如何将其设置为周一至周日。现在我正在使用resample7D. 我认为,这意味着所有客户对一周都有不同的定义。我相信从第一次购买开始需要 7 天,依此类推。因此,每个客户都有不同的开始日期。

df3.groupby('user').apply(lambda x: x.resample('7D', on='date').mean()).groupby('user')['purchase'].mean()


user
A    78.125 …
Run Code Online (Sandbox Code Playgroud)

python pandas

2
推荐指数
1
解决办法
180
查看次数

获取不在特定商店购物的客户列表

假设我有一个交易和客户的数据框:

df = pd.DataFrame({'shop': pd.Series(['McDonalds', 'McDonalds', 'McDonalds', 'McDonalds', 'Burger King', 'Burger King', 'Burger King', 'Burger King', 'Burger King', 'Trump Golf Course', 'Trump Golf Course', 'Trump Golf Course', 'Trump Golf Course', 'Trump Golf Course', 'Trump Golf Course'],dtype='object',index=pd.RangeIndex(start=0, stop=15, step=1)), 'Customer': pd.Series(['John Ryan', 'Jim Bob', 'Mary Ryan', 'Michael Patric', 'John Ryan', 'Jim Bob', 'Mary Ryan', 'Sean Connery', 'Brad Pitt', 'John Ryan', 'John Ryan', 'Michael Patric', 'Mary Ryan', 'John Ryan', 'Jim Bob'],dtype='object',index=pd.RangeIndex(start=0, stop=15, step=1)), 'Customer ID': pd.Series([1, 2, 3, 4, 1, 2, 3, …
Run Code Online (Sandbox Code Playgroud)

python pandas

1
推荐指数
1
解决办法
61
查看次数

标签 统计

pandas ×5

python ×5