資料視覺化(一)A股三大指數10年漲跌幅比較:資料爬取和整理
閒來無事,做一張A股三大指數10年漲跌對比圖。首先爬取資料:
工具:
baostock
pandas
用baostock可以輕鬆的獲取股票交易資料,這裡我主要爬取過去十年A股三大指數的K線資料。
基本思路:
- 登入系統
- 利用內建函式獲取歷史k線資料
- 列印結果
- 輸出結果到csv檔案,方便後續處理
- 登出系統
程式碼如下:
import baostock as bs
import pandas as pd
def get_stockdata(stock_code, stock_name, start_time):
# 登陸系統
lg = bs.login()
# 獲取滬深A股歷史K線資料
rs = bs.query_history_k_data_plus(stock_code, "date,open,high,low,close,preclose,pctChg",
start_date=start_time,
frequency="d", adjustflag="2")
# adjustflag 預設前復權(1),後復權(2),不復權(3)
# 列印結果集
data_list = []
while (rs.error_code == '0') & rs.next():
# 獲取一條記錄,將記錄合併在一起
data_list.append(rs.get_row_data())
result = pd.DataFrame(data_list, columns=rs.fields)
# 結果集輸出到csv檔案
result.to_csv("/home/cdd/Desktop/Scraping/stocks/stock_analysis_2/stock_data1/" + stock_code + stock_name + ".csv", index=False)
print(result)
# 登出系統
bs.logout()
if __name__ == '__main__':
get_stockdata(stock_code='sz.399006', stock_name='創業板指', start_time='2010-11-11')
get_stockdata(stock_code='sh.000001', stock_name='上證綜指', start_time='2010-11-11')
get_stockdata(stock_code='sz.399001', stock_name='深圳成指', start_time='2010-11-11')
資料展示:
下面,處理資料獲得每日相對於2010年11月10日的累計漲跌資料:
累計漲跌 = (當日指數-2010.11.10指數)/ 2010.11.10指數
思路:
- 讀取之前獲得的K線資料
- 獲得2010.11.10日收盤指數以及每日收盤指數
- 遍歷每日指數,計算得到累計漲跌,獲得每日累計漲跌幅資料
- 將三大指數的累計漲跌資料統計到一個csv檔案中
程式碼如下:
def get_data(stock_code, stock_name):
# 載入資料
filename = '/home/cdd/Desktop/Scraping/stocks/stock_analysis_2/stock_data1/' + stock_code + stock_name + '.csv'
# 讀取csv檔案,轉換為dataframe格式
data = pd.read_csv(filename)
# 建立列表,存放每日收盤價,相對於第一天的漲跌幅
pct_to_firsts = []
# 讀取每日收盤價
close = data.iloc[0:, 3]
# 讀取基準日收盤價,我們以2010年11月11日開始,所以該收盤價為2010.11.10日的收盤價
first_price = data.iloc[0, 4]
# 遍歷每日收盤價, 計算相對於第一天的漲跌幅,並將其存放在pct_to_firsts列表中
for price in close:
pct_to_first = round(((price-first_price)*100 / first_price), 2)
pct_to_firsts.append(pct_to_first)
# 將漲跌幅這一列資料加到data中
data['pct_to_first'] = pct_to_firsts
# 重新儲存為csv檔案,方便後續分析
data.to_csv("/home/cdd/Desktop/Scraping/stocks/stock_analysis_2/stock_data1/" + stock_code + stock_name + "2" + ".csv", index=False)
def data_process(stock1, stock2, stock3):
# 載入資料
filename1 = '/home/cdd/Desktop/Scraping/stocks/stock_analysis_2/stock_data1/' + stock1 + '.csv'
filename2 = '/home/cdd/Desktop/Scraping/stocks/stock_analysis_2/stock_data1/' + stock2 + '.csv'
filename3 = '/home/cdd/Desktop/Scraping/stocks/stock_analysis_2/stock_data1/' + stock3 + '.csv'
# 讀取csv檔案,轉換為dataframe格式
data1 = pd.read_csv(filename1)
data2 = pd.read_csv(filename2)
data3 = pd.read_csv(filename3)
# 分別獲取三大指數的累計漲跌資料
pct_to_first1 = data1.iloc[0:, 7]
pct_to_first2 = data2.iloc[0:, 7]
pct_to_first3 = data3.iloc[0:, 7]
# 將上述資料新增到data1中
data1['上證綜指'] = pct_to_first1
data1['深圳成指'] = pct_to_first2
data1['創業板指'] = pct_to_first3
# 去掉data1中多餘的列
data1.drop(['open', 'high', 'low', 'close', 'preclose', 'pctChg', 'pct_to_first'], axis=1, inplace=True)
# 儲存為csv檔案
data1.to_csv("/home/cdd/Desktop/Scraping/stocks/stock_analysis_2/stock_data1/" + "三大指數累積漲幅對比" + ".csv", index=False)
if __name__ == '__main__':
data_process('sh.000001上證綜指2', 'sz.399001深圳成指2', 'sz.399006創業板指2')
資料展示:
下一步,資料視覺化。
相關文章
- 資料視覺化(二)A股三大指數10年漲跌幅比較:資料視覺化視覺化
- 最新Python爬蟲和資料視覺化Python爬蟲視覺化
- 爬取B站視訊播放量及資料視覺化視覺化
- 【python】爬取疫情資料並進行視覺化Python視覺化
- Python爬取股票資訊,並實現視覺化資料Python視覺化
- Scrapy爬取二手房資訊+視覺化資料分析視覺化
- 爬取簡書26萬+使用者資訊:資料視覺化視覺化
- 資料化視覺化公司Tableau上市股價達50.75美元視覺化
- 全自動化資料洞察!資料分佈對比視覺化!⛵視覺化
- (在模仿中精進資料視覺化09)近期基金漲幅排行視覺化視覺化
- (在模仿中精進資料視覺化01) 全國38城居住自由指數視覺化視覺化
- 環境資料分析和視覺化視覺化
- delete的統計資料檢視和比較delete
- 資料看板視覺化視覺化
- 資料視覺化【十五】視覺化
- 大資料視覺化大資料視覺化
- 警惕“資料視覺化”視覺化
- Python爬蟲之小說資訊爬取與資料視覺化分析Python爬蟲視覺化
- 分析哪款專案管理軟體的資料視覺化功能比較完善?專案管理視覺化
- 遇見大資料視覺化 : 那些 WOW 的資料視覺化案例大資料視覺化
- 資料視覺化能否代替資料分析視覺化
- XML資料讀取方式效能比較XML
- [Echarts視覺化] 二.php和ajax連線資料庫實現動態資料視覺化Echarts視覺化PHP資料庫
- 前程無憂崗位資料爬取+Tableau視覺化分析視覺化
- 什麼是資料視覺化,為什麼資料視覺化很重要?視覺化
- 資料視覺化--實驗五:高維非空間資料視覺化視覺化
- 豆瓣電影資料分析和視覺化視覺化
- 爬取東方財富股吧中評論資料
- BI資料視覺化|可自動重新整理的視覺化大屏報表視覺化
- 新冠肺炎資料視覺化視覺化
- 資料視覺化的秘密視覺化
- 視覺化中的資料視覺化
- 如何看待資料視覺化?視覺化
- Matlab資料視覺化Matlab視覺化
- 資料視覺化實踐視覺化
- 資料視覺化的作用視覺化
- 細談資料視覺化視覺化
- 資料視覺化的祕密和資料繪圖的要素視覺化繪圖