• <tfoot id="ukgsw"><input id="ukgsw"></input></tfoot>
    
    • 久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
      分享

      Python數(shù)據(jù)處理分析(1):日期型數(shù)據(jù)處理

       鷹兔牛熊眼 2019-01-24

      摘要: Python數(shù)據(jù)處理分析中,日期型數(shù)據(jù)的處理是相對復雜且非常重要的一環(huán)。本文以調(diào)用Tushare包獲得股票的各種信息數(shù)據(jù)為案例,介紹日期數(shù)據(jù)的處理。

      文章目錄:

      1. 獲取數(shù)據(jù)2. 日期型數(shù)據(jù)處理2.1. 按日期切片篩選數(shù)據(jù)2.1.1. 按年度2.1.2. 按月度2.1.3. 按具體天2.2. to_period按日期顯示數(shù)據(jù)2.2.1. 按年度2.2.2. 按季度2.2.3. 按月度2.3. resample按日期統(tǒng)計數(shù)據(jù)2.3.1. 按年度2.3.2. 按季度2.3.3. 按月度2.4. 統(tǒng)計和顯示結(jié)合

      之前的的一篇文章:10行代碼爬取全國所有A股/港股/新三板上市公司信息,用爬蟲實現(xiàn)了上市公司信息的抓取。但還有更簡單的方法,就是調(diào)用Tushare包,可以很便捷地拿到干凈的各種股市數(shù)據(jù)。

      強烈推薦一下這款由國內(nèi)團隊開發(fā)的包,Github上目前Star數(shù) 6000+。Tushare是一個開源免費、強大的python金融財經(jīng)數(shù)據(jù)接口包。調(diào)用該包返回的數(shù)據(jù)格式基本是Pandas DataFrame類型,非常便于后續(xù)處理分析。包的數(shù)據(jù)來源于新浪財經(jīng)、騰訊財經(jīng)、上交所和深交所,比較齊全,質(zhì)量也很可靠。

      參考:
      https:///document/2
      https://github.com/waditu/Tushare

      下面我們就來簡單體檢一下這款包的便利,然后利用它返回的數(shù)據(jù)處理其中的日期型數(shù)據(jù)。

      1. 獲取數(shù)據(jù)

      接口使用前提:首先在官網(wǎng)注冊成功后獲得token,然后通過下面命令下載Tushare包,然后在程序中調(diào)用就可以使用了。

      1 pip instasll tushare

      可以獲得的信息接口非常多,包括:行情數(shù)據(jù)、基礎(chǔ)數(shù)據(jù)、財務數(shù)據(jù)板塊等。


      下面就簡單使用下部分接口。首先,獲取國內(nèi)股票列表數(shù)據(jù)。

      1import tushare as ts
      2ts.set_token('你的token')
      3pro = ts.pro_api()
      4data = pro.stock_basic(exchange_id='', is_hs='', fields='symbol,name,is_hs,list_date,list_status')
      5print(data)
      6# ''表示獲取全部

      exchange_id表示股票代碼,可以獲取特定股票的基礎(chǔ)信息,為空則獲取全部;is_hs表示是否滬深港通,為空表示提取所有股市;fields表示想要提取的信息列表。

      結(jié)果如下:

      1        ts_code  symbol  name list_status  list_date is_hs
      20     000001.SZ  000001  平安銀行           L   19910403     S
      31     000002.SZ  000002   萬科A           L   19910129     S
      42     000004.SZ  000004  國農(nóng)科技           L   19910114     N
      53     000005.SZ  000005  世紀星源           L   19901210     N
      64     000006.SZ  000006  深振業(yè)A           L   19920427     S
      75     000007.SZ  000007   全新好           L   19920413     N
      86     000008.SZ  000008  神州高鐵           L   19920507     S
      97     000009.SZ  000009  中國寶安           L   19910625     S
      108     000010.SZ  000010  美麗生態(tài)           L   19951027     N
      119     000011.SZ  000011  深物業(yè)A           L   19920330     S
      1210    000012.SZ  000012   南玻A           L   19920228     S
      13···
      143532  603987.SH  603987   康德萊           L   20161121     N
      153533  603988.SH  603988  中電電機           L   20141104     N
      163534  603989.SH  603989  艾華集團           L   20150515     H
      173535  603990.SH  603990  麥迪科技           L   20161208     N
      183536  603991.SH  603991  至正股份           L   20170308     N
      193537  603993.SH  603993  洛陽鉬業(yè)           L   20121009     H
      203538  603996.SH  603996  中新科技           L   20151222     N
      213539  603997.SH  603997  繼峰股份           L   20150302     H
      223540  603998.SH  603998  方盛制藥           L   20141205     N
      233541  603999.SH  603999  讀者傳媒           L   20151210     N

      很輕松地就能獲得3542家上市公司的基本情況。下面就將這個數(shù)據(jù)作為日期型處理的基礎(chǔ)數(shù)據(jù)。

      2. 日期型數(shù)據(jù)處理

      查看一下數(shù)據(jù)結(jié)構(gòu):

      1RangeIndex: 3542 entries, 0 to 3541
      2Data columns (total 6 columns):
      3ts_code        3542 non-null object
      4symbol         3542 non-null object
      5name           3542 non-null object
      6list_status    3542 non-null object
      7list_date      3542 non-null object
      8is_hs          3542 non-null object
      9dtypes: object(6)

      所有列都是object字符型。這里想對日期做數(shù)據(jù)分析,比如可以統(tǒng)計一下歷年上市公司數(shù)量。需更改日期型數(shù)據(jù)字符型為日期型。

      1data['list_date'] = pd.to_datetime(data['list_date'])

      pd.to_datetime將'list_date'列格式改為datetime格式,再來看一下:

      1RangeIndex: 3542 entries, 0 to 3541
      2Data columns (total 6 columns):
      3ts_code        3542 non-null object
      4symbol         3542 non-null object
      5name           3542 non-null object
      6list_status    3542 non-null object
      7list_date      3542 non-null datetime64[ns]
      8is_hs          3542 non-null object
      9dtypes: object(6)

      2.1. 按日期切片篩選數(shù)據(jù)

      有時候我們需要按年、季度、月、日這樣的日期格式來篩選提取相應的數(shù)據(jù)。

      2.1.1. 按年度

      • 獲取單一年份數(shù)據(jù),比如2017年

      1data = data.set_index(data['list_date'])
      2data = data['2017']
      3print(data.head())
      4# 結(jié)果
      5              ts_code  symbol  name list_status  list_date is_hs
      6list_date                                                       
      72017-12-25  001965.SZ  001965  招商公路           L 2017-12-25     S
      82017-03-24  002774.SZ  002774  快意電梯           L 2017-03-24     N
      92017-01-12  002824.SZ  002824  和勝股份           L 2017-01-12     N
      102017-01-06  002838.SZ  002838  道恩股份           L 2017-01-06     N
      112017-01-24  002839.SZ  002839  張家港行           L 2017-01-24     S
      • 獲取多個年份,比如2015-2017

       1data = data['2015':'2017']
      2print(data.head())
      3# 結(jié)果
      4              ts_code  symbol  name list_status  list_date is_hs
      5list_date                                                       
      62015-01-26  000166.SZ  000166  申萬宏源           L 2015-01-26     S
      72017-12-25  001965.SZ  001965  招商公路           L 2017-12-25     S
      82015-12-30  001979.SZ  001979  招商蛇口           L 2015-12-30     S
      92015-01-27  002734.SZ  002734  利民股份           L 2015-01-27     N
      102015-01-22  002739.SZ  002739  萬達電影           L 2015-01-22     S

      2.1.2. 按月度

      1data = data['2017-1']
      2print(data.head())
      3# 結(jié)果
      4              ts_code  symbol  name list_status  list_date is_hs
      5list_date                                                       
      62017-01-12  002824.SZ  002824  和勝股份           L 2017-01-12     N
      72017-01-06  002838.SZ  002838  道恩股份           L 2017-01-06     N
      82017-01-24  002839.SZ  002839  張家港行           L 2017-01-24     S
      92017-01-10  002840.SZ  002840  華統(tǒng)股份           L 2017-01-10     N
      102017-01-19  002841.SZ  002841  視源股份           L 2017-01-19     S

      2.1.3. 按具體天

      1data = data['2017-1-12']
      2print(data.head())
      3# 結(jié)果
      4              ts_code  symbol  name list_status  list_date is_hs
      5list_date                                                       
      62017-01-12  002824.SZ  002824  和勝股份           L 2017-01-12     N
      72017-01-12  300584.SZ  300584  海辰藥業(yè)           L 2017-01-12     N
      82017-01-12  603628.SH  603628  清源股份           L 2017-01-12     H
      92017-01-12  603639.SH  603639   海利爾           L 2017-01-12     H

      2.2. to_period按日期顯示數(shù)據(jù)

      dataframe.to_period方法只是用于顯示數(shù)據(jù),但不會進行統(tǒng)計。

      2.2.1. 按年度

      1data = data.to_period('A')  # 'A'默認是從'A-DEC'開始算,也可以根據(jù)情況設(shè)置為'A-JAN'
      2print(data.head())
      3# 結(jié)果
      4             ts_code  symbol  name list_status  list_date is_hs
      5list_date                                                      
      61991       000001.SZ  000001  平安銀行           L 1991-04-03     S
      71991       000002.SZ  000002   萬科A           L 1991-01-29     S
      81991       000004.SZ  000004  國農(nóng)科技           L 1991-01-14     N
      91990       000005.SZ  000005  世紀星源           L 1990-12-10     N
      101992       000006.SZ  000006  深振業(yè)A           L 1992-04-27     S

      可以看到,相比上面篩選數(shù)據(jù)時是按原始的日期,這里利用to_period方法,設(shè)置參數(shù)為'A'后,可以直接顯示為年,這在后期可視化繪圖時非常有用。

      2.2.2. 按季度

       1data = data.to_period('Q')   # 'Q'默認是從'Q-DEC'開始算,也可以根據(jù)情況設(shè)置為“Q-SEP”,“Q-FEB”等
      2print(data.head())
      3# 結(jié)果
      4             ts_code  symbol  name list_status  list_date is_hs
      5list_date                                                      
      61991Q2     000001.SZ  000001  平安銀行           L 1991-04-03     S
      71991Q1     000002.SZ  000002   萬科A            L 1991-01-29     S
      81991Q1     000004.SZ  000004  國農(nóng)科技           L 1991-01-14     N
      91990Q4     000005.SZ  000005  世紀星源           L 1990-12-10     N
      101992Q2     000006.SZ  000006  深振業(yè)A           L 1992-04-27     S

      2.2.3. 按月度

      1data = data.to_period('M')
      2print(data.head())
      3# 結(jié)果
      4             ts_code  symbol  name list_status  list_date is_hs
      5list_date                                                      
      61991-04    000001.SZ  000001  平安銀行           L 1991-04-03     S
      71991-01    000002.SZ  000002   萬科A            L 1991-01-29     S
      81991-01    000004.SZ  000004  國農(nóng)科技           L 1991-01-14     N
      91990-12    000005.SZ  000005  世紀星源           L 1990-12-10     N
      101992-04    000006.SZ  000006  深振業(yè)A           L 1992-04-27     S

      2.3. resample按日期統(tǒng)計數(shù)據(jù)

      按日期進行統(tǒng)計數(shù)據(jù),可以利用resample方法。

      2.3.1. 按年度

      1data = data.resample('AS').count()['name']  # count對各年上市公司數(shù)量進行計數(shù)
      2print(data.head())
      3# 結(jié)果
      4list_date
      51990-01-01      7
      61991-01-01      4
      71992-01-01     37
      81993-01-01    106
      91994-01-01     99

      2.3.2. 按季度

      1data = data.resample('Q').count()['name']  
      2print(data.head())
      3# 結(jié)果
      4list_date
      51990-12-31    7
      61991-03-31    2
      71991-06-30    2
      81991-09-30    0
      91991-12-31    0

      2.3.3. 按月度

      1data = data.resample('M').count()['name']  
      2print(data.head())
      3# 結(jié)果
      4list_date
      51990-12-31    7
      61991-01-31    2
      71991-02-28    0
      81991-03-31    0
      91991-04-30    1

      2.4. 統(tǒng)計和顯示結(jié)合

      利用前面的resample和to.period方法,可以按年、季度、月份匯總數(shù)據(jù)。

      1# 匯總各年上市公司數(shù)量
      2data = data.set_index(['list_date'])
      3data = data.resample('AS').count()['ts_code']
      4data = data.to_period('A')
      5print(data.head())
      6print(data.tail())

      結(jié)果如下:

       1list_date
      21990      7
      31991      4
      41992     37
      51993    106
      61994     99
      7Freq: A-DEC, Name: name, dtype: int64
      8list_date
      92014    124
      102015    223
      112016    227
      122017    438
      132018     78
      14Freq: A-DEC, Name: name, dtype: int64

      基于上述數(shù)據(jù),可以利用matplotlib繪制出歷年上市公司數(shù)量的折線圖:

      折線圖的具體繪制方法,見后續(xù)文章。

      以上就是簡單利用了Tushare的一個接口返回的數(shù)據(jù),介紹了日期型數(shù)據(jù)的轉(zhuǎn)換和處理。

      本文完。


        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多

        主站蜘蛛池模板: 日韩大片高清播放器大全| 重口SM一区二区三区视频| 国产乱码1卡二卡3卡四卡5| 国产成人AV在线免播放观看新 | 日韩中文字幕高清有码| 丁香五月亚洲综合在线国内自拍| 少妇人妻真实偷人精品| 中文字幕在线精品人妻| 国产99视频精品免费视频36| 国产精品久久久天天影视香蕉 | 久久国产成人亚洲精品影院老金| 无遮挡免费高清羞羞视频| 亚洲AV无码精品色午夜果冻 | 国产精品福利自产拍在线观看| 插插无码视频大全不卡网站| 国产又爽又黄又爽又刺激| 成人午夜福利视频镇东影视| 国精偷拍一区二区三区| 亚洲AV色香蕉一区二区蜜桃小说| 亚洲AV永久无码精品一区二区国产| 亚洲国产一区二区A毛片| 亚洲欧美综合在线天堂| 欧美国产日韩A在线观看| 亚洲一二区制服无码中字| 黑巨茎大战俄罗斯美女 | 亚洲精品无码永久在线观看你懂的 | 无码H黄肉3D动漫在线观看| 久久99热只有频精品8| 亚洲精品爆乳一区二区H| 99热国产这里只有精品9| 深夜在线观看免费av| 亚洲国产精品久久久久久无码| 亚洲AV无码一区二区乱子伦| 国产精品美女久久久久久麻豆 | 亚洲国产精品午夜福利| AV最新高清无码专区| 在线涩涩免费观看国产精品 | 精品免费看国产一区二区| 国精品午夜福利视频| 又大又粗又爽A级毛片免费看| 内射一区二区三区四区|