일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 하이퍼 파라미터
- 경력 기술서
- 주요 파라미터
- 데이터분석
- 주식데이터
- 자기소개서
- 하이퍼 파라미터 튜닝
- 주가데이터
- 파라미터 튜닝
- 퀀트 투자 책
- 코딩테스트
- 데이터 사이언스
- 랜덤포레스트
- 판다스
- 이력서 첨삭
- 퀀트
- 데이터 사이언티스트
- 사이킷런
- pandas
- 커리어전환
- 머신러닝
- sklearn
- 데이터사이언티스트
- 파이썬
- 베이지안 최적화
- AutoML
- 데이터사이언스학과
- 대학원
- 데이터사이언스
- 경력기술서 첨삭
- Today
- Total
GIL's LAB
스트링 접근자: str accessor 본문
이번 포스팅에서는 판다스의 스트링 접근자에 대해 알아보겠습니다.
개요
스트링 접근자 .str은 판다스 시리즈의 속성으로 문자열을 처리하는데 사용할 수 있습니다.
이 접근자를 사용하면 문자열 처리를 하는데 필요한 내장 함수를 활용할 수 있습니다.
공식 문서에서 가져온 메서드 목록은 아래와 같습니다.
개인적으로는 아래 메서드 가운데 contains, count, endswith, replace, zfill을 많이 사용합니다.
- pandas.Series.str.capitalize
- pandas.Series.str.casefold
- pandas.Series.str.cat
- pandas.Series.str.center
- pandas.Series.str.contains
- pandas.Series.str.count
- pandas.Series.str.decode
- pandas.Series.str.encode
- pandas.Series.str.endswith
- pandas.Series.str.extract
- pandas.Series.str.extractall
- pandas.Series.str.find
- pandas.Series.str.findall
- pandas.Series.str.fullmatch
- pandas.Series.str.get
- pandas.Series.str.index
- pandas.Series.str.join
- pandas.Series.str.len
- pandas.Series.str.ljust
- pandas.Series.str.lower
- pandas.Series.str.lstrip
- pandas.Series.str.match
- pandas.Series.str.normalize
- pandas.Series.str.pad
- pandas.Series.str.partition
- pandas.Series.str.removeprefix
- pandas.Series.str.removesuffix
- pandas.Series.str.repeat
- pandas.Series.str.replace
- pandas.Series.str.rfind
- pandas.Series.str.rindex
- pandas.Series.str.rjust
- pandas.Series.str.rpartition
- pandas.Series.str.rstrip
- pandas.Series.str.slice
- pandas.Series.str.slice_replace
- pandas.Series.str.split
- pandas.Series.str.rsplit
- pandas.Series.str.startswith
- pandas.Series.str.strip
- pandas.Series.str.swapcase
- pandas.Series.str.title
- pandas.Series.str.translate
- pandas.Series.str.upper
- pandas.Series.str.wrap
- pandas.Series.str.zfill
- pandas.Series.str.isalnum
- pandas.Series.str.isalpha
- pandas.Series.str.isdigit
- pandas.Series.str.isspace
- pandas.Series.str.islower
- pandas.Series.str.isupper
- pandas.Series.str.istitle
- pandas.Series.str.isnumeric
- pandas.Series.str.isdecimal
- pandas.Series.str.get_dummies
파이썬에서 문자열 관련 기본 문법이 친숙하다면 위에 소개된 메서드 이름도 친숙할 것입니다.
예를 들어, isnumeric 함수는 파이썬 내장 함수로 숫자로 구성된 문자열이면 True를, 숫자 외에 다른 것으로도 구성되있으면 False를 반환합니다. 간단한 사용 예시는 다음과 같습니다.
a = "12345"
b = "AA1234"
print(a.isnumeric())
print(b.isnumeric())
[실행 결과]
True
False
위 결과에서 a는 숫자로만 구성된 문자열이고 b는 숫자 외에 다른 값도 포함되있는 문자열이기에, isnumeric을 사용했을 때 각각 True와 False가 반환됩니다.
시리즈의 각 요소에 대해 위 함수를 적용하려면 .str.isnumeric을 사용하면 됩니다.
먼저 a와 b로 구성된 시리즈 X를 만들어보겠습니다.
import pandas as pd
X = pd.Series([a, b])
X
[실행 결과]
0 12345
1 AA1234
dtype: object
다음으로 .str.isnumeric을 사용해보겠습니다.
X.str.isnumeric()
[실행 결과]
0 True
1 False
dtype: bool
각 요소에 대해 isnumeric이 잘 사용됐음을 알 수 있습니다.
주의 사항
자료형이 문자열인 시리즈에 대해서만 사용할 수 있으며, 그렇지 않으면 아래와 같은 오류가 발생합니다.
AttributeError: Can only use .str accessor with string values!
간단한 예를 들어보겠습니다.
1, 2, 3, 4로 구성된 시리즈를 만들고 str.isnumeric을 사용해보겠습니다.
Y = pd.Series([1,2,3,4])
Y.str.isnumeric()
[실행 결과]
AttributeError Traceback (most recent call last)
<ipython-input-7-3e77408c127c> in <module>
1 Y = pd.Series([1,2,3,4])
----> 2 Y.str.isnumeric()
~\anaconda3\lib\site-packages\pandas\core\generic.py in __getattr__(self, name)
5459 or name in self._accessors
5460 ):
-> 5461 return object.__getattribute__(self, name)
5462 else:
5463 if self._info_axis._can_hold_identifiers_and_holds_name(name):
~\anaconda3\lib\site-packages\pandas\core\accessor.py in __get__(self, obj, cls)
178 # we're accessing the attribute of the class, i.e., Dataset.geo
179 return self._accessor
--> 180 accessor_obj = self._accessor(obj)
181 # Replace the property with the accessor object. Inspired by:
182 # https://www.pydanny.com/cached-property.html
~\anaconda3\lib\site-packages\pandas\core\strings\accessor.py in __init__(self, data)
152 from pandas.core.arrays.string_ import StringDtype
153
--> 154 self._inferred_dtype = self._validate(data)
155 self._is_categorical = is_categorical_dtype(data.dtype)
156 self._is_string = isinstance(data.dtype, StringDtype)
~\anaconda3\lib\site-packages\pandas\core\strings\accessor.py in _validate(data)
215
216 if inferred_dtype not in allowed_types:
--> 217 raise AttributeError("Can only use .str accessor with string values!")
218 return inferred_dtype
219
AttributeError: Can only use .str accessor with string values!
이 에러가 발생하지 않으려면 시리즈의 자료형이 문자열이어야 합니다.
자료형을 바꿀 수 있는 메서드로는 astype 메서드가 있습니다.
위 예제에서 Y.astype(str)을 사용하여 Y의 자료형을 문자로 바꾸고 str.isnumeric을 사용해보겠습니다.
Y = pd.Series([1,2,3,4])
Y = Y.astype(str)
Y.str.isnumeric()
[실행 결과]
0 True
1 True
2 True
3 True
dtype: bool
'파이썬 > 데이터 분석을 위한 파이썬' 카테고리의 다른 글
tweepy를 이용한 트윗 데이터 수집 방법 (2) | 2022.08.28 |
---|---|
배열에서 k번째로 값이 큰(작은) 값 찾기 및 순위 계산 방법 (0) | 2022.08.21 |
Matplotlib을 이용한 그래프 업데이트 방법 (0) | 2021.12.29 |
Numpy와 Pandas에서의 배열 연산 (0) | 2021.12.10 |
Pandas의 Apply 메서드 (1) | 2021.10.05 |