MATLAB에서도 오랫동안 나랑 싸우고 있는 인덱싱... Python에서도 기어이 내 발목을 잡았다.
사실 인덱싱 이전에, 파일 읽어들이는 것부터 문제가 생겼다. ㅎㅎㅎ
일단 Raw data의 source 는 바다누리 사이트이고, 확장자는 CSV이다.
import pandas as pd
fnm = 'C:\\Users\\User\\OneDrive - pusan.ac.kr\\MATLAB\\KOAA\\KOAA Beginning class\\Pusan_RealTime_tide.csv'
df = pd.read_csv(fnm)
그리고 아래의 error message가 떴다.
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb0 in position 3: invalid start byte
도저히 뭔 소린지 모르겠어서 인터넷에 경고문을 그대로 검색했더니, 짱짱한 Python 블로거 선배님들이 친절하게 해당 error를 어떻게 해결해야 하는지 글을 이미 작성해놓으셨더랬다.
(감사합니다.... 복 받으세요...)
요지는, encoding='cp949' 라는 걸 코드에 넣어야 한다는 것이다.
그러니까 코드는 다음과 같다.
import pandas as pd
fnm = 'C:\\Users\\User\\OneDrive - pusan.ac.kr\\MATLAB\\KOAA\\KOAA Beginning class\\Pusan_RealTime_tide.csv'
df = pd.read_csv(fnm, encoding='cp949')
이러면 정상적으로 읽어들인다.
그리고 이후에 인덱싱을 시도해봤다.
Raw data에 있는 실측 조위 데이터를 불러오기 위해 아래의 코드를 실행했다.
df[df['실측조위(Cm)'] == 64]
그리고 처참하게 망했다... 아래는 경고문.
그래서 다시 인터넷을 열심히 뒤졌다. 파이썬 인생은 왜 이렇게 고달픈지 모르겠다.
아무튼 알게 된 결론.
df = df.apply(pd.to_numeric,errors='coerce').fillna(0)
df[df['실측조위(Cm)'] == 64]
이렇게 코드를 짜야, '실측조위' 값이 정상적으로 숫자로 인식되는 모양이다.
이 코드를 실행시키면 아래와 같이 나타난다.
와! Python에서 인덱싱을 드디어 성공했다. (망할....)
< Python을 하고 싶은 MATLAB 빠돌이의 메모 >
4. df = pd.read_csv(fnm, encoding='cp949') 로 데이터 읽어들이기.
5. 인덱싱 할 때는 df = df.apply(pd.to_numeric,errors='coerce').fillna(0) 라고 코드에 쓰기.
아래는 완성된 전체 코드이다.
import pandas as pd
fnm = 'C:\\Users\\User\\OneDrive - pusan.ac.kr\\MATLAB\\KOAA\\KOAA Beginning class\\Pusan_RealTime_tide.csv'
df = pd.read_csv(fnm, encoding='cp949')
df.head()
df.info()
df = df.apply(pd.to_numeric,errors='coerce').fillna(0)
df[df['실측조위(Cm)'] == 64]
'Python' 카테고리의 다른 글
Python - plot에서 제목에 한글 넣기 (0) | 2023.03.23 |
---|---|
Python - 포항 조위 시계열 Tide TimeSeries (2) | 2023.03.23 |