아 ;;; 이걸 까먹었네...
df.T
이러면 column 과 index 가 전치된다.
temp = df[df['date_added'].dt.to_period('M') == "2018-01"]
위 코드는 우측이 단순 문자열처럼 보이지만, pandas 내부에서 자체적으로 period 객체로 변형시켜서 비교하기에 연산이 되나
아래 코드에서
temp = df[df['date_added'].dt.to_period('M') == pd.to_datetime("2018-01", foramt = "%Y-%m")]
이렇게 한 것은 비교할 수가 없어 False가 계속 떠서 잡히는 필터링이 하나도 없게 된다.
왜냐하면 period 객체와 TimeStamp 객체는 비교가 불가하기 때문
.str로 접근한 후에
.lower()를 통해서 전부 소문자로 만들어 주자...
만약 문자열 안에 공백도 섞이고 그랬다면
.str 로 마찬가지로 접근한 후에
.replace(' ', '') 이런 식으로 처리해주자.
반대로 대문자로 바꾸고싶다?
.str 로 접근하고
.upper() 로 키워주자
temp = df.sort_values(by = 'f4', ascending = False).sort_values(by = 'f5', ascending = True)
위 코드와
temp = df.sort_values(by = ['f4','f5'], ascending = [False, True])
위 코드는
다르다...
첫번째꺼는 그냥 정렬을 덮어씌우는 거고 (헛수고)
두번쨰 거는 먼저 첫번째 기준에 따른 후에
동순위에 있는 것에 한하여 두번째 기준을 따르는 것.
주의하자!!!!
IQR할때는
IQR_3 = target.age.quantile(0.75)
IQR_1 = target.age.quantile(0.25)
IQR = IQR_3 - IQR_1
항상 잊지 말자..!
std 방식의 이상치 검출은
mean + 1.5*std
mean - 1.5*std
임을 주의!
f1 칼럼에서 결측치가 있는 것을 따로 뽑아
해당 데이터에서 f5의 중앙값을 구하라는 코드는
target = df[df['f1'].isnull()]
answer = target.f5.median()
이게 맞지
괜히 ~ 넣지 말자...
target = df[~(df['f1'].isnull())]
answer = target.f5.median()
이거 아니다...
isnull()은 null 인 값에 대하여 True를 null이 아닌 값에 대하여 False를 뱉음.