2014-04-06 3 views
0

파이썬을 사용하여 API에서 다운로드 한 주식 데이터를 저장하려고합니다. 그러나 나는 이것을 어떻게하는지에 관해 모른다.파이썬을 사용하여 주식 데이터를 csv 파일에 저장하는 방법

데이터는 다음과 같이 출력됩니다 : 코드의

>>> 
{'20140311': {'1030': {'total_price': 9421626, 'end': 6.76, 'high': 6.85, 'start': 6.78, 'low': 6.67, 'volumn': 1396431}, '1130': {'total_price': 5042807, 'end': 6.86, 'high': 6.91, 'start': 6.76, 'low': 6.76, 'volumn': 735220}, '1400': {'total_price': 5410292, 'end': 6.79, 'high': 6.9, 'start': 6.88, 'low': 6.76, 'volumn': 792890}, '1500': {'total_price': 6470290, 'end': 6.83, 'high': 6.85, 'start': 6.79, 'low': 6.74, 'volumn': 954111}},.... 

내 마지막 몇 줄은 다음과 같습니다

def main(): 
    g = getStock60MIN('000030', 'sz') 
    print g 

if __name__ == "__main__": 
    main() 

답변

0

차입

How do I write a Python dictionary to a csv file?에서 당신은 중첩 된 DICT 구조를 가지고있다. 아마 다음은 도움이 될 것입니다

import csv 

my_dict = { 
    '20140311': { 
    '1030': { 
     'total_price': 9421626, 'end': 6.76, 'high': 6.85, 'start': 6.78, 'low': 6.67, 'volumn': 1396431 
    }, 
    '1130': { 
     'total_price': 5042807, 'end': 6.86, 'high': 6.91, 'start': 6.76, 'low': 6.76, 'volumn': 735220 
    }, 
    '1400': { 
     'total_price': 5410292, 'end': 6.79, 'high': 6.9, 'start': 6.88, 'low': 6.76, 'volumn': 792890 
    }, 
    '1500': { 
     'total_price': 6470290, 'end': 6.83, 'high': 6.85, 'start': 6.79, 'low': 6.74, 'volumn': 954111 
    } 
    } 
} 

def initialize_keys(): 
    for dict1 in my_dict.itervalues(): 
    for dict2 in dict1.itervalues(): 
     return dict2.keys() 

with open('mycsvfile.csv', 'wb') as f: 
    w = csv.DictWriter(f, initialize_keys()) 
    w.writeheader() 
    for dict1 in my_dict.itervalues(): 
    for dict2 in dict1.itervalues(): 
     w.writerow(dict2) 

당신이 보조 사전 키를 사용하여 원하는 작업 모른다는합니다 (1030, 1130, 14001500)하지만 내 방법은 그들을 무시합니다.

total_price,end,high,start,low,volumn 
9421626,6.76,6.85,6.78,6.67,1396431 
5042807,6.86,6.91,6.76,6.76,735220 
5410292,6.79,6.9,6.88,6.76,792890 
6470290,6.83,6.85,6.79,6.74,954111 

파이썬에서 csv 모듈을 살펴보십시오 :

mycsvfile.csv의 내용이다. 아마 당신에게 더 많은 아이디어를 줄 것입니다. PER OP의 발언 AS


UPDATE : 상기 제 사전 열쇠 날짜 및 제 사전 키 이후

때때로는 datetime.datetime 인스턴스를 통해 인스턴스 후 CSV에 기록 될 수있다 파일 :

datetime,total_price,end,high,start,low,volumn 
2014/03/11 10:30,9421626,6.76,6.85,6.78,6.67,1396431 
2014/03/11 11:30,5042807,6.86,6.91,6.76,6.76,735220 
2014/03/11 14:00,5410292,6.79,6.9,6.88,6.76,792890 
2014/03/11 15:00,6470290,6.83,6.85,6.79,6.74,954111 
:

import csv 
import datetime 

my_dict = { 
    '20140311': { 
    '1030': { 
     'total_price': 9421626, 'end': 6.76, 'high': 6.85, 'start': 6.78, 'low': 6.67, 'volumn': 1396431 
    }, 
    '1130': { 
     'total_price': 5042807, 'end': 6.86, 'high': 6.91, 'start': 6.76, 'low': 6.76, 'volumn': 735220 
    }, 
    '1400': { 
     'total_price': 5410292, 'end': 6.79, 'high': 6.9, 'start': 6.88, 'low': 6.76, 'volumn': 792890 
    }, 
    '1500': { 
     'total_price': 6470290, 'end': 6.83, 'high': 6.85, 'start': 6.79, 'low': 6.74, 'volumn': 954111 
    } 
    } 
} 

def initialize_keys(): 
    for dict1 in my_dict.itervalues(): 
    for dict2 in dict1.itervalues(): 
     return dict2.keys() 

with open('mycsvfile.csv', 'wb') as f: 
    w = csv.DictWriter(f, ['datetime'] + initialize_keys()) 
    w.writeheader() 
    for datestr, dict1 in my_dict.iteritems(): 
    for timestr, dict2 in dict1.iteritems(): 
     whole_row = {} 
     whole_row['datetime'] = datetime.datetime\ 
       .strptime(datestr + timestr, '%Y%m%d%H%M')\ 
       .strftime('%Y/%m/%d %H:%M') 
     whole_row.update(dict2) 
     w.writerow(whole_row) 

이 다음과 같은 출력을 생성

+0

1030, 1130, 1400 및 1500은 10 : 00,11 : 30,14 : 00 및 15:00을 나타냅니다. 이들은 특정한 시점입니다. 날짜를 추가 할 수 있습니까? 감사! – qifengwu

+0

초기 질문에서 벗어나 귀하의 질문을 찾는 다른 사람들에게 혼동을 줄 수는 있지만 그럴 수 있습니다. – BorrajaX

관련 문제