인공지능, 데이터 수집 및 전처리 등의 목적으로 많이 쓰이는 판다스 사용법에 관해 개인적인 팁위주로 정리해보고자 한다
판다스 표현 중에 가장 핵심이자 기초는 loc, iloc라고 생각한다
option = iris['SepalLengthCm']>5
new_iris = iris.loc[option,:]
new_iris.head()
행과 열에 특정 함수를 한번에 반영하고자 할때 apply와 lambda를 세트처럼 같이 사용한다
iris.iloc[:,1:4].apply(lambda x:x.mean(), axis=0)
# iris의 1~4번째 칼럼에 대해 mean을 적용하는 코드
# axis = 0 : 행 방향으로 결정 => 칼럼 3개가 샘플값에 대한 평균으로 도출 (axis = 1 : 열 방향)
기존 loc/iloc는 행과 열의 방향으로만 처리가 가능하지만 group by를 사용하지만 특정 그룹을 지은상태에서 처리할 수 있게 해준다
# 종 별로 처리하기.
group_iris = iris[['SepalLengthCm','SepalWidthCm']].groupby(iris['Species'])
group_iris.mean()
# group_iris 의 value type이 df가 아니라서 그냥 프린트하면 나오는거 뭐 없음.
- 기존 append (가장 쉬운 방법) ⇒ 버전 업데이트 되면서 삭제될 예정
- .concat 이용해야 함
df = pd.DataFrame(columns=[])
for npy_path, json_path in zip(json_dir, npy_dir) :
df_temp = pd.DataFrame({'file_name' : [Path(json_path).stem],
'json_path' : [json_path],
'npy_path' : [npy_path]})
df = pd.concat([df, df_temp], ignore_index = True, axis = 0)
return df
1) 외부에 empty df 선언
2) df_temp = pd.DataFrame({’col1‘ : [var1], ‘col2‘ :[ var2]}, ignore_index=True, axis=0)
- npy_files = df.loc[:,['npy_path']] (x) # 인덱스까지 같이나오고, 형태가 df라 후처리가 필요함
- npy_files = df['npy_path'].tolist() (o) # df[’col name’].tolist() 이게 훨씬 낫다
- .loc [ [ ] , [ ] ] 이 형태가 기본
- 하나씩인 경우는 [ , ]
- .loc를 통해서 값 바꾸기
- df.loc[행 조건_boolean, 칼럼명] = 바꿀값
- df.loc[df["intensity"] == 1.0, "intensity"] = 100.0 : intensity가 1.0인 전체 행을 100.0으로 바꾼다
- df = df.loc ~~ 와 같이 하지않는다! 이렇게 쓰면 오류임
- 숫자인지 문자인지 구분 : 0 vs ‘0’
- 판다스는 공홈 되게 잘 되어있음, 좌측 메뉴에서 다른것들도 고르기!
pandas.DataFrame.loc - pandas 1.4.2 documentation