㈠ 解決 pandas_datareader 無法獲取雅虎財經數據的問題
pandas_datareader 是重要的 pandas 相關包,原來是 pandas.io.data 方法,用於獲取介面數據,比如雅虎財經上的數據或者美聯儲路易斯安娜分行的數據,但是在最近版本(比如 pandas 0.20)中 pandas.io.data 的方法獨立出來稱為一個新的包 pandas_datareader 。
雅虎財經和谷歌財經的介面變換頻繁。如果用 pip install pandas_datareader ,已經無法得到雅虎財經。
pandas_datareader github Issuse #315 針對的就是雅虎財經介面無法訪問的問題, gusutabopb 在 5月21日進行了成功修正,並提供了他修正後的 pandas_datareader 新版本。
該修正版本的安裝方法是
安裝以後測試獲取 google 的股票數據成功。
參考:
Issues with the data reader fetching yahoo finance #315
Error with pulling data from Yahoo Finance
㈡ 怎麼用python panda 算股票市場收益率
1.收集數據,開盤價,收盤價,交易量
2.用pandas處理數據,處理缺失值
3.用股票收益率的公式帶入
說白了,pandas只是個好用的工具,方法都是一樣的,只是效率問題
有多少人工,就有多少智能
㈢ 怎麼用python計算股票
作為一個python新手,在學習中遇到很多問題,要善於運用各種方法。今天,在學習中,碰到了如何通過收盤價計算股票的漲跌幅。
第一種:
讀取數據並建立函數:
import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import spline
from pylab import *
import pandas as pd
from pandas import Series
a=pd.read_csv('d:///1.csv',sep=',')#文件位置
t=a['close']
def f(t):
s=[]
for i in range(1,len(t)):
if i==1:
continue
else:
s.append((t[i]-t[i-1])/t[i]*100)
print s
plot(s)
plt.show()
f(t)
第二種:
利用pandas裡面的方法:
import pandas as pd
a=pd.read_csv('d:///1.csv')
rets = a['close'].pct_change() * 100
print rets
第三種:
close=a['close']
rets=close/close.shift(1)-1
print rets
總結:python是一種非常好的編程語言,一般而言,我們可以運用構建相關函數來實現自己的思想,但是,眾所周知,python中裡面的有很多科學計算包,裡面有很多方法可以快速解決計算的需要,如上面提到的pandas中的pct_change()。因此在平時的使用中應當學會尋找更好的方法,提高運算速度。
㈣ 在財經領域使用大數據分析技術主要運用的是pandas嗎
大數據分析進階之python財經數據抓取
Python常用數據分析包:
Pandas:數據分析
Nltk:自然語言處理
Scikit:人工智慧和機器學習
Numpy/scipy:矢量數據和科學計算
Sympy:符號計算
Gpu:並行超速運算
Opencv:圖像視頻處理
TVTK/mayavi:可視化
財經數據介麵包
Pandas
Python Data Analysis Library 或 是基於NumPy 的一種工具,是python的一個數據分析包。
Pandas最初被作為金融數據分析工具而開發出來,因此,pandas為時間序列分析提供了很好的支持。
Pandas的名稱來自於面板數據(panel data)和python數據分析(data analysis)。
Pandas返回的數據格式都是pandas DataFrame類型,非常便於用pandas/NumPy/Matplotlib進行數據分析和可視化。
使用pandas自帶財經數據介面,能夠獲取雅虎財經、世界銀行等財經數據。
TuShare
TuShare是一個免費、開源的python財經數據介麵包。
主要實現對股票等金融數據從數據採集、清洗加工到數據存儲的過程,能夠為金融分析人員提供快速、整潔和多樣的便於分析的數據,為他們在數據來源方面極大地減輕了工作量,使他們更加專注於策略和模型的研究與實現上。
TuShare返回的絕大部分的數據格式都是pandas DataFrame類型,非常便於用pandas/NumPy/Matplotlib進行數據分析和可視化。
使用TuShare自帶財經數據介面,能夠獲取新浪財經的證券、宏觀等財經數據。
使用TuShare自帶財經數據介面,能夠獲取即時新浪財經數據、新浪股吧數據、個股信息地雷數據等數據。
介面簡單易懂,返回的數據格式規整,非常便於處理分析!
數據挖掘實驗室
持續追蹤大數據和數據新聞前沿,通過自然語言處理、機器學習、R等大數據處理手段和D3、Echarts等數據可視化方法,玩轉大數據驅動新聞。
㈤ 怎樣用python提取不同股票csv里特定時間段的數據
用pandas庫,
import pandas as pd
data = pd.read_csv('train.csv')
train_data = data.values[0:TRAIN_NUM,1:]
train_label = data.values[0:TRAIN_NUM,0]
study.163.com/course/courseMain.htm?courseId=1000035
機器學習正好講了這個手寫識別的例子!
㈥ PYthon遍歷語句求指導,如何通過python下載某時期所有股票日線信息然後存文件
你可以去官網看看怎麼去做,
㈦ 為什麼pandas有國內股票數據
都是公開發行上市的股票,當然會有的,Pandas是數據分析工具包
TuShare是國內股票數據抓取工具,除了股票的實時和歷史數據,還有基本面數據,加上自然語言處理(比如情緒分析),或者機器學習,就比較有趣了。
㈧ 如何選取過去每個月股票的市值 python
類似,可以修改一下
股票漲跌幅數據是量化投資學習的基本數據資料之一,下面以python代碼編程為工具,獲得所需要的歷史數據。主要步驟有:
(1) #按照市值從小到大的順序活得N支股票的代碼;
(2) #分別對這一百隻股票進行100支股票操作;
(3) #獲取從2016.05.01到2016.11.17的漲跌幅數據;
(4) #選取記錄大於40個的數據,去除次新股;
(5) #將文件名名為「股票代碼.csv」。
具體代碼如下:
# -*- coding: utf-8 -*-
"""
Created on Thu Nov 17 23:04:33 2016
獲取股票的歷史漲跌幅,並分別存為csv格式
@author: yehxqq151376026
"""
import numpy as np
import pandas as pd
#按照市值從小到大的順序活得100支股票的代碼
df = get_fundamentals(
query(fundamentals.eod_derivative_indicator.market_cap)
.order_by(fundamentals.eod_derivative_indicator.market_cap.asc())
.limit(100),'2016-11-17', '1y'
)
#分別對這一百隻股票進行100支股票操作
#獲取從2016.05.01到2016.11.17的漲跌幅數據
#選取記錄大於40個的數據,去除次新股
#將文件名名為「股票代碼.csv」
for stock in range(100):
priceChangeRate = get_price_change_rate(df['market_cap'].columns[stock], '20160501', '20161117')
if priceChangeRate is None:
openDays = 0
else:
openDays = len(priceChangeRate)
if openDays > 40:
tempPrice = priceChangeRate[39:(openDays - 1)]
for rate in range(len(tempPrice)):
tempPrice[rate] = "%.3f" %tempPrice[rate]
fileName = ''
fileName = fileName.join(df['market_cap'].columns[i].split('.')) + '.csv'
fileName
tempPrice.to_csv(fileName)
㈨ 如何編程從免費股票軟體中提取實時數據
自己寫程序的話,一種方法是從已提供的信息源,例如webservice獲取數據。還有種辦法就是去連接提供即時信息的網頁硬解析。
代碼舉例如下:
Created on Thu Jul 23 09:17:27 2015
@author: jet
"""
DAY_PRICE_COLS = ['date', 'open', 'high', 'close', 'low', 'volume',
'chg', '%chg', 'ma5', 'ma10', 'ma20',
'vma5', 'vma10', 'vma20', 'turnover']
DAY_PRICE_URL = '%sapi.finance.%s/%s/?code=%s&type=last'
INDEX_KEY = ['SH', 'SZ', 'HS300', 'SZ50', 'GEB', 'SMEB']
INDEX_LIST = {'SH': 'sh000001', 'SZ': 'sz399001', 'HS300': 'sz399300',
'SZ50': 'sh000016', 'GEB': 'sz399006', 'SMEB': 'sz399005'}
INDEX_DAY_PRICE_COLS= ['date', 'open', 'high', 'close', 'low', 'volume',
'chg', '%chg', 'ma5', 'ma10', 'ma20',
'vma5', 'vma10', 'vma20']
K_TYPE_KEY = ['D', 'W', 'M']
K_TYPE_MIN_KEY = ['5', '15', '30', '60']
K_TYPE = {'D': 'akdaily', 'W': 'akweekly', 'M': 'akmonthly'}
MIN_PRICE_URL = '%sapi.finance.%s/akmin?scode=%s&type=%s'
PAGE_TYPE = {'http': 'http://', 'ftp': 'ftp://'}
PAGE_DOMAIN = {'sina': 'sina.com.cn', 'ifeng': 'ifeng.com'}
URL_ERROR_MSG = '獲取失敗,請檢查網路狀態,或者API埠URL已經不匹配!'
get_hist_data.py
# -*- coding: utf-8 -*-
"""
Created on Thu Jul 23 09:15:40 2015
@author: jet
"""
import const as ct
import pandas as pd
import json
from urllib2 import urlopen,Request
def get_hist_data(code = None, start = None, end = None, ktype = 'D'):
"""
功能:
獲取個股歷史交易數據
--------
輸入:
--------
code:string
股票代碼 比如:601989
start:string
開始日期 格式:YYYY-MM-DD 為空時取到API所提供的最早日期數據
end:string
結束日期 格式:YYYY-MM-DD 為空時取到最近一個交易日數據
ktype:string(default=D, 函數內部自動統一為大寫)
數據類型 D=日K線,W=周K線,M=月K線,5=5分鍾,15=15分鍾
30=30分鍾,60=60分鍾
輸出:
--------
DataFrame
date 日期
open 開盤價
high 最高價
close 收盤價
low 最低價
chg 漲跌額
p_chg 漲跌幅
ma5 5日均價
ma10 10日均價
ma20 20日均價
vma5 5日均量
vma10 10日均量
vma20 20日均量
turnover換手率(指數無此項)
"""
code = code_to_APIcode(code.upper())
ktype = ktype.upper()
url = ''
url = get_url(ktype, code)
print(url)
js = json.loads(ping_API(url))
cols = []
if len(js['record'][0]) == 14:
cols = ct.INDEX_DAY_PRICE_COLS
else:
cols = ct.DAY_PRICE_COLS
df = pd.DataFrame(js['record'], columns=cols)
if ktype in ct.K_TYPE_KEY:
df = df.applymap(lambda x:x.replace(u',', u''))
for col in cols[1:]:
df[col]=df[col].astype(float)
if start is not None:
df = df [df.date >= start]
if end is not None:
df = df[df.date <= end]
df = df.set_index('date')
return df
def code_to_APIcode(code):
"""
功能:
驗證輸入的股票代碼是否正確,若正確則返回API對應使用的股票代碼
"""
print(code)
if code in ct.INDEX_KEY:
return ct.INDEX_LIST[code]
else:
if len(code) != 6:
raise IOError('code input error!')
else:
return 'sh%s'%code if code[:1] in ['5', '6'] else 'sz%s'%code
def get_url(ktype, code):
"""
功能:
驗證輸入的K線類型是否正確,若正確則返回url
"""
if ktype in ct.K_TYPE_KEY:
url = ct.DAY_PRICE_URL % (ct.PAGE_TYPE['http'], ct.PAGE_DOMAIN['ifeng'],
ct.K_TYPE[ktype], code)
return url
elif ktype in ct.K_TYPE_MIN_KEY:
url = ct.MIN_PRICE_URL % (ct.PAGE_TYPE['http'], ct.PAGE_DOMAIN['ifeng'],
code, ktype)
return url
else:
raise IOError('ktype input error!')
def ping_API(url):
"""
功能:
向API發送數據請求,若鏈接正常返回數據
"""
text = ''
try:
req = Request(url)
text = urlopen(req,timeout=10).read()
if len(text) < 15:
raise IOError('no data!')
except Exception as e:
print(e)
else:
return text
#測試入口
print(get_hist_data('601989','2015-07-11','2015-07-22'))