大數(shù)據(jù)“復(fù)活”記
999
2025-04-03
根據(jù)上圖顯示,大數(shù)據(jù)實(shí)時流處理應(yīng)該是以2線路的流程,還有經(jīng)過sparkstreaming或Flink處理后應(yīng)該是先到hive的數(shù)據(jù)倉庫后再到clickhouse,但是考慮到本人的電腦硬件資源有限,就不經(jīng)過hive的數(shù)據(jù)倉庫,直接到clickhouse。在通過clickhouse調(diào)用數(shù)據(jù)使用Echarts完成數(shù)據(jù)可視化。但是流程2如果處理不好,容易造成混亂,不好排錯,所以我先使用流程1,直接通過mysql調(diào)用數(shù)據(jù)使用Echarts完成數(shù)據(jù)可視化,完成后在拓展到流程2。
之前有找過都是關(guān)于java或scala方面的大數(shù)據(jù)編程相關(guān)資料,但是我想盡量使用python來做這個案例,恰好看到TuShare,它是一個免費(fèi)、開源的python財經(jīng)數(shù)據(jù)接口包,已將各類數(shù)據(jù)整理為dataframe類型供我們使用。特點(diǎn)是數(shù)據(jù)覆蓋范圍廣,接口調(diào)用簡單,響應(yīng)快速。
1. 使用前提是:lxml也是必須的,正常情況下安裝了Anaconda后無須單獨(dú)安裝,我安裝的是miniconda2,必須執(zhí)行:pip install lxml,再開始安裝pip install tushare,進(jìn)入jupyter notebook,查看是否安裝成功。
import tushare
print(tushare.__version__)
2. 查詢實(shí)時行情
一次性獲取當(dāng)前交易所有股票的行情數(shù)據(jù)(如果是節(jié)假日,即為上一交易日,結(jié)果顯示速度取決于網(wǎng)速)
import tushare as ts
df=ts.get_today_all()
df.head(10)
字段說明:
code:代碼,name:名稱,changepercent:漲跌幅,trade:現(xiàn)價,open:開盤價,high:最高價,low:最低價,settlement:昨日收盤價,volume:成交量,turnoverratio:換手率,amount:成交金額,per:市盈率,pb:市凈率,mktcap:總市值,nmc:流通市值
3. 實(shí)時分筆
獲取實(shí)時分筆數(shù)據(jù),可以實(shí)時取得股票當(dāng)前報價和成交信息
import tushare as ts
da=ts.get_realtime_quotes(df['code'].tail(10))
da
字段太多,選取幾個有用字段即可。
db=da[['code','name','pre_close','price','high','low','bid','ask','volume','amount','time']]
db
字段說明:
code:代碼,name:名稱,pre_close:昨日收盤價,price:當(dāng)前價格,high:今日最高價,low:今日最低價,bid:競買價(即“買一”報價),ask:競賣價(即“賣一”報價),volume:成交量 maybe you need do volume/100,amount,成交金額(元 CNY),time:時間。
4. stock_basic:描述:獲取基礎(chǔ)信息數(shù)據(jù),包括股票代碼、名稱、上市日期、退市日期等。
pro = ts.pro_api()
data=pro.stock_basic(exchange='',list_status='L',fields='ts_code,symbol,name,area,industry ')
注意:ts.pro_api()括號里面填的是注冊后的獲得的take
字段說明:
list_status:上市狀態(tài)(L上市 D退市 P暫停上市),ts_code:TS代碼,symbol:股票代碼,name:股票名稱,area:所在地域,industry:所屬行業(yè)。
5. 合并數(shù)據(jù)獲取所在地和行業(yè):
dd = db.join(dc, on=['code', 'symbol'], how='inner')
de = dd [['code','name','price','bid','ask','volume','amount','time','area','industry']]
de
出現(xiàn)ValueError: len(left_on) must equal the number of levels in the index of "right"的異常。如圖所示:
解決辦法:
import pandas as pd
dd = pd.merge(db,dc, ['code', 'symbol'], how='inner')
de = dd [['code','name','price','bid','ask','volume','amount','time' ,'area','industry']]
de
執(zhí)行后出現(xiàn)下面的情況
把dd = pd.merge(db,dc, ['code', 'symbol'], how='inner')的how=’inter’和前面的(,)一起去掉,執(zhí)行后提示
經(jīng)排查,發(fā)現(xiàn)db和dc的表里面有name,而且跟code和symbol一一對應(yīng),修改為dd = pd.merge(db, dc, on=['name','name'])即可。
MySQL 大數(shù)據(jù) 推薦系統(tǒng)
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。