用其他列的所有数据绘制一列中出现最多的(n)个值

2024-05-14 22:02:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我在来自sql查询的熊猫数据框中有以下数据:

      latin_brands   group phone_brand_chinese_match only_latin_brands
0           xiaomi  M32-38                        小米            xiaomi
1           xiaomi  M32-38                        小米            xiaomi
2           xiaomi  M32-38                        小米            xiaomi
3           xiaomi  M29-31                        小米            xiaomi
4           xiaomi  M29-31                        小米            xiaomi
5             None  F24-26                      OPPO              OPPO
6          coolpad  M32-38                        酷派           coolpad
7           xiaomi  M32-38                        小米            xiaomi
8             None  M32-38                      vivo              vivo
9          samsung  F33-42                        三星           samsung
10          huawei  M29-31                        华为            huawei
11          huawei  F33-42                        华为            huawei
12         samsung  F27-28                        三星           samsung
13          huawei  M32-38                        华为            huawei
14         aiyouni    M39+                       艾优尼           aiyouni
15          huawei  F27-28                        华为            huawei
16          xiaomi  M32-38                        小米            xiaomi
17          xiaomi  M32-38                        小米            xiaomi
18           meizu    M39+                        魅族             meizu
19          xiaomi  M32-38                        小米            xiaomi
20         samsung  F33-42                        三星           samsung
21          xiaomi  M23-26                        小米            xiaomi
22          huawei  M23-26                        华为            huawei
23         samsung  M27-28                        三星           samsung
24          xiaomi  M29-31                        小米            xiaomi
25         samsung  M32-38                        三星           samsung
26         samsung  M32-38                        三星           samsung
27         samsung  F33-42                        三星           samsung
28         samsung  M32-38                        三星           samsung
29         samsung  M32-38                        三星           samsung
...            ...     ...                       ...               ...
74809       huawei  M27-28                        华为            huawei
74810         None  M29-31                       TCL               TCL

我想映射两列并在折线图上画出来。 我的方法:

^{pr2}$

我想画出group和{}之间的关系。在

我怎样才能只绘制出最频繁出现的20个列及其groups?在


Tags: 数据nonegroup小米latinsamsungxiaomihuawei
2条回答

使用@AndyHayden start:

df[df.only_latin_brands.isin(df.groupby('only_latin_brands').size().nlargest(3).index)]\
  .groupby(['group','only_latin_brands']).size().unstack().fillna(0)\
  .plot(kind='line')

enter image description here

编辑以显示所有组:

^{pr2}$

enter image description here

可以使用groupby size,然后使用nlarget方法:

In [11]: df.groupby("only_latin_brands").size()
Out[11]:
only_latin_brands
OPPO        1
aiyouni     1
coolpad     1
huawei      5
meizu       1
samsung     9
vivo        1
xiaomi     11
dtype: int64

In [12]: df.groupby("only_latin_brands").size().nlargest(2)
Out[12]:
only_latin_brands
xiaomi     11
samsung     9
dtype: int64

然后使用isin筛选出这些行:

^{pr2}$

现在你可以做剧情了。。。在

相关问题 更多 >

    热门问题