使用python读取黄金行情数据

编程入门 行业动态 更新时间:2024-10-18 08:20:38

使用python读取<a href=https://www.elefans.com/category/jswz/34/1767539.html style=黄金行情数据"/>

使用python读取黄金行情数据

使用 pandas_datareader.data  包,从FRED 官网获取黄金行情数据()。

pandas_datareader.data  包是获取yahoo,google等财经信息,参见网址 。

1、获取黄金行情源码 getGold.py

import numpy as np
import pandas as pd
import pandas_datareader.data as web
import math
import matplotlib.pyplot as plt
from sqlalchemy import create_engine
import pymysql
import datetime

#连接数据库
def connect():
    conn = pymysql.Connect(host='127.0.0.1',port=3306,user='root',passwd='123456',db='finance_db',charset='utf8')
    return conn

#关闭数据库连接
def close(conn):
    conn.close()

#查询数据库
def select(sql):
    conn = connect()
    cursor = conn.cursor()
    cursor.execute(sql)
    #print("cursor.excute:",cursor.rowcount) 
    #rs = cursor.fetchone()
    rs = cursor.fetchall()
    close(conn)
    return rs

#查询最近一天
def getLastTransDate():
    statement = 'select max(date) from t_gold '
    rs = select(statement)
    if rs[0][0] is None:
        startDate = '1960-01-01'
    else:
        startDate = rs[0][0].strftime('%Y-%m-%d')
    return startDate

def main():
    startDate = getLastTransDate()
    df = web.DataReader(name='GOLDAMGBD228NLBM', data_source='fred',start = startDate)
    print (df.info())
    #df.to_csv(r'./test.csv',encoding='gbk')
    #df.plot()
    #plt.show()

    connect = create_engine('mysql+pymysql://root:123456@127.0.0.1:3306/finance_db?charset=utf8')

    df.to_sql('t_gold',con=connect,if_exists='append',index=True)


if __name__ == '__main__':
    main()


'''
CREATE TABLE `t_gold` (
  `DATE` datetime DEFAULT NULL,
  `GOLDAMGBD228NLBM` double DEFAULT NULL,
  KEY `ix_t_gold_DATE` (`DATE`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
'''

2、显示黄金价格趋势图,goldTrends.py

使用pandas 读取mysql数据库,使用matplotlib.pyplot 画价格曲线

import numpy as np
import pandas as pd
import pandas_datareader.data as web
import math
import matplotlib.pyplot as plt
from sqlalchemy import create_engine
import pymysql
import datetime

#绘制图形
def drawTrends(startDate):
    connect = create_engine('mysql+pymysql://root:123456@127.0.0.1:3306/finance_db?charset=utf8')
    sql = 'select * from t_gold where date>=\''+startDate+'\''
    #print(sql)

    df = pd.read_sql_query(sql, connect)
    #print(df.info())
    df2 = df[['DATE', 'GOLDAMGBD228NLBM']]
    df2['DATE'] = pd.to_datetime(df2['DATE'])
    df2 = df2[['DATE', 'GOLDAMGBD228NLBM']]
    df2 = df2.sort_values(['DATE'])
    df2 = df2.set_index('DATE')
    ax = df2.plot(kind='line', title="Gold Price Change")
    ax.set_xlabel("Period", fontsize=12)
    ax.set_ylabel("Price", fontsize=12)


    plt.show()


def main():
    startDate = input('请输入起始日期【yyyy-mm-dd】:')
    drawTrends(startDate)


if __name__ == '__main__':
    main()


'''
CREATE TABLE `t_gold` (
  `DATE` datetime DEFAULT NULL,
  `GOLDAMGBD228NLBM` double DEFAULT NULL,
  KEY `ix_t_gold_DATE` (`DATE`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
'''

 

 

 

更多推荐

使用python读取黄金行情数据

本文发布于:2024-03-07 03:09:01,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1716680.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:黄金   行情   数据   python

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!