首頁 > 上網技巧 > 電腦小技巧 > 用Python找到最賺錢的基金

用Python找到最賺錢的基金

時間:2019-12-04 09:41 作者:QQ地帶 我要評論

  關于基金分析這個小項目,我前面已經寫了2篇了,第一篇是思路篇,第二篇是實戰篇,現在最后一篇就是數據分析篇。其實還有第四篇就是可視化數據,數據可視化絕對是一門藝術活,以后我會寫數據可視化,今天主要是帶領大家一起來分析一下基金數據,看看哪只基金能讓你賺最多的錢 ,畢竟投資理財才是是王道啊.小伙伴們,我們一起來探尋一下~~

第一步:讀取數據并了解數據

上一篇我們已經把6500多只基金存入了CSV文件,這是一個大的表格數據,我們先讀取數據并初步了解一下吧

a).讀入CSV文件

df=pd.read_csv(file)

b).看看有多少只基金

print len(df)
>>
6548

c).熟悉數據格式,看看行列的信息

print df.index
>>
RangeIndex(start=0, stop=6548, step=1)
print df.columns
>>
Index([u'fund_id', u'fund_name', u'one_month', u'three_month', u'six_month',
       u'one_year', u'three_year', u'from_start'],
      dtype='object')

d).看看表格中的前5只基金

image.png

經過上面3步,我們已經知道了這個大表格數據是6549行*8列,其中:

  • index是從0開始到6548的int 

  • fund_id是基金的id

  • fund_name這一列都是中文字符

  • 其他的列都是帶百分號的數字字符串

     

這樣的序列數據,我們要處理會有一些麻煩,比如:

  • index不是基金id,不好統計

  • 漲幅都是帶百分號的字符串,如何排序和統計

  • 如何要橫向統計,每一個行中有既有fund_name中文字符,又有百分百的數字,如何求和

     

如何解決這3個問題呢,我們接著往下看

第二步:數據清洗

1).先把index換成基金的id

把fund_id作為index,便于后面的處理,會方便很多,用DataFrame里面的set_index函數

image.png

2).看看index是不是已經換了

image.png

3).去掉NA行

表格里面有很多空的數據,這樣的數據會影響我們的分析,我們必須要去掉

#去掉NA的行

df2=df.dropna()
print 'dropna column:',len(df2)
>>
dropna column: 6315

 

4).去掉fund_name

為啥要去掉fund_name,比如我們想統計一個基金的1個月,3個月,6個月,1年,3年和成立以來的和,看看它的總成績如何

直接sum的會有一個問題,就是fund_name是字符串,所以我們先把fund_name去掉吧,然后把fund_id那一列也去掉,因為index已經是fund_index我們就不要重復啦

image.png

這樣的數據是不是干凈了很多,清爽了很多啊

5).然后去掉%,我們就可以愉快的排序了

如何取消%,這個時候我們需要用到pandas里面的一個大名鼎鼎的apply函數

image.png

第三步:找出最佳投資基金

1).經過前面2步,已經萬事俱備

也就是說我們可以隨心所欲的分析,先來看看頭牌的情況,獲得每一列的最大值,看看整個基金里面的頭牌的情況,我們取前100名

#獲得"from_start"(按照基金成立)以來漲幅大小排序

image.png

同樣的道理,我們依此獲取其他的頭牌
#獲得 按照基金成立三年以來漲幅 大小排序
print df_drop_percent.sort_values(by=['three_year'],ascending=False).head(range)
y3_index=df_drop_percent.sort_values(by=['three_year'],ascending=False).head(range).index

#獲得 按照基金成立一年以來漲幅 大小排序
y1_index=df_drop_percent.sort_values(by=['one_year'],ascending=False).head(range).index

#獲得 按照基金成立6個月以來漲幅 大小排序
m6_index=df_drop_percent.sort_values(by=['six_month'],ascending=False).head(range).index

#獲得按照基金成立3個月以來漲幅 大小排序
m3_index=df_drop_percent.sort_values(by=['three_month'],ascending=False).head(range).index

#獲得 按照基金成立1個月以來漲幅 大小排序
m1_index=df_drop_percent.sort_values(by=['one_month'],ascending=False).head(range).index

2).找出全能王中王

我們想知道所以的組合里面有沒有最強的,就是從成立以來都是漲的,而且3年,1年,半年,3個月,1個月一直都在漲的,這樣的基金簡直就是王中王啊,到底有沒有呢,怎么找呢

#取上面所有的index并轉化成集合

fs_index_set=set(fs_index)
y3_index_set=set(y3_index)
y1_index_set=set(y1_index)
m6_index_set=set(m6_index)
m3_index_set=set(m3_index)
m1_index_set=set(m1_index)

#取成立以來都是漲的,而且3年,1年,半年,3個月,1個月一直都在漲的

mix_6c=fs_index_set&y3_index_set&y1_index_set&m6_index_set&m3_index_set&m1_index_set
print 'mix 6c:',mix_6c
>>
mix 6c: set([])

#看來沒有東方不敗,一直都是在漲基金,那有沒有3年,1年,6個月,3個月,1個月都在漲的基金呢

mix_5c=y3_index_set&y1_index_set&m6_index_set&m3_index_set&m1_index_set
print 'mix 5c:',mix_5c
>>
mix 5c:set([150050, 619, 150124, 110022])

哇真的有啊,發現這4個基金才是真正的黃金,激動的老淚縱橫~~穩健的投資者可以考慮這4個基金

3).1年以內的最佳基金

積近的投資者,肯定還想看看最近1年的所以數據

mix_4c=y1_index_set&m6_index_set&m3_index_set&m1_index_set
print 'mix 4c:',mix_4c
>>
mix 4c: set([165312, 150050, 150149, 110022, 989,
 619, 150124,169101, 169102, 169103, 1712, 1044, 150270
 150199, 1112, 161725, 990])

#把上面的最佳基金橫向求和,看到底那個最好

image.png

>>
165312 72.48
150050 119.28
150149 106.17
110022 97.43
989 78.04
619 71.26
150124 110.42
169101 100.49
169102 86.71
169103 78.81
1712 76.7
1044 76.12
150270 171.5
150199 141.16
1112 88.05
161725 88.0
990 78.04

發現最好的1只基金150270一年漲了1.7倍多,太爽了,看看名字叫啥

         fund_id fund_name one_month three_month six_month one_year  \
fund_id                                                               
150050    150050    南方消費進取    21.42%      13.58%    22.58%   61.70%   
        three_year from_start  
fund_id                        
150050     270.26%    197.13%  

原來最好的基金就是南方消費進取

結論:

 


 

好了,今天6500多只基金數據分析篇就先講到這里,其實數據分析是非常有趣的,這個小項目算是完成了,上面的對基金數據分析只是冰山一角,還有很多地方可以挖掘和分析,而基金投資,特別是量化基金投資涉及很多方面和模型,最主要的就是選基金只是第一步,還有如何買,投資多少,如何建模減少風險,如何賣,等等都有很講究,今天的內容希望能給初學者一些啟發,若有什么不懂的,也可以留言跟我探討交流


標簽: Python 基金
頂一下
(0)
0%
踩一下
(0)
0%

Google提供的廣告

辽宁11选5任选四遗漏 258棋牌app下载 德甲联赛赛程积分排名2019 虎扑篮球中国篮球 网络赚钱 哈灵浙江麻将安卓版 永利棋牌游戏 特肖一块赔多少 英超联赛直播 长春棋牌游戏 赛车竞猜彩票骗局