Python爬取各類基金數據,以『動圖可視化』方式展示基金的漲跌情況


前言

本文的文字及圖片來源於網絡,僅供學習、交流使用,不具有任何商業用途,如有問題請及時聯系我們以作處理。

PS:如有需要Python學習資料的小伙伴可以點擊下方鏈接自行獲取

Python免費學習資料、代碼以及交流解答點擊即可加入


 

大家好,最近基金把人給跌傻了

 

 

但是又看了看自己投的哪些基金的管理人,都很優秀啊,於是心又穩下來了,今天給大家分享一篇爬取基金數據進行數據可視化的文章,希望有助於大家學習技術和提升認知。
入市需謹慎,理財有風險。

1.基金數據可視化

去年接觸基金,體會到了基金的香(真香),今天爬取『蛋卷基金』數據,通過pyecharts動圖可視化方式展示基金的漲跌情況。
本文將圍繞這三點去進行爬取數據,動圖可視化展示數據:

  • 近一月漲跌幅前10名
  • 基金各個階段漲跌幅
  • 近30個交易日凈值情況

2.數據獲取

數據來源

本文的數據來源:『蛋卷基金』


https://danjuanapp.com/ 

數據分析

接下爬取的數據涉及五大類(五種基金)
1.股票型基金
2.混合型基金
3.債券型基金
4.指數型基金
5.QDII型基金


通過抓包分析ajax異步交互鏈接的規律:

 

  • type是對應的五種基金的代號
  • order_by是對應最近多久的基金漲跌幅排序
'近一周':'1w' '近一月':'1m' '近三月':'3m' '近六月':'6m' '近1年':'1y' '近2年':'2y' '近3年':'3y' '近5年':'5y' 
  • page是對應的頁數,從第1頁開始



    備注:『蛋卷基金』這個網站沒有反爬!!!,請求不需要cookie!!!
    ok,這些都清楚之后,接下來就可以開始爬取數據了!

3.數據可視化

由於『蛋卷基金』這個網站沒有反爬!!!,所以數據爬取和可視化分析放一起了(直接爬取數據后就進行可視化!)

分析1:近一月漲跌幅前10名

爬蟲代碼


###基金類型 dict_type={"股票型":1,"混合型":3,"債券型":2,"指數型":5,"QDII型":11} ###時間 dict_time={'近一周':'1w','近一月':'1m','近三月':'3m','近六月':'6m','近1年':'1y','近2年':'2y','近3年':'3y','近5年':'5y'} for key in dict_type: url = "https://danjuanapp.com/djapi/v3/filter/fund?type="+str(dict_type[key])+"&order_by=1w&size=10&page=1" res = requests.get(url, headers=headers) res.encoding = 'utf-8' s = json.loads(res.text) s = s['data']['items'] name = [] value = [] for i in range(0,len(s)): print(s[i]['fd_name']+":"+s[i]['yield']) name.append(s[i]['fd_name']) value.append(s[i]['yield']) ###開始繪圖 pie(name, value, str(key)+"基金漲跌幅", "["+str(key)+"]基金近一月漲跌幅前10名") 

餅狀圖可視化代碼


###餅狀圖 def pie(name,value,picname,tips): c = ( Pie() .add( "", [list(z) for z in zip(name, value)], # 餅圖的中心(圓心)坐標,數組的第一項是橫坐標,第二項是縱坐標 # 默認設置成百分比,設置成百分比時第一項是相對於容器寬度,第二項是相對於容器高度 center=["35%", "50%"], ) .set_colors(["blue", "green", "yellow", "red", "pink", "orange", "purple"]) # 設置顏色 .set_global_opts( title_opts=opts.TitleOpts(title=""+str(tips)), legend_opts=opts.LegendOpts(type_="scroll", pos_left="70%", orient="vertical"), # 調整圖例位置 ) .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}")) .render(str(picname)+".html") ) 

這里將餅狀圖可視化代碼封裝成函數,繪制五種基金的餅狀圖只需調用這個函數即可


###開始繪圖 pie(name, value, str(key)+"基金漲跌幅", "["+str(key)+"]基金近一月漲跌幅前10名") 

1.股票型基金

2.混合型基金

3.債券型基金

4.指數型基金

5.QDII型基金

分析

上圖中是五大類基金的選取近一個月漲跌幅最高前10名的基金進行繪圖。

同理近一周、近三個月、近一年也可以通過這個代碼進行繪制,只需要將參數order_by修改即可


'近一周':'1w' '近一月':'1m' '近三月':'3m' '近六月':'6m' '近1年':'1y' '近2年':'2y' '近3年':'3y' '近5年':'5y' 

分析2:基金各個階段漲跌幅

上面分析中可以清楚這五類基金近一個月最高的漲跌幅排名情況,下面從排名中選取第一名基金(五類中各選取第一名)分別展示該基金各個階段的漲跌幅情況

階段情況:


'近一周':'1w' '近一月':'1m' '近三月':'3m' '近六月':'6m' '近1年':'1y' '近2年':'2y' '近3年':'3y' '近5年':'5y' 

爬蟲代碼


####分析2:基金各個階段漲跌幅 def analysis2(): name =['近1周','近1月','近3月','近6月','近1年','近3年','近5年'] ##五類基金 dict_value={} for key in dict_type: #### 獲取排名第一名基金代號 url = "https://danjuanapp.com/djapi/v3/filter/fund?type="+str(dict_type[key])+"&order_by=1w&size=10&page=1" res = requests.get(url, headers=headers) res.encoding = 'utf-8' s = json.loads(res.text) ###取第一名 fd_code = s['data']['items'][0]['fd_code'] #### 獲取排名第一名基金各個階段情況 fu_url = "https://danjuanapp.com/djapi/fund/derived/"+str(fd_code) res = requests.get(fu_url, headers=headers) res.encoding = 'utf-8' s = json.loads(res.text) data = s['data'] valuess=[] ####防止基金最長時間不夠1年、2年、5年的情況報錯,用0填充 ##近1周 try: valuess.append(data['nav_grl1w']) except: valuess.append(0) ##近1月 try: valuess.append(data['nav_grl1m']) except: valuess.append(0) ##近3月 try: valuess.append(data['nav_grl3m']) except: valuess.append(0) ##近6月 try: valuess.append(data['nav_grl6m']) except: valuess.append(0) ##近1年 try: valuess.append(data['nav_grl1y']) except: valuess.append(0) ##近3年 try: valuess.append(data['nav_grl3y']) except: valuess.append(0) ##近5年 try: valuess.append(data['nav_grl5y']) except: valuess.append(0) ###添加到集合中 dict_value[key]=valuess bars(name,dict_value) 

可視化代碼


###柱形圖 def bars(name,dict_values): # 鏈式調用 c = ( Bar( init_opts=opts.InitOpts( # 初始配置項 theme=ThemeType.MACARONS, animation_opts=opts.AnimationOpts( animation_delay=1000, animation_easing="cubicOut" # 初始動畫延遲和緩動效果 )) ) .add_xaxis(xaxis_data=name) # x軸 .add_yaxis(series_name="股票型", yaxis_data=dict_values['股票型']) # y軸 .add_yaxis(series_name="混合型", yaxis_data=dict_values['混合型']) # y軸 .add_yaxis(series_name="債券型", yaxis_data=dict_values['債券型']) # y軸 .add_yaxis(series_name="指數型", yaxis_data=dict_values['指數型']) # y軸 .add_yaxis(series_name="QDII型", yaxis_data=dict_values['QDII型']) # y軸 .set_global_opts( title_opts=opts.TitleOpts(title='漲跌幅', subtitle='李運辰繪制', # 標題配置和調整位置 title_textstyle_opts=opts.TextStyleOpts( font_family='SimHei', font_size=25, font_weight='bold', color='red', ), pos_left="90%", pos_top="10", ), xaxis_opts=opts.AxisOpts(name='階段', axislabel_opts=opts.LabelOpts(rotate=45)), # 設置x名稱和Label rotate解決標簽名字過長使用 yaxis_opts=opts.AxisOpts(name='漲跌點'), ) .render("基金各個階段漲跌幅.html") ) 

分析

從上面動圖可以清楚這五類基金第一名基金各個階段的漲跌幅情況。

有的基金最長時間沒有達到3年或者5年,這里使用填充0處理。

分析3:近30個交易日凈值情況

同理,上面分析中可以清楚這五類基金近一個月最高的漲跌幅排名情況,下面從排名中選取第一名基金(五類中各選取第一名)分別展示該基金近30個交易日凈值情況。

爬蟲代碼


####分析3:近30個交易日凈值情況 def analysis3(): for key in dict_type: #### 獲取排名第一名基金代號 url = "https://danjuanapp.com/djapi/v3/filter/fund?type=" + str( dict_type[key]) + "&order_by=1w&size=10&page=1" res = requests.get(url, headers=headers) res.encoding = 'utf-8' s = json.loads(res.text) ###取第一名 fd_code = s['data']['items'][0]['fd_code'] #### 獲取排名第一名基金近30個交易日凈值情況 fu_url = "https://danjuanapp.com/djapi/fund/nav/history/"+str(fd_code)+"?size=30&page=1" res = requests.get(fu_url, headers=headers) res.encoding = 'utf-8' s = json.loads(res.text) data = s['data']['items'] name=[] value=[] for k in range(0,len(data)): name.append(data[k]['date']) value.append(data[k]['nav']) silder(name, value,key) 

可視化代碼


###拉伸圖 def silder(name,value,tips): c = ( Bar(init_opts=opts.InitOpts(theme=ThemeType.DARK)) .add_xaxis(xaxis_data=name) .add_yaxis(tips, yaxis_data=value) .set_global_opts( title_opts=opts.TitleOpts(title=str(tips)+"近30個交易日凈值情況"), datazoom_opts=[opts.DataZoomOpts(), opts.DataZoomOpts(type_="inside")], ) .render(str(tips)+"近30個交易日凈值情況.html") ) 

1.股票型

2.混合型

3.債券型

4.指數型

5.QDII型

分析

從上面動圖可以清楚這五類基金第一名基金近30個交易日凈值情況。

4.總結

以上就是爬取基金數據並通過pyecharts動圖可視化方式展示基金的漲跌情況。

圍繞這三點去進行爬取數據,動圖可視化展示數據:

  • 近一月漲跌幅前10名
  • 基金各個階段漲跌幅
  • 近30個交易日凈值情況


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM