Pandas: r에 해당하는 mutate() 함수를 사용하는 방법


R 프로그래밍 언어에서는 dplyr 패키지의 mutate() 함수를 사용하여 기존 열에서 계산된 데이터 프레임에 새 열을 빠르게 추가할 수 있습니다.

예를 들어 다음 코드는 R에서 특정 열의 평균 값을 계산하고 해당 값을 데이터 프레임의 새 열로 추가하는 방법을 보여줍니다.

 library (dplyr)

#create data frame
df <- data. frame (team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'),
                 points=c(30, 22, 19, 14, 14, 11, 20, 28))

#add new column that shows mean points by team
df <- df %>%
      group_by(team) %>%
      mutate(mean_points = mean(points))

#view updated data frame
df

  team points mean_points           
1 to 30 21.2
2 A 22 21.2
3 A 19 21.2
4 A 14 21.2
5 B 14 18.2
6 B 11 18.2
7 B 20 18.2
8 B 28 18.2

pandas의 mutate() 함수에 해당하는 것은 변환() 함수입니다.

다음 예에서는 이 기능을 실제로 사용하는 방법을 보여줍니다.

예: 팬더에서 변형()을 사용하여 R에서 mutate()를 복제합니다.

서로 다른 팀의 농구 선수들이 득점한 점수를 보여주는 다음과 같은 팬더 DataFrame이 있다고 가정합니다.

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' points ': [30, 22, 19, 14, 14, 11, 20, 28]})

#view DataFrame
print (df)

  team points
0 to 30
1 to 22
2 to 19
3 to 14
4 B 14
5 B 11
6 B 20
7 B 28

변환() 함수를 사용하여 각 팀이 획득한 평균 점수를 표시하는 Mean_points 라는 새 열을 추가할 수 있습니다.

 #add new column to DataFrame that shows mean points by team
df[' mean_points '] = df. groupby (' team ')[' points ']. transform (' mean ')

#view updated DataFrame
print (df)

  team points mean_points
0 to 30 21.25
1 to 22 21.25
2 A 19 21.25
3 to 14 21.25
4 B 14 18.25
5 B 11 18.25
6 B 20 18.25
7 B 28 18.25

A팀 선수의 평균 점수는 21.25 , B팀 선수의 평균 점수는 18.25 이므로 이 값은 새 열의 각 선수에게 적절하게 할당되었습니다.

이는 소개 예제에서 mutate() 함수를 사용하여 얻은 결과와 일치합니다.

람다를 사용하여 변환() 함수에서 사용자 정의 계산을 수행할 수도 있다는 점은 주목할 가치가 있습니다.

예를 들어 다음 코드는 람다를 사용하여 해당 팀의 각 플레이어가 득점한 총점의 백분율을 계산하는 방법을 보여줍니다.

 #create new column called percent_of_points
df[' percent_of_points '] = df. groupby (' team ')[' points ']. transform ( lambda x:x/ x.sum ())

#view updated DataFrame
print (df)

  team points percent_of_points
0 A 30 0.352941
1 A 22 0.258824
2 A 19 0.223529
3 A 14 0.164706
4 B 14 0.191781
5 B 11 0.150685
6 B 20 0.273973
7 B 28 0.383562

결과를 해석하는 방법은 다음과 같습니다.

  • A팀의 첫 번째 선수는 A팀 선수 중 총점 85점 중 30점을 획득했습니다. 따라서 총점에서 그의 득점 비율은 30/85 = 0.352941 입니다.
  • A팀의 두 번째 선수는 A팀 선수 중 총점 85점 중 22점을 기록했습니다. 따라서 총득점 비율은 22/85 = 0.258824 입니다.

등등.

우리가 원하는 사용자 정의 계산을 수행하기 위해 변환() 함수의 람다 인수를 사용할 수 있습니다.

추가 리소스

다음 튜토리얼에서는 Pandas에서 다른 일반적인 작업을 수행하는 방법을 설명합니다.

Pandas에서 GroupBy 합계를 수행하는 방법
Pandas에서 Groupby 및 Plot을 사용하는 방법
Pandas에서 GroupBy를 사용하여 고유한 값을 계산하는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다