- Series에 map 적용
Pandas에서 map() 함수는 Series에서 각 요소에 함수를 적용하여 결과를 반환하는 함수입니다. 이 함수는 일반적으로 Series의 각 요소에 대해 변환 함수를 적용하여 새로운 값을 생성하거나, 기존 값에 적용된 변환 함수를 수정하는 데 사용됩니다.
예를 들어, 다음과 같은 Series가 있다고 가정해 봅시다.
import pandas as pd
s = pd.Series(['apple', 'banana', 'cherry'])
s = s.map(len)
print(s)
"""
0 5
1 6
2 6
dtype: int64"""
위의 코드는 Series의 모든 요소에 대해 len() 함수를 적용하여 문자열 길이를 계산하고, 그 결과를 반환합니다. 이를 실행한 결과는 다음과 같습니다.
또한, map() 함수는 딕셔너리를 사용하여 특정 값에 대한 대체 값을 지정할 수도 있습니다. 예를 들어, 다음과 같은 Series가 있다고 가정해 봅시다.
import pandas as pd
s = pd.Series(['apple', 'banana', 'cherry'])
mapping = {'apple': '사과', 'banana': '바나나'}
s = s.map(mapping)
print(s)
0 사과
1 바나나
2 cherry
dtype: object
위의 코드는 딕셔너리를 사용하여 'apple'을 '사과'로, 'banana'를 '바나나'로 대체하고, 나머지 값은 그대로 두어 결과를 반환합니다.
replace 함수
Pandas의 replace() 함수는 DataFrame 또는 Series에서 특정 값을 다른 값으로 바꾸기 위해 사용됩니다. replace() 함수는 특정 값이나 패턴을 찾아서 대체할 수 있도록 해주므로, 데이터를 정리하거나 전처리할 때 매우 유용합니다.
replace() 함수는 세 가지 매개변수를 가지고 있습니다.
- to_replace : 바꾸고자 하는 값 또는 패턴을 지정합니다.
- value : to_replace 값이나 패턴을 대체할 값입니다.
- inplace : True로 설정하면 DataFrame의 값을 직접 변경할 수 있습니다.
import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3, 4, 5],
'B': ['a', 'b', 'c', 'd', 'e'],
'C': [1.0, 2.0, 3.0, 4.0, 5.0]})
이제 DataFrame에서 'a'를 'A'로 대체하고, 2를 20으로 대체하려면 다음과 같이 replace() 함수를 사용할 수 있습니다.
df.replace({'a': 'A', 2: 20}) #1번의 코드
#df.replace(TargetList, ConversionList, inplace)
#df.replace(['a',2],['A',20], inplace = True) #1번의 dictinary type의 코드와 같다.
# dataframe 전체에 반영 (Series에만 반영할 수도 있음)
A B C
0 1 A 1.0
1 20 b 2.0
2 3 c 3.0
3 4 d 4.0
4 5 e 5.0
이것도 마찬가지로 원본 dataframe을 바꾸려면 inplace = True로 지정해주어야한다.
map, apply, applymap의 차이점
Pandas에서 map(), apply(), applymap() 함수는 데이터프레임이나 시리즈의 값들을 변환할 때 사용됩니다. 이들 함수는 각각 다음과 같은 차이점이 있습니다.
- map() 함수: 시리즈(Series)에서 사용 가능하며, 시리즈의 각 요소들에 대해 함수를 적용한 결과를 반환합니다. 따라서 Series의 요소들을 일대일 대응시키는 변환에 적합합니다.
- apply() 함수: 시리즈(Series) 또는 데이터프레임(DataFrame)에서 사용 가능하며, 함수를 적용하는 방향을 지정할 수 있습니다. 따라서 열(column) 또는 행(row) 단위의 변환에 적합합니다.
- applymap() 함수: 데이터프레임(DataFrame)에서 사용 가능하며, 데이터프레임의 각 요소들에 대해 함수를 적용한 결과를 반환합니다. 따라서 데이터프레임 내 모든 요소들을 일대일 대응시키는 변환에 적합합니다.
pandas built-in 함수들
df.describe() | Numerical type data의 요약정보를 반환 |
df.age.unique() | - series data(age)에서 유일한 값을 list로 반환 |
df.sum(axis= ) | 축설정해서더하기 가능 |
df.isnull() | column 또는 row값의 Nan값의 boolean 값 반환 |
df.isnull().sum() | Null 인 값들의 합을 반환 |
df.sort_values([columns] , ascending = True) | column값들 기준으로 데이터 sorting |
df.age.corr(df.earn) | 상관계수 계산 |
df.age.cov(df.earm) | 공분산 계산 |
df.corrwith(df.earn) | 상관계수 계산 |
corr과 corrwith의 차이점
corr() 함수와 corrwith() 함수는 모두 상관계수를 계산하는 함수이지만, 사용 방법과 적용 대상이 조금 다릅니다.
corr() 함수는 데이터프레임(DataFrame) 내의 모든 column 간의 상관계수를 계산합니다. corr() 함수를 사용할 때는 대상이 되는 데이터프레임을 함수의 인자로 전달합니다.
반면 corrwith() 함수는 데이터프레임(DataFrame) 또는 시리즈(Series)와 다른 데이터프레임 또는 시리즈의 각 column 간의 상관계수를 계산합니다. corrwith() 함수를 사용할 때는 기준이 되는 데이터프레임 또는 시리즈와 비교 대상이 되는 데이터프레임 또는 시리즈를 함수의 인자로 각각 전달합니다.
따라서, corr() 함수는 데이터프레임 내의 모든 column 간의 상관계수를 계산하고, corrwith() 함수는 주어진 데이터프레임 또는 시리즈와 다른 데이터프레임 또는 시리즈 간의 column 간 상관계수를 계산합니다.
'AI > Pandas' 카테고리의 다른 글
Merge & Concat, persistence (0) | 2023.03.12 |
---|---|
Pivot table, Crosstab (1) | 2023.03.12 |
Group by (0) | 2023.03.12 |
Series, Dataframe 생성, indexing, selection (0) | 2023.03.12 |