error - 'utf-8' codec can't decode byte 0xbd in position 0: invalid start byte
Searching..FACT
- 'utf-8'은 유니코드를 인코딩(encoding), 혹은 디코딩(decoding) 하는 방식('euc-kr' 같이 다른 방식도 있음)
- 유니코드는 텍스트를 컴퓨터에 저장하기 위한 매핑
- 파이썬에서 문자열을 유니코드로 처리함
- decode는 바이트 코드를 문자열로 변환
자, 이제 error 를 읽어보자, 바이트코드로 된 파일을 load하려면 decode를 해서 유니코드로 해석해야한다. 하지만 파일의 position 0(첫 번째 바이트?)에 위치한 0xbd를 'utf-8' 방식으로 decode 할 수 없다는 말씀되시겠다.
- 해결방법
'0xbd'는 한글 인코딩 방식인 'euc-kr', 'cp-949'를 사용한다고 한다.
pd_read_csv(data, encoding='cp-949')
encoding 정보를 추가해주면 됨참고
- 한줄평
역시 코드짤때 한글은 발암의 근원이다.
[Data Handling] - .melt() & .pivot_table()
pandas DataFrame에서 seaborn이나 다른 패키지 함수를 만들기 위해서 데이터 형태를 변경해줘야 하는 경우가 자주 생긴다.
처음 시작하는 데이터 형태가 어떻던지 melt()를 통해서 wide form → tidy form. 또 pivot_table() 로 다시 wide form 혹은 원하는 형태로 바꿔주는 연습이 필요 할 것 같다.
조만간 pandas aggregate & melt 를 코드와 함께 올릴것
[tip] from statsmodels.formula.api import ols
Statsmodels 패키지에서 model을 만들때(선형 방정식) C를 써주는 이유는 해당 변수가 categorycal data임을 명시해 주는 것.
interX_lm = ols("S ~ C(E) * X + C(M)", salary_table).fit()