Pandas 팁
1. SettingWithCopyWarning 해결하기
Pandas 에서 특정 row의 특정 column에 value를 집어 넣을 때 흔히 발생하는 에러이다. 이는 문법적으로 iloc함수에 대한 python에서 해석이 불분명하기 때문에 발생한다.
Indexing and selecting data - pandas 0.25.0 documentation
해결 방법은 매우 간단하다. 아래와 같이 iloc대신 loc를 사용하면 된다.
How to deal with SettingWithCopyWarning in Pandas?
# Groupby
특정 column을 지정하고, 해당 column을 일종의 ID로 생각한다. 그래서 여기에 등장한 unique ID의 종류(N개) 만큼으로 데이터의 row를 쪼개서 N개의 table로 나눈다, 이 N개 table의 row 길이를 모두 더하면 원래의 table과 동일하다.
# Partial sum for given index
이를 for문 없이 구현하는 방법은 두가지이다.
1. 해당 column을 우선 cum sum하고, 주어진 index의 cumsum값만 가져온다음 이를 diff
2. 1111112222333333 이런식으로 index 정보를 그룹 id 처럼 해석해서 모든 row마다 레이블링 컬럼을 추가한다음, groupby하면 n개의 table로 쪼개짐. 이 n개 table을 각각 sum하면됨
String 검색하기
s1.str.contains()
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.str.contains.html
API이해하기
고급 구현 스킬
연속적으로 동일한 value를 가진 row끼리 groupby하기
- 핵심 원리: df를 한칸 아래로 shift한다음, 원래 df와 not_equal을 해서 값이 변하는 부분만 1로 마킹을 하고, 이 값을 cumsum을 해서 groupby에 사용되는 기준값으로 쓴다.
df = df["B"].groupby(df["A"].ne(df["A"].shift()).cumsum()).apply(list).reset_index()
'A. Development > for Machine Learning' 카테고리의 다른 글
Numpy Optimization and Parallelization (0) | 2020.01.17 |
---|---|
Pytorch 개발 팁 (0) | 2020.01.16 |
Numpy 문법, API, 환경설정 / HDF5를 위한 H5PY API (0) | 2015.12.01 |
댓글