Как посчитать вхождение каждого уникального значения в панды
У меня есть большой пандас dataframe, я хотел бы подсчитать вхождение каждого уникального значения в него, я стараюсь следовать, но это занимает много времени и использования памяти. Как я могу сделать это питонским способом?
pack=[]
for index,row in packets.iterrows ():
pack.extend(pd.Series(row).dropna().values.tolist())
unique, count= np.unique(pack, return_counts=True)
counts= np.asarray((unique, count))
1 ответ
Решение
Похоже, вы хотите вычислить значения значений для всех столбцов. Вы можете сгладить его в серии, сбросить NaNs и позвонить value_counts
, Вот образец -
df
a b
0 1.0 NaN
1 1.0 NaN
2 3.0 3.0
3 NaN 4.0
4 5.0 NaN
5 NaN 4.0
6 NaN 5.0
pd.Series(df.values.ravel()).dropna().value_counts()
5.0 2
4.0 2
3.0 2
1.0 2
dtype: int64
Другой метод с np.unique
-
u, c = np.unique(pd.Series(df.values.ravel()).dropna().values, return_counts=True)
pd.Series(c, index=u)
1.0 2
3.0 2
4.0 2
5.0 2
dtype: int64
Обратите внимание, что первый метод сортирует результаты по убыванию, а последний - нет.