導航:首頁 > 數據行情 > pandas操作股票資料庫

pandas操作股票資料庫

發布時間:2022-12-09 21:29:00

❶ python編程這門科目是用來編寫股票指標和選股器的嗎

python是一門語言補丁,最大的優勢在於擁有眾多的包,很多事情都可以做。而在數據分析領域提供了pandas,numpy,matplotlib等進行數據可視化,用於股票,自然也是可以的

❷ 如何用Python和機器學習炒股賺錢

相信很多人都想過讓人工智慧來幫你賺錢,但到底該如何做呢?瑞士日內瓦的一位金融數據顧問 Gaëtan Rickter 近日發表文章介紹了他利用 Python 和機器學習來幫助炒股的經驗,其最終成果的收益率跑贏了長期處於牛市的標准普爾 500 指數。雖然這篇文章並沒有將他的方法完全徹底公開,但已公開的內容或許能給我們帶來如何用人工智慧炒股的啟迪。

我終於跑贏了標准普爾 500 指數 10 個百分點!聽起來可能不是很多,但是當我們處理的是大量流動性很高的資本時,對沖基金的利潤就相當可觀。更激進的做法還能得到更高的回報。

這一切都始於我閱讀了 Gur Huberman 的一篇題為《Contagious Speculation and a Cure for Cancer: A Non-Event that Made Stock Prices Soar》的論文。該研究描述了一件發生在 1998 年的涉及到一家上市公司 EntreMed(當時股票代碼是 ENMD)的事件:

「星期天《紐約時報》上發表的一篇關於癌症治療新葯開發潛力的文章導致 EntreMed 的股價從周五收盤時的 12.063 飆升至 85,在周一收盤時接近 52。在接下來的三周,它的收盤價都在 30 以上。這股投資熱情也讓其它生物科技股得到了溢價。但是,這個癌症研究方面的可能突破在至少五個月前就已經被 Nature 期刊和各種流行的報紙報道過了,其中甚至包括《泰晤士報》!因此,僅僅是熱情的公眾關注就能引發股價的持續上漲,即便實際上並沒有出現真正的新信息。」

在研究者給出的許多有見地的觀察中,其中有一個總結很突出:

「(股價)運動可能會集中於有一些共同之處的股票上,但這些共同之處不一定要是經濟基礎。」

我就想,能不能基於通常所用的指標之外的其它指標來劃分股票。我開始在資料庫裡面挖掘,幾周之後我發現了一個,其包含了一個分數,描述了股票和元素周期表中的元素之間的「已知和隱藏關系」的強度。

我有計算基因組學的背景,這讓我想起了基因和它們的細胞信號網路之間的關系是如何地不為人所知。但是,當我們分析數據時,我們又會開始看到我們之前可能無法預測的新關系和相關性。

如果你使用機器學習,就可能在具有已知和隱藏關系的上市公司的寄生、共生和共情關系之上搶佔先機,這是很有趣而且可以盈利的。最後,一個人的盈利能力似乎完全關乎他在生成這些類別的數據時想出特徵標簽(即概念(concept))的強大組合的能力。

我在這類模型上的下一次迭代應該會包含一個用於自動生成特徵組合或獨特列表的單獨演算法。也許會基於近乎實時的事件,這可能會影響那些具有隻有配備了無監督學習演算法的人類才能預測的隱藏關系的股票組。

❸ 怎麼用python panda 算股票市場收益率

1.收集數據,開盤價,收盤價,交易量
2.用pandas處理數據,處理缺失值
3.用股票收益率的公式帶入
說白了,pandas只是個好用的工具,方法都是一樣的,只是效率問題
有多少人工,就有多少智能

❹ 怎麼利用pandas做數據分析

pandas的初級功能

1、邏輯運算

data[data['column_1']=='french']

data[(data['column_1']=='french') & (data['year_born']==1990)]

data[(data['column_1']=='french')&(data['year_born']==1990)&(data['city']=='London')]

如果要根據邏輯操作對數據進行運算,在使用& (AND)、~ (NOT)和| (OR)等邏輯操作之前和之後添加「(」&「)」。

data[data['column_1'].isin(['french', 'english'])]

不要為同一列編寫多個OR,最好是使用.isin()函數。

2、基本繪圖

多虧了matplotlib包,這個特性才得以實現。就像我們在介紹中說的,它可以直接用在pandas身上。

如果你使用Jupyter,在繪圖之前,不要忘記寫這一行(在代碼中只寫一次)

3、更新數據

data.loc[8, 'column_1'] = 'english'

將' column_1 '的第8行值替換為' english '

data.loc[data['column_1']=='french', 'column_1'] = 'French'

在一行中更改多行值

pandas的中級功能

1、計算功能

data['column_1'].value_counts

2、對全行、全列或所有數據的操作

data['column_1'].map(len)

len()函數應用於「column_1」的每個元素

map()操作將一個函數應用於列的每個元素。

data['column_1'].map(len).map(lambda x : x/100).plot()

pandas的另一個特點是進行鏈式操作。它可以幫助你在一行代碼中執行多個操作,從而更加簡單和高效。

data.apply(sum)

.apply()將函數應用於列。

.applymap()將一個函數應用於表(DataFrame)中的所有單元格。

3、tqdm包

在處理大型數據集時,pandas可能需要一些時間來運行.map()、.apply()、.applymap()操作。tqdm是一個非常有用的包,它可以幫助預測這些操作何時完成。

from tqdm import tqdm_notebook

tqdm_notebook().pandas()

用pandas設置tqdm

data['column_1'].progress_map(lambda x : x.count('e'))

將.map()替換為.progress_map(),.apply()和.applymap()也是一樣

圖4 這是你在Jupyter上看到的的進度條

4、相關矩陣和散射矩陣

data.corr()

data.corr().applymap(lambda x : int(x*100)/100)

......

❺ 如何編程從免費股票軟體中提取實時數據

自己寫程序的話,一種方法是從已提供的信息源,例如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'))

❻ PYthon遍歷語句求指導,如何通過python下載某時期所有股票日線信息然後存文件

你可以去官網看看怎麼去做,

❼ python用什麼方法或者庫可以拿到全部股票代碼

首先你需要知道哪個網站上有所有股票代碼,然後分析這個網站股票代碼的存放方式,再利用python寫一個爬蟲去爬取所有的股票代碼

❽ 怎麼用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_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

❿ 數據分析—Pandas刪除數據的幾種情況

開始之前,pandas中DataFrame刪除對象可能存在幾種情況

本文就針對這四種情況探討一下如何操作。

模擬了一份股票交割的記錄。

也可以根據行號刪除記錄,比如刪除第三行

注意,這個辦法其實不是按照行號刪除,而是按照索引刪除。如果index為3,則會將前4條記錄都刪除。這個方法支持一個范圍,以及用負數表示從末尾刪除。

本例其實是篩選,如果需要保留,可以將篩選後的對象賦值給自己即可。

如果想取包含某些字元的記錄,可以去掉~

完成~
希望本文的內容對大家的學習或者工作能帶來一定的幫助,每天進步一點點,加油。

閱讀全文

與pandas操作股票資料庫相關的資料

熱點內容
中國電子的股票 瀏覽:8
用易語言寫軟體分析股票 瀏覽:276
如何看股票cci指標 瀏覽:113
ios看股票軟體 瀏覽:752
股票主力流入和散戶流入什麼意思 瀏覽:304
上海芯超生物科技有限公司股票 瀏覽:268
通達信大盤自定義股票漲停股 瀏覽:798
最新南網能源股票分析 瀏覽:240
股票已長期沒量怎麼回事 瀏覽:692
銀行的股票久跌不漲 瀏覽:829
適合盲人使用的股票軟體下載 瀏覽:526
恆生銀行股票買賣電話 瀏覽:791
機構調研對股票的影響 瀏覽:907
中國建築股票歷史最高價格是多少 瀏覽:205
科技股票剛買入就跌 瀏覽:209
金丹科技股票是不是創業板 瀏覽:455
恩施海大集團股票歷史交易數據 瀏覽:231
股票k線仙人指路是什麼意思 瀏覽:509
股票st和退市提醒 瀏覽:432
債券與股票的區別主要體現在什麼上 瀏覽:856