Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- PyQt5
- Linux
- flutter
- 다이어트
- pandas
- MS-SQL
- ubuntu
- ASP
- IOS
- 라즈베리파이
- PyQt
- 유니티
- 함수
- tensorflow
- python
- swift
- Unity
- PER
- Excel
- MySQL
- GIT
- port
- sqlite
- mssql
- urllib
- javascript
- 날짜
- node.js
- 맛집
- 리눅스
Archives
아미(아름다운미소)
Pandas를 사용하여 `groupby`로 `a`, `b`, `c`, `d` 컬럼을 기준으로 그룹화한 후, `d` 컬럼이 모두 null이면 1/해당row수를 소수점5자리에서 반올림하기 본문
랭귀지/pandas
Pandas를 사용하여 `groupby`로 `a`, `b`, `c`, `d` 컬럼을 기준으로 그룹화한 후, `d` 컬럼이 모두 null이면 1/해당row수를 소수점5자리에서 반올림하기
유키공 2024. 8. 22. 14:17import pandas as pd
# 예시 데이터프레임 생성
data = {
'a': ['x', 'x', 'y', 'y', 'x'],
'b': [1, 1, 2, 2, 1],
'c': ['foo', 'foo', 'bar', 'bar', 'foo'],
'd': [10, 10, 20, 20, 10],
'e': [5, 15, 10, 20, 25]
}
df = pd.DataFrame(data)
# 그룹화 후 e 컬럼의 합계와 행 수 계산
result = df.groupby(['a', 'b', 'c', 'd']).agg(
e_sum=('e', 'sum'),
row_count=('e', 'count')
).reset_index()
print(result)
import pandas as pd
# 예시 데이터프레임 생성
data = {
'a': ['A', 'A', 'B', 'B', 'C', 'C'],
'b': ['X', 'X', 'Y', 'Y', 'Z', 'Z'],
'c': ['M', 'M', 'N', 'N', 'O', 'O'],
'd': [None, None, 1, None, None, None] # None은 NaN으로 취급됨
}
df = pd.DataFrame(data)
# d 컬럼을 float으로 변환 (이 경우 None은 NaN으로 변환됨)
df['d'] = df['d'].astype(float)
# 그룹화하여 d 컬럼이 모두 null인 그룹 찾기
grouped = df.groupby(['a', 'b', 'c'])
# 각 그룹에 대해 d 컬럼이 모두 null인지 확인하고, 해당 그룹의 총 행 수에 대한 역수 계산
result = []
for name, group in grouped:
if group['d'].isnull().all():
total_rows = len(group)
inverse_value = round(1 / total_rows, 5) # 1/총 행 수 후 소수점 5자리에서 반올림
result.append({'group': name, 'inverse': inverse_value})
# 결과를 데이터프레임으로 변환
inverse_df = pd.DataFrame(result)
# 결과 확인
print(inverse_df)
import pandas as pd
import numpy as np
# 예시 데이터프레임 생성
data = {
'a': ['A', 'A', 'B', 'B', 'C', 'C'],
'b': ['X', 'X', 'Y', 'Y', 'Z', 'Z'],
'c': ['M', 'M', 'N', 'N', 'O', 'O'],
'd': [None, None, 1, None, None, None] # None은 NaN으로 취급됨
}
df = pd.DataFrame(data)
# d 컬럼을 float으로 변환 (이 경우 None은 NaN으로 변환됨)
df['d'] = df['d'].astype(float)
# 그룹화하여 d 컬럼이 모두 null인 그룹 찾기
null_groups = df.groupby(['a', 'b', 'c'])['d'].apply(lambda x: x.isnull().all())
# null인 그룹의 총 행 수를 계산
group_sizes = df.groupby(['a', 'b', 'c']).size()
# d가 모두 null인 그룹의 행 수에 대한 역수 계산 및 반올림
inverse_values = null_groups[null_groups].index.to_frame(index=False)
inverse_values['inverse'] = (1 / group_sizes[inverse_values.set_index(['a', 'b', 'c']).index]).round(5)
# 결과 확인
print(inverse_values)
import pandas as pd
import numpy as np
# 예시 데이터프레임 생성
data = {
'a': ['A', 'A', 'B', 'B', 'C', 'C'],
'b': ['X', 'X', 'Y', 'Y', 'Z', 'Z'],
'c': ['M', 'M', 'N', 'N', 'O', 'O'],
'd': [None, None, 1, None, None, None]
}
df = pd.DataFrame(data)
# 그룹화 및 d컬럼이 모두 null인 그룹 찾기
null_groups = df.groupby(['a', 'b', 'c'])['d'].apply(lambda x: x.isnull().all())
# null인 그룹의 행 수를 계산
group_sizes = df.groupby(['a', 'b', 'c']).size()
# d가 모두 null인 그룹의 행 수에 대한 역수 계산 및 반올림
inverse_values = null_groups[null_groups].index.to_frame(index=False)
inverse_values['inverse'] = (1 / group_sizes[inverse_values.set_index(['a', 'b', 'c']).index]).round(5)
# 결과 확인
print(inverse_values)
'랭귀지 > pandas' 카테고리의 다른 글
pandas a,b 값의 나눈값과 나머지를 구하고 나눈값이 음수이면 나머지를 음수로 양수면 나머지를 양수 (0) | 2024.08.23 |
---|---|
pandas sum,count,몫,나머지 구하기 (0) | 2024.08.22 |
문자열 `'TRUE'`인 경우 `b` 값을 `c` 컬럼에 복사 (0) | 2024.08.20 |
Pandas df 에서 a컬럼을 distinct 했을때 b컬럼이 true인 c값을 copy해서 b칼럼에 넣어주는예제 (0) | 2024.08.16 |
df a,b컬럼에을 groupby했을때 c가 모두 false일때 해당그룹의 d 알파벳이 가장빠른행에 c값을 true로 바꿔준다 (0) | 2024.08.16 |
Comments