Как извлечь определенные значения из столбца и указать их количество в столбце
Дан датасет, вот 2 колонки из него:
import pandas as pd
df = pd.DataFrame({'Name':['020245D5Z02255D0', '92014947Q6252900', '02025727Y05255D0', '32024752804301S0', '32804202475301S0', '34301202475280S0'], 'Size': ['4XL', '80B', '25-27', 'S/M', 'M', 'L']})
print(df)
Мне нужно извлечь только определенные строки в столбце и построить график на основании их количества. Извлечь нужно только ('M', 'L') - посчитать их количество и построить график.
На выходе:
Size Count
0 M 10
1 L 50
- Я делала так:
Sales = df.groupby(['Size'])['Name'].count()
Sales.plot()
но тогда выводит абсолютно все значения.
- Затем так:
df.groupby('Size').apply(lambda x: x.drop('Size', axis=1).drop_duplicates().shape[0])
pandas.core.series.Series
Но тогда получается тип Series со всеми значениями и я не знаю как построить график.
- Потом так:
df.groupby('Size').apply(lambda x: x.drop('Size', axis=1).drop_duplicates().shape[0]).to_frame('counts')
Получается фрейм с одной колонкой Name: counts, dtype: int64 и тоже со всеми значениями, и как тогда построить график.
- Если делать так:
size_M = df[df['Size'] == 'M'].count()
size_L = df[['Size'] == 'L']
Я не знаю как это применить и выбрать из датафрейма эти значения.
Sales.isin(['M', 'L'])Если изъять все значения, получаю булевский датафрейм и тоже не знаю как это применить.
Ответы (2 шт):
Автор решения: strawdog
→ Ссылка
df[df.loc[:,"Size"].isin(["M", "L"])]
получите:
Name Size
4 32804202475301S0 M
5 34301202475280S0 L
еще конкретнее:
res = df[df.loc[:,"Size"].isin(["M", "L"])]["Size"].value_counts()
print(res)
L 1
M 1
Автор решения: MaxU
→ Ссылка
альтернативные варианты решения:
res = df["Size"].value_counts().loc[["M", "L"]]
или
res = df.query("Size in ['M', 'L']")["Size"].value_counts()
In [228]: res
Out[228]:
M 1
L 1
Name: Size, dtype: int64