聚沙成塔--數(shù)據(jù)分析(四)(鐵柱與小花的初見)

版權(quán)聲明:本文為作者原創(chuàng)文章,可以隨意轉(zhuǎn)載,但必須在明確位置標(biāo)明出處?。?!

最近一直在想怎么去寫好pandas,送給2018的你我這篇文章也說(shuō)了今年我個(gè)人的目標(biāo)是要去學(xué)習(xí)投資,理財(cái)和股票。所以我決定從這個(gè)方向入手,畢竟跟錢相關(guān)的學(xué)習(xí)更有動(dòng)力。

在正式開始之前需要介紹一個(gè)開源的財(cái)經(jīng)數(shù)據(jù)接口包TuShare,它主要實(shí)現(xiàn)對(duì)股票等金融數(shù)據(jù)從數(shù)據(jù)采集、清洗加工 到 數(shù)據(jù)存儲(chǔ)的過程,能夠?yàn)榻鹑诜治鋈藛T提供快速、整潔、和多樣的便于分析的數(shù)據(jù),為他們?cè)跀?shù)據(jù)獲取方面極大地減輕工作量,使他們更加專注于策略和模型的研究與實(shí)現(xiàn)上??紤]到Python pandas包在金融量化分析中體現(xiàn)出的優(yōu)勢(shì),Tushare返回的絕大部分的數(shù)據(jù)格式都是pandas DataFrame類型,非常便于用pandas/NumPy/Matplotlib進(jìn)行數(shù)據(jù)分析和可視化。當(dāng)然,如果您習(xí)慣了用Excel或者關(guān)系型數(shù)據(jù)庫(kù)做分析,您也可以通過Tushare的數(shù)據(jù)存儲(chǔ)功能,將數(shù)據(jù)全部保存到本地后進(jìn)行分析。應(yīng)一些用戶的請(qǐng)求,從0.2.5版本開始,Tushare同時(shí)兼容Python 2.x和Python 3.x,對(duì)部分代碼進(jìn)行了重構(gòu),并優(yōu)化了一些算法,確保數(shù)據(jù)獲取的高效和穩(wěn)定。當(dāng)然你們可以到官網(wǎng)上去了解更多的詳情http://tushare.org/index.html

話說(shuō)鐵柱和小花都在證券公司工作,公司那是狼多肉少啊,小花又正值芳華,年方二八,青春靚麗、膚白貌美、凹凸有致。是公司里公認(rèn)的女神啊,只要一有空閑時(shí)間公司里的狼總是圍繞在小花身邊轉(zhuǎn)啊轉(zhuǎn),都想把女神變成自己的私有財(cái)產(chǎn)啊。當(dāng)然鐵柱也不例外,但鐵柱有自知之明啊,他知道知己是個(gè)“屌絲”,這種想法想法只在夜深人靜的時(shí)候在心里“意淫,意淫”。

一天領(lǐng)導(dǎo)給鐵柱安排了很多工作,鐵柱沒辦發(fā)只能加班了啊。哼哧,哼哧,晚上10點(diǎn)鐵柱終于把工作搞定了,在心里罵了句“萬(wàn)惡的資本家”,準(zhǔn)備收拾東西走人。剛把公司燈關(guān)了就聽到一聲嬌滴滴的聲音“還有人吶”。哎呀!媽啊,鐵柱一個(gè)激靈。這不是女神小花的聲音是誰(shuí)的聲音。尼瑪,鐵柱的小心臟撲撲亂跳啊,現(xiàn)在公司只有我和小花了啊,機(jī)會(huì)難得啊。要不要上去打個(gè)招呼、要不要上去問問女神有沒有什么需要幫助的,要不要送回家、要不要去吃個(gè)夜宵,哎呀,媽啊,鐵柱的腦子里那是天人交戰(zhàn)。這時(shí)又一個(gè)聲音傳來(lái)“給我開一下燈,謝謝”,鐵柱把燈打開,走向了小花的工位,告訴自己不能慫。小花這么完了咋還不回去啊。小花:“領(lǐng)導(dǎo)讓我統(tǒng)計(jì)一下茅臺(tái)去年到現(xiàn)在的數(shù)據(jù),我剛來(lái)不知道咋統(tǒng)計(jì)啊, 咋辦啊,領(lǐng)導(dǎo)讓我今天一定要弄完,完了,完了,這回我死定了”。鐵柱一聽,尼瑪!這不正是我這個(gè)屌絲程序員擅長(zhǎng)的嗎。鐵柱虎軀一震說(shuō):“小花這個(gè)我會(huì)一點(diǎn),你看是不是下面這樣的”,鐵柱拿出自己的筆記本“啪,啪,啪”敲出下面的下面的代碼執(zhí)行,這一刻的鐵柱查克拉簡(jiǎn)直是爆滿狀態(tài)啊。

import pandas as pd
import numpy as np
import tushare as tu


df = tu.get_k_data('600519', start='2017-01-01')

print(df)

OUT:
           date     open    close     high      low    volume    code
0    2017-01-03  329.299  329.575  331.979  327.851   20763.0  600519
1    2017-01-04  329.634  346.667  346.923  329.615   65257.0  600519
2    2017-01-05  344.785  341.574  346.213  340.293   41704.0  600519
3    2017-01-06  341.475  345.534  354.419  340.943   68095.0  600519
4    2017-01-09  342.618  343.317  347.622  341.377   35405.0  600519
5    2017-01-10  343.258  343.800  346.755  341.436   31727.0  600519
6    2017-01-11  342.815  340.303  342.815  338.382   23598.0  600519
7    2017-01-12  341.386  341.879  342.224  339.377   17779.0  600519
8    2017-01-13  341.810  339.731  342.214  338.756   18282.0  600519
9    2017-01-16  339.003  336.382  339.663  333.752   36855.0  600519
10   2017-01-17  337.495  343.928  346.263  336.904   35188.0  600519
11   2017-01-18  343.682  349.789  351.454  342.037   46005.0  600519
12   2017-01-19  349.711  349.435  353.139  346.460   28523.0  600519
13   2017-01-20  349.612  349.701  352.075  347.770   21344.0  600519
14   2017-01-23  351.563  345.987  354.439  344.253   32581.0  600519
15   2017-01-24  346.036  345.090  347.543  341.583   26914.0  600519
16   2017-01-25  344.765  342.450  344.765  341.042   22990.0  600519
17   2017-01-26  342.953  339.288  343.603  336.215   37826.0  600519
18   2017-02-03  340.845  341.682  343.977  339.860   20936.0  600519
19   2017-02-06  343.298  341.682  343.692  339.820   15680.0  600519
20   2017-02-07  341.672  338.461  342.224  338.027   20519.0  600519
..          ...      ...      ...      ...      ...       ...     ...

小花看到上面的結(jié)果高興極了,告訴鐵柱:“鐵柱,這就是我要的結(jié)果,當(dāng)有些地方不對(duì),想0,1,2,3...這些數(shù)字能不能把它換成date這一列的日期格式”。鐵柱聽完一想這還不簡(jiǎn)單嗎,不就是重新設(shè)置一下索引嗎,so easy。

import pandas as pd
import numpy as np
import tushare as tu


df = tu.get_k_data('600519', start='2017-01-01')

df.set_index('date', inplace=True)
print(df)
OUT:
               open    close     high      low    volume    code
date                                                            
2017-01-03  329.299  329.575  331.979  327.851   20763.0  600519
2017-01-04  329.634  346.667  346.923  329.615   65257.0  600519
2017-01-05  344.785  341.574  346.213  340.293   41704.0  600519
2017-01-06  341.475  345.534  354.419  340.943   68095.0  600519
2017-01-09  342.618  343.317  347.622  341.377   35405.0  600519
2017-01-10  343.258  343.800  346.755  341.436   31727.0  600519
2017-01-11  342.815  340.303  342.815  338.382   23598.0  600519
2017-01-12  341.386  341.879  342.224  339.377   17779.0  600519
2017-01-13  341.810  339.731  342.214  338.756   18282.0  600519
2017-01-16  339.003  336.382  339.663  333.752   36855.0  600519
2017-01-17  337.495  343.928  346.263  336.904   35188.0  600519
2017-01-18  343.682  349.789  351.454  342.037   46005.0  600519
2017-01-19  349.711  349.435  353.139  346.460   28523.0  600519
2017-01-20  349.612  349.701  352.075  347.770   21344.0  600519

小花看到上面的結(jié)果跟鐵柱說(shuō):“把code這一列改成茅臺(tái)漢字, high,low, volume列不要”,鐵柱一聽就知道這不就是刪除列和替換列嗎,于是又一陣鼓搗

import pandas as pd
import numpy as np
import tushare as tu


df = tu.get_k_data('600519', start='2017-01-01')

df.set_index('date', inplace=True)

df['code'] = '茅臺(tái)'

df.drop(['high', 'low', 'volume'], axis=1, inplace=True)

print(df)
OUT:
               open    close code
date                             
2017-01-03  329.299  329.575   茅臺(tái)
2017-01-04  329.634  346.667   茅臺(tái)
2017-01-05  344.785  341.574   茅臺(tái)
2017-01-06  341.475  345.534   茅臺(tái)
2017-01-09  342.618  343.317   茅臺(tái)
2017-01-10  343.258  343.800   茅臺(tái)
2017-01-11  342.815  340.303   茅臺(tái)
2017-01-12  341.386  341.879   茅臺(tái)

鐵柱能不能篩選出收盤價(jià)大于開盤價(jià)的記錄啊,小花問道。鐵柱一想這不就是邏就是一個(gè)比較操作嗎。pandas里還有邏輯操作且(“&”),或(“|”),包含(“isin”),非(“~”)
按照小花提的要求鐵柱又釋放一下查克拉

import pandas as pd
import numpy as np
import tushare as tu


df = tu.get_k_data('600519', start='2017-01-01')

df.set_index('date', inplace=True)

df['code'] = '茅臺(tái)'

df.drop(['high', 'low', 'volume'], axis=1, inplace=True)

df1 = df[df['close'] > df['open']]

print(df1)

小花看到結(jié)果很滿意啊,距離老板要求的結(jié)果越來(lái)越近了,這時(shí)小花跟鐵柱說(shuō):“鐵柱,根據(jù)收盤價(jià)排一下序行不”。行啊,必須行啊,鐵柱一聽想都不帶想得說(shuō)道,自己現(xiàn)在是查卡拉爆滿狀態(tài)啊,遇神殺神,遇佛殺佛。

import pandas as pd
import numpy as np
import tushare as tu


df = tu.get_k_data('600519', start='2017-01-01')

df.set_index('date', inplace=True)

df['code'] = '茅臺(tái)'

df.drop(['high', 'low', 'volume'], axis=1, inplace=True)

df1 = df[df['close'] > df['open']].copy()

df1.sort_values(by='close', inplace=True)

print(df1)

OUT:
               open    close code
date                             
2017-01-03  329.299  329.575   茅臺(tái)
2017-02-08  338.638  339.081   茅臺(tái)
2017-02-03  340.845  341.682   茅臺(tái)
2017-01-12  341.386  341.879   茅臺(tái)
2017-02-09  339.860  342.431   茅臺(tái)
2017-01-09  342.618  343.317   茅臺(tái)
2017-01-10  343.258  343.800   茅臺(tái)
2017-01-17  337.495  343.928   茅臺(tái)
2017-02-13  338.874  344.539   茅臺(tái)
2017-02-14  344.332  344.992   茅臺(tái)
2017-02-17  343.701  345.337   茅臺(tái)
2017-01-06  341.475  345.534   茅臺(tái)
2017-01-04  329.634  346.667   茅臺(tái)
2017-01-20  349.612  349.701   茅臺(tái)
2017-01-18  343.682  349.789   茅臺(tái)
2017-03-03  349.711  351.228   茅臺(tái)

鐵柱就是這個(gè)結(jié)果了,我明天給領(lǐng)導(dǎo)看看。不過鐵柱你能把結(jié)果寫到Excel里嗎,可以啊,必須的可以啊,誰(shuí)叫你是女神呢,你什么要求我都答應(yīng),鐵柱賤兮兮的回答到,強(qiáng)勢(shì)調(diào)戲一波。

import pandas as pd
import numpy as np
import tushare as tu


df = tu.get_k_data('600519', start='2017-01-01')

df.set_index('date', inplace=True)

df['code'] = '茅臺(tái)'

df.drop(['high', 'low', 'volume'], axis=1, inplace=True)

df1 = df[df['close'] > df['open']].copy()

df1.sort_values(by='close', inplace=True)

File = r'600519.xlsx'
writer = pd.ExcelWriter(File)
df1.to_excel(writer, 'Sheet1')
writer.save()

NICE,鐵柱帥氣的說(shuō)了句洋文,小花怎么樣,是你要的結(jié)果吧。小花看到Excel上的數(shù)據(jù)心里面壓著的石頭終于落地了,整個(gè)人也變得輕松了。真不知道怎么謝謝你鐵柱,要不我請(qǐng)你吃夜宵吧。鐵柱當(dāng)然滿心歡喜的答應(yīng)了,看看時(shí)間已經(jīng)夜里12點(diǎn)多了,這時(shí)間過得真TM快啊,愛因斯坦哪個(gè)老頭果真沒有騙我,時(shí)間是相對(duì)的。鐵柱和小花吃完夜宵然后.........


歡迎關(guān)注我:「愛做飯的老謝」,老謝一直在努力...

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容