• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    미해결

저장시 Symbol 형태 변환 이슈

22.11.21 20:17 작성 조회수 184

1

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

 

안녕하십니까

계속적인 질문 드려 죄송합니다.

 

다름이 아니라, 말씀하신 코드로 종목을 불러왔고, csv 파일로 저장하는 과정에서 Symbol(종목코드)가 계속 숫자형태로 변환이 되는 이슈가 생겨 문의드립니다.

 

코드로 종목을 불러왔을 때는 Symbol은 문자형태 였지만, 저장 후 불러오는 과정에서 계속 Symbol이 숫자형태로 전환되는 이슈가 발생하는것 같습니다. ㅠㅠ

 

어떤 이슈 때문이니 알수 있을까요?

답변 1

답변을 작성해보세요.

0

안녕하세요!
좋은 질문을 주셨습니다. 이 부분은 ETF 데이터 강좌에서 다루기도 하는데요.
엑셀에서 전화번호라는 컬럼이 있을 때 숫자 타입으로 지정하면 010에서 0이 생략되는 것과 비슷하게 판다스에서도 수치 컬럼에 대해 엑셀처럼 앞의 0을 생략하게 됩니다.
이를 방지하기 위해서는 pd.read_csv(파일경로, dtype={"Symbol":"object"})로 데이터를 불러올 때 해당 데이터의 타입을 불러오면 종목코드의 0이 누락되지 않고 잘 불러와지게 됩니다.
또 스크린샷을 보니 자동 생성된 인덱스가 함께 저장되어 "Unnamed: 0" 컬럼이 생성되었는데,
저장할 때 df.to_csv(경로명, index=False)로 저장하면 인덱스를 제외하고 저장하여 "Unnamed: 0" 컬럼이 생성되지 않으니 참고해 보세요!
감사합니다 :)

황재연님의 프로필

황재연

질문자

2022.11.21

빠른 답변 너무 감사합니다.!!

추가적인 질문이 있어서 문의드립니다.

첫째, 말씀하신대로 데이터를 불러올때, dtype={"Symbol":"object"} 으로 불러오니 큰 이슈가 없습니다.

하지만, 저장한 데이터를 엑셀파일로 열었을 때(파이썬으로 연거 아닙니다.) Symbol 타입에 숫자타입으로 열러서 문제가 발생하는 것 같습니다. 혹시 저장데이터를 열때, Symbol 타입을 문자열로 나오게 하는 방법은 없을까요?
image

 

둘째, 제가 강사님께서 주신 코드와 finance Reader 코드를 수기로 엑셀파일로 결합하여 Market이라는 탭을 추가하였습니다.(이부분은 엑셀 vlookup 함수 이용)

이후, 해당 시트를 파이썬에서 불러오는데, 이슈가 있어서 인터넷을 찾아 보니 데이터를 불러올 때 인코딩 이슈가 있어 아래 내용을 추가해야 한다고 확인했습니다.

[아래 오류 발생]
image[추가 코드]

encoding='cp949'

 

여기서 문제가, encoding과 dtype을 같이 불러왔더니 다시 symbol 타입이 숫자 형태로 변환이 되어 버렸는데...

혹시 문제를 해결할수 있는 방법이 없을까요? ㅠㅠ

image

안녕하세요.
cp949는 한글 윈도우에서 사용하는 인코딩 방식으로 엑셀에서 열어볼 때 해당 인코딩을 지정하면 별도의 인코딩 설정 없이 불러올 수 있는데 잘 해주셨습니다.
Symbol 은 저장할 때 데이터가 앞에 0이 포함되어있는지 확인이 필요할거 같습니다. 아마도 0이 누락되어 저장된 것으로 보여져요. 그래서 to_csv 를 하기 전 데이터프레임의 Symbol 을 확인해 주시고 엑셀에서 열었을 때 0 이 누락되지 않고 나오는 방법은 Symbol 앞에 '를 추가하면 됩니다.
예를들어 005936 이라면 '를 붙여서 '005930 으로 저장하고 엑셀에서 읽어오는 것입니다.

df['Symbol'] = "'" + df["Symbol"].astype(str)
이렇게 앞에 문자 '를 추가해 주시면 엑셀에서 읽어왔을 때 종목코드가 제대로 나옵니다.
다만 판다스에서 종목코드를 사용할 때 이렇게 변경하게 되면 "005936" == "'005936" 은 다른 문자로 나오게 됩니다. 따옴표가 3개라 잘 안보이지만 " 다음에 ' 있는데 "' 작은따옴표가 앞에 있어 파이썬에서 비교할 때 값을 찾지 못할 수 있으니 파이썬에서 사용할 때는 다시 작은따옴표를 제거헤 주세요.

감사합니다.