相关疑难解决方法(0)

分组并找到前n个value_counts pandas

我有一个出租车数据的数据框,有两列,如下所示:

Neighborhood    Borough        Time
Midtown         Manhattan      X
Melrose         Bronx          Y
Grant City      Staten Island  Z
Midtown         Manhattan      A
Lincoln Square  Manhattan      B
Run Code Online (Sandbox Code Playgroud)

基本上,每行代表该行政区附近的出租车.现在,我想在每个行政区找到前5个街区,拥有最多的皮卡.我试过这个:

df['Neighborhood'].groupby(df['Borough']).value_counts()
Run Code Online (Sandbox Code Playgroud)

这给了我这样的东西:

borough                          
Bronx          High  Bridge          3424
               Mott Haven            2515
               Concourse Village     1443
               Port Morris           1153
               Melrose                492
               North Riverdale        463
               Eastchester            434
               Concourse              395
               Fordham                252
               Wakefield              214
               Kingsbridge            212
               Mount Hope             200
               Parkchester            191
......

Staten Island  Castleton Corners        4
               Dongan Hills             4
               Eltingville              4
               Graniteville             4
               Great Kills              4
               Castleton                3
               Woodrow                  1
Run Code Online (Sandbox Code Playgroud)

如何过滤它以便我只获得前5个?我知道有几个问题有类似的标题,但它们对我的情况没有帮助.

python dataframe pandas

24
推荐指数
4
解决办法
3万
查看次数

Pandas Groupby Agg功能不会减少

我正在使用我已经在我的工作中使用了很长时间的聚合函数.这个想法是,如果系列传递给函数的长度为1(即该组只有一个观察值),则返回该观察值.如果传递的系列的长度大于1,则在列表中返回观察结果.

这对某些人来说可能看起来很奇怪,但这不是X,Y问题,我有充分的理由想要这样做与这个问题无关.

这是我一直在使用的功能:

def MakeList(x):
    """ This function is used to aggregate data that needs to be kept distinc within multi day 
        observations for later use and transformation. It makes a list of the data and if the list is of length 1
        then there is only one line/day observation in that group so the single element of the list is returned. 
        If the list is longer than one then there are multiple line/day observations and the list itself is …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

按列分组以查找另一列中最频繁的值?

按列分组以在另一列中查找最频繁的值。例子:

import pandas as pd
d = {'col1': ['green','green','green','blue','blue','blue'],'col2': ['gx','gx','ow','nb','nb','mj']}
df = pd.DataFrame(data=d)
df
Run Code Online (Sandbox Code Playgroud)

给出:

col1   col2
green  gx
green  gx
green  ow
blue   nb
blue   nb
blue   xv
Run Code Online (Sandbox Code Playgroud)

结果:

因为green拥有gxblue拥有nb

python group-by pandas pandas-groupby

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

根据最高发生值组合Pandas数据帧

我有一个包含2列的pandas数据框(下面的代码段).我正在尝试使用City列来推断Borough(您会注意到一些需要替换的Unspecified值).要做到这一点,我试图为每个城市显示最高的自治市镇并输出到一个字典,其中关键是城市,价值将是该城市最高的自治市镇.

City        Borough

Brooklyn    Brooklyn
Astoria     Queens
Astoria     Unspecified
Ridgewood   Unspecified
Ridgewood   Queens
Run Code Online (Sandbox Code Playgroud)

因此,如果发现里奇伍德与皇后队100次配对,布鲁克林4次与曼哈顿1次配对,那么这对将是里奇伍德:皇后区.

到目前为止,我已经尝试过这段代码:

specified = data[['Borough','City']][data['Borough']!= 'Unspecified']
paired = specified.Borough.groupby(specified.City).max()
Run Code Online (Sandbox Code Playgroud)

乍一看,这似乎是正确的输出,但仔细检查后,输出完全不正确.有任何想法吗?

编辑:

试过下面的建议:paired = specified.groupby('City').agg(lambda x:stats.mode(x ['Borough'])[0])

我注意到一些自治市镇被截断,如下图所示:

paired.Borough.value_counts()

#[Out]# QUEENS           58
#[Out]# MANHATTAN         7
#[Out]# STATEN ISLAND     4
#[Out]# BRONX             4
#[Out]# BROOKLYN          3
#[Out]# MANHATTA          2
#[Out]# STATE             1
#[Out]# QUEEN             1
#[Out]# MANHA             1
#[Out]# BROOK             1
Run Code Online (Sandbox Code Playgroud)

当然我可以手动替换截断的单词,但我很想知道原因是什么?

PS - 这是DF指定的FYI的输出:

specified
#[Out]# <class 'pandas.core.frame.DataFrame'>
#[Out]# Int64Index: 719644 entries, 1 to 396225
#[Out]# Data columns: …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

Python:选择最常用的group by

如何在Python中获取每个标记最常出现的类别(模式)?

+------------------+----------+
| tag              | category |
+------------------+----------+
| automotive       |        8 |
| ba               |        8 |
| bamboo           |        8 |
| bamboo           |        8 |
| bamboo           |        8 |
| bamboo           |        8 |
| bamboo           |        8 |
| bamboo           |       10 |
| bamboo           |        8 |
| bamboo           |        9 |
| bamboo           |        8 |
| bamboo           |       10 |
| bamboo           |        8 |
| bamboo           |        9 |
| bamboo …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

从 groupby 中的列获取模式

我试图获得在GROUPBY对象中列的方式,但我发现了这个错误:incompatible index of inserted column with frame index

这是我得到这个的线路,我不知道如何解决它。任何帮助,将不胜感激。

dfBitSeq['KMeans'] = df.groupby('OnBitSeq')['KMeans'].apply(lambda x: x.mode())
Run Code Online (Sandbox Code Playgroud)

python pandas

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

Pandas:获取组中最多出现的字符串值

我有以下DataFrame:

item    response
1       A       
1       A       
1       B       
2       A       
2       A   
Run Code Online (Sandbox Code Playgroud)

我想添加一个对项目给出最多响应的列.这应该导致:

item    response  mostGivenResponse
1       A          A
1       A          A      
1       B          A       
2       C          C
2       C          C
Run Code Online (Sandbox Code Playgroud)

我试过这样的事情:

df["responseCount"] = df.groupby(["ItemCode", "Response"])["Response"].transform("count")

df["mostGivenResponse"] = df.groupby(['ItemCode'])['responseCount'].transform(max)
Run Code Online (Sandbox Code Playgroud)

但是,大多数的响应现在都是响应的计数,而不是响应本身.

python pandas

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

如何在python中按模式分组?

我试图通过使用下面的 Pandas 数据框根据模式查找该项目属于哪个类别

数据

   ITEM          CATEGORY
1  red saree     actual
2  red saree     actual
3  glass         lbh
4  glass         lbh
5  red saree     actual
6  red saree     lbh
7  glass         actual
8  bottle        actual
9  bottle        actual
Run Code Online (Sandbox Code Playgroud)

我想弄清楚的是通过获取我想根据类别模式为每个独特项目分配一个类别的独特项目。

预期输出:

  ITEM          CATEGORY
1 red saree     actual
2 glass         lbh
3 bottle        actual
Run Code Online (Sandbox Code Playgroud)

请告诉我如何在python中查找,提前致谢

试过:

import pandas as pd
from scipy.stats import mode
data_x = map(mode, data['category'])
Run Code Online (Sandbox Code Playgroud)

我知道它甚至与此无关,但无法找到如何为此编写代码

python scipy pandas

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

用另一列的条件模式填充列

给定以下列表,我想以“颜色”列的模式(以“类型”和“大小”为条件)填充“颜色猜测”列,并忽略NULL,#N / A等。

例如,“小型猫”最常用的颜色是什么,“中型狗”最常用的颜色是什么,等等。

Type  Size    Color   Color Guess
Cat   small   brown   
Dog   small   black   
Dog   large   black   
Cat   medium  white   
Cat   medium  #N/A    
Dog   large   brown   
Cat   large   white   
Cat   large   #N/A    
Dog   large   brown   
Dog   medium  #N/A    
Cat   small   #N/A    
Dog   small   white   
Dog   small   black   
Dog   small   brown   
Dog   medium  white   
Dog   medium  #N/A    
Cat   large   brown   
Dog   small   white   
Dog   large   #N/A
Run Code Online (Sandbox Code Playgroud)

python pandas

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

标签 统计

pandas ×9

python ×9

dataframe ×1

group-by ×1

pandas-groupby ×1

scipy ×1