-
[pandas] str.slice() & lambda - 데이터셋에서 맨 앞에 있는 화폐단위 삭제 및 float로 변환Road to Data Analyst/Python 2022. 9. 12. 17:22
str.slice()
import pandas as pd url = '데이터 가져올 링크' df = pd.read_csv(url, '\t') chipo = df chipo.item_price.str.slice(1).astype(float).head()
데이터에서 금액이 string형태로 되어있을 때가 많을 텐데, 그럴 때 간단하게 화폐단위를 제거하는 방법이 있다.
바로 str.slice()이다.
item_price라는 데이터 셋 내의 column/variable/determinants가 있다.
형태는 다음과 같이 생겼다.
데이터 : https://github.com/guipsamora/pandas_exercises item_price 맨 앞에 $표시 때문에 다른 계산에 어려움이 있을 때가 있다.
따라서 $표시를 없애야 한다.
str.slice(start=값, stop=값, step=값)
위 코드에서 볼 수 있듯이, str.slice()와 그 안에 숫자 설정을 통해 내가 원하는 부분만 제거가 가능하다.
맨 위 코드에서는 str.slice(1)이기 때문에, () 안에 값이 하나만 있을 때는, 1 (두 번째) 전까지의 값을 slice 해준다.
기존에 string형태였기 때문에 float형태로도 변환해주어야 한다 (astype(float))
또한 제대로 변환되었는지 확인을 위해 head()를 통해 상위 5개의 행을 체크해 준다.
lambda
lambda 또한 달러 표시를 제거하는 데 효과적으로 사용될 수 있다.
lam = lambda x: float(x[1:]) chipo.item_price.apply(lam).head()
lam이라는 변수를 통해 x라는 변수에서 첫번째(0) 데이터를 제외한 두 번째(1) 데이터부터의 값을 float()로 변환 후 출력해준다는 함수 식을 만들어준다.
(lambda내에서의 x란? 데이터셋에서의 column 정도로 생각하면 좋다; 출처: https://amatoroi.tistory.com/8)
(lambda식 사용할 때 꼭 apply()와 같이 사용해 주어야 한다.)
그 후 chipo.item_price.apply(lam)을 통해 달러 표시만을 제외한 값을 출력해준다.
결과
데이터: https://github.com/guipsamora/pandas_exercises $표시가 사라지고, dtype까지 float64 형태로 잘 변환된 것을 알 수 있다.
'Road to Data Analyst > Python' 카테고리의 다른 글
[pandas] value_counts() 특정변수 least occurrence로 정렬하기 (0) 2022.09.24 [NumPy] np.ceil(), np.copysign(), np.intersect1d() (0) 2022.09.12 [pandas] agg() & sort_values() - 데이터셋에서 가장 많이 팔린 상품 찾기 (0) 2022.09.12 [NumPy] Problem set (0) 2022.06.13 [NumPy] Fancy Indexing 팬시 인덱싱 (0) 2022.06.13