Skip to content

Q: 구글 Colab marcap 전체 CSV 다운로드

FinanceData.KR edited this page Jan 3, 2019 · 1 revision

구글 Colab에서 marcap 전체를 하나의 CSV로 PC에 다운로드

!git clone "https://github.com/FinanceData/marcap.git" marcap
# 유틸함수 사용
from marcap.marcap_utils import marcap_date
from marcap.marcap_utils import marcap_date_range

df = marcap_date_range('1995-05-01', '2018-10-31')

print('row count:', len(df))
df.head()

row count: 9584381

Code Name Close Changes ChagesRatio Volume Amount Open High Low Marcap MarcapRatio Stocks ForeignShares ForeignRatio Rank Date
0 015760 한국전력공사 27400.0 -400.0 -1.4 118190.0 3.255694e+09 27600.0 27800.0 27400.0 1.687268e+13 NaN 615791215.0 NaN NaN 1.0 1995-05-02
1 005930 삼성전자 119500.0 -1000.0 -0.8 139560.0 1.667674e+10 121000.0 121000.0 118500.0 6.497053e+12 NaN 54368645.0 NaN NaN 2.0 1995-05-02
2 005490 포항종합제철 65500.0 -300.0 -0.5 65970.0 4.334472e+09 65800.0 66200.0 65400.0 6.150569e+12 NaN 93901810.0 NaN NaN 3.0 1995-05-02
3 000200 대우중공업 9800.0 300.0 3.2 288380.0 2.805134e+09 9500.0 9840.0 9500.0 3.500639e+12 NaN 357208059.0 NaN NaN 4.0 1995-05-02
4 002610 엘지전자 31700.0 -300.0 -0.9 171460.0 5.452050e+09 32000.0 32000.0 31700.0 2.521027e+12 NaN 79527666.0 NaN NaN 5.0 1995-05-02

윈도우+엑셀의 경우

윈도우 엑셀은 기본적으로 인코딩을 EUC-KR로 가정하므로, 유니코드(UTF-8)로 저장된 CSV는 읽었을때 글자가 깨져 보입니다.

윈도우+엑셀을 주로 사용하는 경우 저장할 때 인코딩을 지정하고, 컬럼에 따옴표를 지정하여 묶어주는 것을 권합니다.

import csv

df.to_csv('merged.csv', index=False, encoding='euc-kr', quoting=csv.QUOTE_NONNUMERIC)
!ls -lh 
    total 1.3G
    drwxr-xr-x 6 root 4.0K Jan  3 09:07 marcap
    -rw-r--r-- 1 root 1.3G Jan  3 09:11 merged.csv
    drwxr-xr-x 1 root 4.0K Dec 18 20:29 msample_data
from google.colab import files

files.download('merged.csv')
    ----------------------------------------
    Exception happened during processing of request from ('::ffff:127.0.0.1', 49380, 0, 0)
    Traceback (most recent call last):
      File "/usr/lib/python3.6/socketserver.py", line 317, in _handle_request_noblock
        self.process_request(request, client_address)
      File "/usr/lib/python3.6/socketserver.py", line 348, in process_request
        self.finish_request(request, client_address)
      File "/usr/lib/python3.6/socketserver.py", line 361, in finish_request
        self.RequestHandlerClass(request, client_address, self)
      File "/usr/lib/python3.6/socketserver.py", line 721, in __init__
        self.handle()
      File "/usr/lib/python3.6/http/server.py", line 418, in handle
        self.handle_one_request()
      File "/usr/lib/python3.6/http/server.py", line 406, in handle_one_request
        method()
      File "/usr/lib/python3.6/http/server.py", line 639, in do_GET
        self.copyfile(f, self.wfile)
      File "/usr/lib/python3.6/http/server.py", line 800, in copyfile
        shutil.copyfileobj(source, outputfile)
      File "/usr/lib/python3.6/shutil.py", line 82, in copyfileobj
        fdst.write(buf)
      File "/usr/lib/python3.6/socketserver.py", line 800, in write
        self._sock.sendall(b)
    ConnectionResetError: [Errno 104] Connection reset by peer
    ----------------------------------------

위 에러는 파일 전송에서 생긴 에러입니다. files.download() 에서 파일이 너무 큰 경우 발생합니다. 파일이 100M를 넘는 경우 Google Drive를 통해 받으시는 것을 추천합니다.

용량이 큰 파일

Google Drive 에 마운트 하여 구글 Drive에 저장(혹은 구글 Drive로 복사)합니다

from google.colab import drive
drive.mount('/gdrive')
!cp merged.csv "/gdrive/My Drive/"
!ls -lh "/gdrive/My Drive/merged.csv"
    -rw------- 1 root root 1.3G Jan  3 09:19 '/gdrive/My Drive/merged.csv'
Clone this wiki locally