溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python如何爬取基金股票最新數(shù)據(jù)并用excel繪制樹狀圖

發(fā)布時間:2021-10-26 10:13:28 來源:億速云 閱讀:185 作者:柒染 欄目:大數(shù)據(jù)

python如何爬取基金股票最新數(shù)據(jù)并用excel繪制樹狀圖,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

大家好,最近大A的白馬股們簡直跌媽不認,作為重倉了抱團白馬股基金的養(yǎng)雞少年,每日那是一個以淚洗面啊。

python如何爬取基金股票最新數(shù)據(jù)并用excel繪制樹狀圖

跌媽不認

不過從金融界最近一個交易日的大盤云圖來看,其實很多中小股還是紅色滴,綠的都是白馬股們。

那么,今天我們試著用python爬取最近交易日的股票數(shù)據(jù),并試著用excel簡單繪制上面這個樹狀圖。

  • 爬取網(wǎng)易財經(jīng)各板塊股票數(shù)據(jù)

  • excel樹狀圖

  • 簡單的樹狀圖

  • 帶有增長率的樹狀圖

一、爬取網(wǎng)易財經(jīng)各板塊股票數(shù)據(jù)

目標網(wǎng)址:

http://quotes.money.163.com/old/#query=hy010000&DataType=HS_RANK&sort=PERCENT&order=desc&count=24&page=0

python如何爬取基金股票最新數(shù)據(jù)并用excel繪制樹狀圖

網(wǎng)易財經(jīng)-行情中心

由于這個爬蟲部分比較簡單,這里不做過多贅述,僅介紹一下思路并附上完整代碼供大家參考。

爬蟲思路:

請求目標網(wǎng)站數(shù)據(jù),解析出主要行業(yè)(新)的數(shù)據(jù):行業(yè)板塊名稱及對應id(如金融,hy010000)

根據(jù)行業(yè)板塊對應id構(gòu)造新的行業(yè)股票數(shù)據(jù)網(wǎng)頁

由于翻頁網(wǎng)址不變,代入?yún)?shù),獲取全部頁數(shù),然后翻頁爬取全部數(shù)據(jù)

爬蟲代碼:

# -*- coding: utf-8 -*-"""
Created Feb 28 10:30:56 2021
@author: 可以叫我才哥
"""import requestsimport reimport pandas as pd# 獲取全部板塊及板塊idurl = 'http://quotes.money.163.com/old/#query=hy001000&DataType=HS_RANK&sort=PERCENT&order=desc&count=24&page=0'r = requests.get(url)

html = r.text# 替換非字符為空,便于下面的正則html = re.sub('\s','',html)# 正則獲取 板塊及id所在區(qū)域labelHtml = re.findall(r'</span>主要行業(yè)\(新\)</a>(.*?)</span>證監(jiān)會行業(yè)\(新\)',html)[0]# 正則板塊和id,結(jié)果為由元組組成的列表label = re.findall(r'"qid="(hy.*?)"qquery=.*?"title="(.*?)">',labelHtml)# 轉(zhuǎn)化為dataframe類型dfLabel = pd.DataFrame(label,columns=['id','板塊'])# 根據(jù)板塊id和翻頁獲取頁面數(shù)據(jù)(json格式)def get_json(hy_id, page):    query = 'PLATE_IDS:' + str(hy_id)
    params={
        'host': 'http://quotes.money.163.com/hs/service/diyrank.php',
        'page': page,
        'query': query,
        'fields': 'NO,SYMBOL,NAME,PRICE,PERCENT,UPDOWN,FIVE_MINUTE,OPEN,YESTCLOSE,HIGH,LOW,VOLUME,TURNOVER,HS,LB,WB,ZF,PE,MCAP,TCAP,MFSUM,MFRATIO.MFRATIO2,MFRATIO.MFRATIO10,SNAME,CODE,ANNOUNMT,UVSNEWS', #你可以不用這么多字段        'sort': 'PERCENT',
        'order': 'desc',
        'count': '24',
        'type': 'query',
        }
    url = 'http://quotes.money.163.com/hs/service/diyrank.php?'    r = requests.get(url,params=params)
    j = r.json()
    
    return j# 空列表用于存取每頁數(shù)據(jù)dfs = []# 遍歷全部板塊for hy_id,板塊 in dfLabel.values:
    # 獲取頁數(shù)    j = get_json(hy_id, 0)
    pages = j['pagecount']
    
    for page in range(pages):
        j = get_json(hy_id, page)
        data = j['list']
        df = pd.DataFrame(data)
        df['板塊'] = 板塊
        dfs.append(df)
    print(f'已爬取{len(dfs)}個板塊數(shù)據(jù)')

result = pd.concat(dfs)

二、excel樹狀圖

excel樹狀圖是在office2016級之后版本中新加的圖表類型,想要繪制需要基于此版本及之后的版本哦。

簡單的樹狀圖繪制流程:框選數(shù)據(jù)—>插入—>圖表—>選中樹狀圖 即可。

python爬取基金股票最新數(shù)據(jù),并用excel繪制樹狀圖

樹狀圖繪制流程

以下圖為例,在樹狀圖中,每個色塊代表一個省份,色塊面積大小則由其GDP值大小決定。

python如何爬取基金股票最新數(shù)據(jù)并用excel繪制樹狀圖

2020年全國各地GDP

三、帶有增長率的樹狀圖

我們發(fā)現(xiàn),在基礎的樹狀圖中,色塊顏色除了區(qū)別色塊之外并沒有其他特殊含義。拿GDP來說,除了值之外我們一般也會去看其增長率,那么是否可以讓色塊顏色和增長率有關聯(lián)呢?

下面我們試著探究一下,如果成功的話,那么金融界的大盤云圖似乎也可以用excel樹狀圖來進行繪制了不是!

1、思路:

我們希望色塊顏色能代表增長率,比如紅色是上漲,綠色是下降且顏色越深代表絕對值越大

再對每個色塊進行對應的顏色填充即可

由于 樹狀圖頂多支持多級,色塊顏色也只能手動單一填充,怎么辦呢?既然手動可以,那么其實就可以用VBA自動化這個過程咯。

2、增長率配色

基于上述思路,我們需要對增長率進行配色,最簡單的就是用條件格式里的色階。

框選增長率數(shù)據(jù)—>開始—>條件格式—>色階(選中那個讓值越大顏色越紅的,由于這里有負增長率,所以選了帶紅綠的):

python爬取基金股票最新數(shù)據(jù),并用excel繪制樹狀圖

為了更好的展示區(qū)分正負增長率,我們在設置完色階后再進行管理規(guī)則:

我們將中間值設為數(shù)字0,這樣負增長率就是綠色,正增長率就是紅色;

我們將最大值設置為百分點值80,也就是增長率前80%的值都是最紅的。

python如何爬取基金股票最新數(shù)據(jù)并用excel繪制樹狀圖

最終配色效果:

python爬取基金股票最新數(shù)據(jù),并用excel繪制樹狀圖

配色效果

四、VBA填充色塊顏色

先看效果:

湖北因為收到疫情影響最大,有接近小半年屬于封省狀態(tài),全年增長率為負數(shù)。

python如何爬取基金股票最新數(shù)據(jù)并用excel繪制樹狀圖

各省GDP及增長率

由于條件格式下單元格顏色是不固定的無法通過vba獲取,我們需要將顏色賦值到新的一列中去,需要用到如下操作:

選中增長率數(shù)據(jù)復制,然后點擊剪切板最右下角會出現(xiàn)剪貼板,再鼠標左鍵選擇需要粘貼的地方如E2,點擊剪貼板中需要粘貼的數(shù)據(jù)即可。 這個時候,被粘貼的單元格區(qū)域的顏色就是固定的了,你可以選擇刪除數(shù)據(jù)只留顏色部分。

python爬取基金股票最新數(shù)據(jù),并用excel繪制樹狀圖

單元格色復制操作流程

VBA思路:

  • 激活需要操作的圖表(Activate)

  • 遍歷全部的系列和數(shù)據(jù)點(ActiveChart.FullSeriesCollection(1).Points.Count)

  • 從第一個數(shù)據(jù)點開始,獲取對應增長率單元格顏色(ActiveSheet.Range("E" & i + 1).Interior.Color)

  • 將單元格賦值給該數(shù)據(jù)點(Selection.Format.Fill.ForeColor.RGB)

VBA代碼:

Sub My_Color()
 
 ActiveSheet.ChartObjects("圖表 1").Activate '遍歷全部的數(shù)據(jù)點
 For i = 1 To ActiveChart.FullSeriesCollection(1).Points.Count
 '選中數(shù)據(jù)點
 ActiveChart.FullSeriesCollection(1).Points(i).Select '獲取單元格顏色
 MyColor = ActiveSheet.Range("E" & i + 1).Interior.Color
 '將單元格顏色賦值給對應數(shù)據(jù)點填充色
 Selection.Format.Fill.ForeColor.RGB = MyColor
 Next

執(zhí)行腳本過程如下:

python如何爬取基金股票最新數(shù)據(jù)并用excel繪制樹狀圖

關于python如何爬取基金股票最新數(shù)據(jù)并用excel繪制樹狀圖問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業(yè)資訊頻道了解更多相關知識。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI