Pandas 分析每周四上證指數的漲跌情況
需求描述:
用U礦做一個上證指數的數據分析,根據漲跌和時間維度來劃分,想看一下歷史上每周四的漲跌情況
實現步驟:
先去U礦的文檔上找到了獲取上證指數的方法,返回的是一個dataframe
dataframe裡面有很多欄位,找到需要的三個欄位,'secShortName','CHG','tradeDate'對應的是指數名字,漲跌數,交易日期
取多個列的時候用數據的形式傳參數過去:df[['secShortName','CHG','tradeDate']]
如果取一列的話直接用key取:df['secShortName']
secShortName這個欄位中包含有其他指數,需要做篩選
使用isin過濾:df['secShortName'].isin(['上證綜指'])
Advertisements
注意isin中的數據的類型,如果是整形則用isin([3]),後面過濾周四的時候用到了
過濾后name久沒有用了,去掉df[['CHG','tradeDate']]
把日期轉化為星期幾的索引,使用weekday方法
把df先轉化為字典:df.to_dict()
取出日期的數組數據:dictionary['tradeDate'].values()
給原來的dataframe添加一個weekday的列:df_sub['weekday'] = pd.to_datetime(dictionary['tradeDate'].values()).weekday
過濾數據,只保留weekday中值為3的數據:df_sub[df_sub['weekday'].isin([3])]
Advertisements
生成柱狀圖:five['CHG'].plot(kind='bar')
U礦地址:https://uqer.io/home/
代碼:
import pandas as pd
import matplotlib.pyplot as plt
df=DataAPI.MktIdxdGet(tradeDate=u"",indexID=u"",ticker=u"",beginDate=u"20170101",endDate=u"20171127",exchangeCD=u"XSHG",field=u"",pandas="1")
one = df[['secShortName','CHG','tradeDate']] #過濾掉沒用的列,留下name,漲跌,日期
two = df[df['secShortName'].isin(['上證綜指'])] #過濾掉沒用的行,只留上證指數
three = two[['CHG','tradeDate']]
four = three[['CHG']]
dictionary = three.to_dict()
four['weekday'] = pd.to_datetime(dictionary['tradeDate'].values()).weekday
five = four[four['weekday'].isin([3])]
five['CHG'].plot(kind='bar')