출처 : 금융 데이터 분석을 위한 파이썬 판다스
import numpy as np
import pandas as pd
from pandas import Series,DataFrame
from pykrx import stock
import os
import sqlite3
df = stock.get_market_ohlcv("20200101",'20220421', "002290")
print(df)
if not os.path.isdir(r'c:\users\neo21\db'):
os.mkdir(r'c:\users\neo21\db')
# csv파일로 저장 및 읽기
df.to_csv(r"c:\users\neo21\db\sample.csv")
df1 = pd.read_csv(r"c:\users\neo21\DB\sample.csv",index_col=0)
# excel파일로 저장 및 읽기
df.to_excel(r"c:\users\neo21\db\sample.xlsx", sheet_name="002290")
df1 = pd.read_excel(r"c:\users\neo21\DB\sample.xlsx",index_col=0)
#sql로 저장 및 읽기
con = sqlite3.connect(r'c:\users\neo21\db\sample.db')
df.to_sql(name = "002290",con = con, if_exists="replace")
df1 = pd.read_sql("select * from '002290'",con,index_col="날짜")
print(df1)
DataFrame 파일로 저장¶
to_csv / to_excel / to_sql / to_html
from pandas import DataFrame data = [ ["3R", 1510, 7.36], ["3SOFT", 1790, 1.65], ["ACTS", 1185, 1.28] ] index = ["037730", "036360", "005760"] columns = ["종목명", "현재가", "등락률"] df = DataFrame(data=data, index=index, columns=columns) df.index.name = '종목코드' print(df) |
종목명 현재가 등락률 종목코드 037730 3R 1510 7.36 036360 3SOFT 1790 1.65 005760 ACTS 1185 1.28 |
#파일 저장 폴더 생성 및 저장 import os if not os.path.isdir("DB"): os.mkdir("DB") df.to_csv("DB/data.csv") |
|
# DataFrame 저장 기본값 : index=True(index포함: 인덱스를 column으로 전환) header=True(컬럼 포함) CSV에 저장 |
|
df.to_csv(파일명) | |
종목코드,종목명,현재가,등락률 037730,3R,1510,7.36 036360,3SOFT,1790,1.65 005760,ACTS,1185,1.28 |
|
엑셀에 저장 | |
df.to_excel(파일명) | |
df.to_excel("DB/data2.xlsx", sheet_name="종목정보") | |
df.to_excel("DB/data3.xlsx", index=False) # index제외 | |
df.to_excel("DB/data4.xlsx", header=False) # 컬럼 제외 | |
sql에 저장 | |
DataFrame.to_sql(name, # 테이블명 con, # Cursor객체 지정 flavor='sqlite', # qtlite / mysql schema=None, if_exists='fail', # fail - 존재시 미실행 / replace - 기존데이터 삭제후 저장 / append - 데이터 추가 index=True, # df 인덱스 -> db 컬럼으로 전환 index_label=None, # 인덱스의 이름 지정 chunksize=None, # 한 번에 써지는 로우의 크기 dtype=None) |
|
import sqlite3 # connection생성 con = sqlite3.connect(r"C:\Users\neo21\Jupiter\data.db") df.to_sql('test', con, if_exists='replace') |
파일을 DataFrame로 불러오기
엑셀파일 불러오기
df1 = pd.read_excel(파일명)
import pandas as pd df1 = pd.read_excel("DB/data2.xlsx") print(df1.head()) |
종목코드 종목명 현재가 등락률 37730 3R 1510 7.36 36360 3SOFT 1790 1.65 5760 ACTS 1185 1.28 |
#index가되는 컬럼 지정 df1 = pd.read_excel("DB/data2.xlsx", index_col='종목코드') print(df1.head()) |
종목명 현재가 등락률 종목코드 37730 3R 1510 7.36 36360 3SOFT 1790 1.65 5760 ACTS 1185 1.28 |
df1 = pd.read_excel("DB/data2.xlsx", index_col=1) print(df1.head()) |
종목코드 현재가 등락률 종목명 3R 37730 1510 7.36 3SOFT 36360 1790 1.65 ACTS 5760 1185 1.28 |
#사용할 컬럼 지정 df1 = pd.read_excel("DB/data2.xlsx", index_col=0, usecols=[1, 2,3]) print(df1.head()) |
현재가 등락률 종목명 3R 1510 7.36 3SOFT 1790 1.65 ACTS 1185 1.28 |
# 2행부터 데이터 읽기 (기본값 : 0행부터 읽기) df = pd.read_excel("DB/code2.xlsx", header=2, index_col='cd', usecols=[1, 2, 3]) print(df.head()) |
nm gb cd A060310 3S 701 A095570 AJ네트웍스 701 A006840 AK홀딩스 701 A054620 APS홀딩스 701 A265520 AP시스템 701 |
# 파일 읽을 때 date문자열을 datetime형식으로 읽기 df = pd.read_excel("DB/data_5402_20220403.xlsx" , parse_dates=['일자']) df = df.sort_values('일자') print(df) |
|
csv파일 불러오기 df = pd.read_csv(파일명) |
|
df = pd.read_csv("DB/magic.csv") print(df) |
code name ROIC EV/EBITDA 0 187660 에디엠코리아 2110.7 0.02 1 227420 도부마스크 394.7 1.23 2 225220 제놀루션 333.9 2.40 3 1880 DL건설 344.8 3.15 |
# dtype지정 df = pd.read_csv("DB/magic.csv", dtype={'code': str}) print(df) |
code name ROIC EV/EBITDA 0 187660 에디엠코리아 2110.7 0.02 1 227420 도부마스크 394.7 1.23 2 225220 제놀루션 333.9 2.40 3 001880 DL건설 344.8 3.15 |
sql파일 불러오기 1) connection 생성 2) pd.read_sql(" SELECT * FROM '테이블명' ", connection명) |
|
import sqlite3 con = sqlite3.connect(r"C:\Users\neo21\Jupiter\data.db") #index가될 칼럼 미지정 df = pd.read_sql("SELECT * FROM 'test'", con, index_col=None) print(df) |
종목코드 종목명 현재가 등락률 0 037730 3R 1510 7.36 1 036360 3SOFT 1790 1.65 2 005760 ACTS 1185 1.28 |
Yahoo Finance 데이터 불러오기 |
|
import pandas as pd import pandas_datareader.data as web import datetime import sqlite3 start = datetime.datetime(2010, 1, 1) end = datetime.datetime(2016, 6, 12) df = web.DataReader("078930.KS", "yahoo", start, end) print(df) con = sqlite3.connect("kospi.db") df.to_sql('078930', con, if_exists='replace') readed_df = pd.read_sql("SELECT * FROM '078930'", con, index_col = 'Date') |
|
print(readed_df) | |
High Low Open Close Volume Adj Close Date 2010-01-04 00:00:00 34050.0 33500.0 33500.0 33750.0 237735.0 23050.589844 2010-01-05 00:00:00 34500.0 33600.0 33950.0 33900.0 440485.0 23153.037109 2010-01-06 00:00:00 34900.0 33900.0 33900.0 34250.0 534581.0 23392.074219 2010-01-07 00:00:00 35100.0 34300.0 34350.0 34600.0 543769.0 23631.119141 2010-01-08 00:00:00 35100.0 34200.0 34700.0 34450.0 553288.0 23528.673828 ... ... ... ... ... ... ... 2016-06-03 00:00:00 51800.0 50500.0 51500.0 51000.0 153289.0 40370.597656 2016-06-07 00:00:00 53000.0 50800.0 51300.0 52800.0 239192.0 41795.441406 2016-06-08 00:00:00 52900.0 51700.0 52800.0 52200.0 244817.0 41320.496094 2016-06-09 00:00:00 52500.0 50800.0 52500.0 51000.0 325226.0 40370.597656 2016-06-10 00:00:00 51500.0 50900.0 51100.0 51300.0 152457.0 40608.066406 [1595 rows x 6 columns] |
'DataFrame' 카테고리의 다른 글
컬럼 shift (0) | 2022.04.09 |
---|---|
TimeStamp (0) | 2022.04.09 |
판다스 데이터프레임 (고급기능2) (0) | 2022.04.07 |
판다스 데이터프레임 (고급기능1) (0) | 2022.04.07 |
판다스 데이터프레임 (0) | 2022.04.07 |
댓글