python에서 DataFrame의 각 열에 0이 아닌 값 계산
첫 번째 열이 다음과 같은 python-pandas-DataFrame을 가지고 있습니다."user_id"
나머지 열은 태그()입니다."Tag_0"
로."Tag_122"
).
저는 다음과 같은 형식의 데이터를 가지고 있습니다.
UserId Tag_0 Tag_1
7867688 0 5
7867688 0 3
7867688 3 0
7867688 3.5 3.5
7867688 4 4
7867688 3.5 0
나의 목표는 성취하는 것입니다.Sum(Tag)/Count(NonZero(Tags))
각 user_id에 대해
df.groupby('user_id').sum()
, 나를 줍니다sum(tag)
, 그러나 0이 아닌 값을 세는 것에 대해서는 전혀 모릅니다.
그것이 가능한가요?Sum(Tag)/Count(NonZero(Tags))
한 명령으로?
MySQL에서는 다음과 같이 달성할 수 있습니다.
select user_id, sum(tag)/count(nullif(tag,0)) from table group by 1
어떤 도움이라도 감사히 받겠습니다.
각 열의 0이 아닌 개수를 얻는 방법 중 가장 좋아하는 것은
df.astype(bool).sum(axis=0)
각 행에서 0이 아닌 개수를 사용합니다.
df.astype(bool).sum(axis=1)
(Skulas 덕분에)
만약 당신의 df에 nan이 있다면 당신은 먼저 0을 만들어야 합니다. 그렇지 않으면 1로 계산됩니다.
df.fillna(0).astype(bool).sum(axis=1)
(C경님께 감사드립니다)
사용하지 않는 이유np.count_nonzero
?
- 전체 데이터 프레임의 0이 아닌 개수를 계산하려면,
np.count_nonzero(df)
- 모든 행의 0이 아닌 개수를 세는 방법
np.count_nonzero(df, axis=0)
- 모든 열의 0이 아닌 개수를 세는 방법
np.count_nonzero(df, axis=1)
날짜에도 적용됩니다.
0이 아닌 값을 계산하려면 다음 작업을 수행합니다.(column!=0).sum()
,어디에column
원하는 데이터입니다.column != 0
부울 배열을 반환하고 True는 1이고 False는 0이므로 이를 합하면 조건과 일치하는 요소의 수를 얻을 수 있습니다.
그래서 당신이 원하는 결과를 얻기 위해서, 하시오.
df.groupby('user_id').apply(lambda column: column.sum()/(column != 0).sum())
이 질문이 오래된 것은 알지만 OP의 목표는 질문 제목과 다른 것 같습니다.
각 user_id에 대한 합계(Tag)/카운트(NonZero(Tags))를 달성하는 것이 목표입니다...
OP의 목적을 위해 0을 NaN으로 대체하여 사용할 수 있습니다.groupby
+mean
(이것은 효과가 있습니다.mean
기본적으로 NaN 생략):
out = df.replace(0, np.nan).groupby('UserId', as_index=False).mean()
출력:
UserId Tag_0 Tag_1
0 7867688 3.5 3.875
df의 각 열에서 0이 아닌 값의 개수를 구하는 간단한 목록 이해:
[np.count_nonzero(df[x]) for x in df.columns]
언급URL : https://stackoverflow.com/questions/26053849/counting-non-zero-values-in-each-column-of-a-dataframe-in-python
'programing' 카테고리의 다른 글
"MariaDB는 Microsoft SQL 및 Oracle을 MariaDB로 마이그레이션하기 위해 많은 클라이언트와 협력한다"는 다음과 같습니다. (0) | 2023.09.17 |
---|---|
Best Practice(PHP/MySQL) 소프트 삭제 (0) | 2023.09.17 |
'xmlns' 및 'version'과 같은 SVG 매개 변수가 필요합니까? (0) | 2023.09.17 |
스파크 스칼라에서 데이터 프레임의 열 이름 바꾸기 (0) | 2023.09.17 |
mysql에서 월 일 수를 알아보는 방법 (0) | 2023.09.17 |