2 votes

Comment sélectionner une catégorie spécifique de bacs en python ?

J'ai une liste de nombres que j'ai séparés en bacs en utilisant pandas.cut(). Comment puis-je sélectionner une catégorie parmi les poubelles ?

manhattanBedrmsPrice.head()

0      859
5     1055
9      615
11     663
13    1317
Name: Price Value, dtype: int64

bins = [400,600,800,1000,1200, 1400,1600,1800,2000,2200,2400,2600,2800,3000]

manPriceCategories = pd.cut(manhattanBedrmsPrice, bins)

J'obtiens les catégories suivantes :

Categories (13, interval[int64]): [(400, 600] < (600, 800] < (800, 1000] < (1000, 1200] ... (2200, 2400] < (2400, 2600] < (2600, 2800] < (2800, 3000]]

Comment puis-je sélectionner une catégorie spécifique ?

1voto

W-B Points 94428

Dans votre cas

manPriceCategories.loc[manPriceCategories.isin([pd.Interval(600,800)])]

Ou en utilisant les codes des données catégorielles

manPriceCategories[manPriceCategories.cat.codes==1]
1    (600, 800]
2    (600, 800]
Name: 1, dtype: category

1voto

Alexander Points 49390

Vous pouvez assigner les catégories à une variable (par ex. cats ), puis utilisez l'indexation booléenne pour vérifier si les valeurs de votre série sont égales à la catégorie d'intérêt.

cats = manPriceCategories.cat.categories
>>> manPriceCategories.loc[manPriceCategories.eq(cats[1])]
9     (600, 800]
11    (600, 800]
Name: Price Value, dtype: category
Categories (13, interval[int64]): [(400, 600] < (600, 800] < (800, 1000] < (1000, 1200] ... (2200, 2400] < (2400, 2600] < (2600, 2800] < (2800, 3000]]
cats = manPriceCategories.cat.categories
cats = manPriceCategories.cat.categories

Vous pouvez utiliser la compréhension d'un dictionnaire pour énumérer vos catégories afin de connaître l'emplacement de leur index (par ex. 1 pour (600, 800] ci-dessus).

>>> {n: cat for n, cat in enumerate(cats)}
{0: Interval(400, 600, closed='right'),
 1: Interval(600, 800, closed='right'),
 2: Interval(800, 1000, closed='right'),
 3: Interval(1000, 1200, closed='right'),
 4: Interval(1200, 1400, closed='right'),
 5: Interval(1400, 1600, closed='right'),
 6: Interval(1600, 1800, closed='right'),
 7: Interval(1800, 2000, closed='right'),
 8: Interval(2000, 2200, closed='right'),
 9: Interval(2200, 2400, closed='right'),
 10: Interval(2400, 2600, closed='right'),
 11: Interval(2600, 2800, closed='right'),
 12: Interval(2800, 3000, closed='right')}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X