[英]Groupby with multiple columns and then create plot for top N
我有一個數據集,我使用 2 列進行分組。 現在我想 plot 基於 1 列的前 N 圖表。 為了更好地解釋它,下面是示例數據集。 該數據集是使用 groupby 從主數據集創建的
數據1 | 數據2 | 價值 |
---|---|---|
一個 | X | 6 |
一個 | 是的 | 7 |
一個 | z | 8 |
乙 | 是的 | 3 |
乙 | z | 4 |
乙 | 你 | 5 |
C | X | 6 |
C | 是的 | 7 |
C | v | 8 |
D | v | 4 |
D | 是的 | 5 |
D | z | 7 |
乙 | 噸 | 8 |
乙 | 你 | 7 |
乙 | X | 6 |
F | s | 4 |
F | s | 5 |
F | r | 6 |
現在我只想要前 3 個數據 1 來創建新數據集和 plot seaborn 圖。 下面是願望結果。
數據1 | 數據2 | 價值 |
---|---|---|
一個 | X | 6 |
一個 | 是的 | 7 |
一個 | z | 8 |
乙 | 是的 | 3 |
乙 | z | 4 |
乙 | 你 | 5 |
C | X | 6 |
C | 是的 | 7 |
C | v | 8 |
IIUC,你要保留前 N 組 Data1 嗎?
您可以使用unique
並對其進行切片以按順序獲取前 N 組,然后使用boolean 索引:
N = 3
out = df[df['Data1'].isin(df['Data1'].unique()[:N])]
在groupby
上使用itertools.islice
和pandas.concat
的其他選項(效率較低):
from itertools import islice
out = pd.concat([g for _,g in islice(df.groupby('Data1'), 3)])
output:
Data1 Data2 Value
0 A x 6
1 A y 7
2 A z 8
3 B y 3
4 B z 4
5 B u 5
6 C x 6
7 C y 7
8 C v 8
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.