首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用其他列的所有数据绘制列中出现最多的值。

用其他列的所有数据绘制列中出现最多的值。
EN

Stack Overflow用户
提问于 2017-11-14 22:18:40
回答 2查看 714关注 0票数 2

在Pandas DataFrame中,我从一个sql查询中获得了以下数据:

代码语言:javascript
运行
复制
      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

我想要映射两列,并把它画在一个线状图上。我的方法:

代码语言:javascript
运行
复制
phones = phones.groupby(['only_latin_brands', 'group']).size()
phones = phones.unstack()
phones = phones.fillna(0)
phones.head()
phones.plot(kind='line')
plt.show()

我想画出grouponly_latin_brands之间的关系。

如何才能只绘制最常见的20个only_latin_brands列和它们的group

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-14 23:05:42

使用@AndyHayden start:

代码语言:javascript
运行
复制
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')

编辑以显示所有组:

代码语言:javascript
运行
复制
df[df.only_latin_brands.isin(df.groupby('only_latin_brands').size().nlargest(3).index)]\
  .groupby(['group','only_latin_brands']).size().unstack()\
  .reindex(df.group.unique()).fillna(0).plot(kind='line')

票数 0
EN

Stack Overflow用户

发布于 2017-11-14 22:37:45

您可以使用groupby,然后使用then方法:

代码语言:javascript
运行
复制
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过滤掉以下行:

代码语言:javascript
运行
复制
In [13]: df[df["only_latin_brands"].isin(df.groupby("only_latin_brands").size().nlargest(2).index)]
Out[13]:
   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
7        xiaomi  M32-38                        小米            xiaomi
9       samsung  F33-42                        三星           samsung
12      samsung  F27-28                        三星           samsung
16       xiaomi  M32-38                        小米            xiaomi
17       xiaomi  M32-38                        小米            xiaomi
19       xiaomi  M32-38                        小米            xiaomi
20      samsung  F33-42                        三星           samsung
21       xiaomi  M23-26                        小米            xiaomi
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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47296180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档