我在sql查询的Pandas DataFrame中有以下数据:
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
我想映射两列并在折线图上绘制它。 我的方法:
phones = phones.groupby(['only_latin_brands', 'group']).size()
phones = phones.unstack()
phones = phones.fillna(0)
phones.head()
phones.plot(kind='line')
plt.show()
我想绘制group
和only_latin_brands
之间的关系。
如何仅使用only_latin_brands
s绘制最常出现的20 group
列?
答案 0 :(得分:1)
您可以使用groupby大小,然后使用nlargest方法:
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过滤掉那些行:
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 :(得分:0)