Python處理時間序列資料

來源:互聯網
上載者:User

標籤:序列   時間類   時間格式   取資料   強制轉換   object   pyplot   匯入   記錄   

初償用Python處理時間序列的資料,碰到一些坑。以此文記錄一下,希望後來者可以少走彎路。

 

背景說明:我是用一個已有的csv資料表作為原材料進行處理的。

目的:實現時間序列的可視化,及周期性的可視化。

1、碰到的第一個坑是,匯入到時間資料,預設的是字串的資料類型。因此,在可視化的時候,會出現沒有按時間先後順序的方式繪圖的狀況。

因此,需要將字串解析為時間類型的資料類型。

方法1:是在讀取資料的時候,採用parse_dates=True,自動解析其中的時間資料。

方法2:使用dateuyil包中的parser.parse解析時間字串:

from dateutil.parser import parsev1 = parse(‘2018-09-02‘)print("解析後的時間格式為:",v1)

方法3:利用pandas的to_datetime處理時間list

import pandas as pddatestrs = [‘2018/09/02‘,‘2018/09/03‘,‘2018/09/04‘]print(pd.to_datetime(datestrs))

2、第2個坑是處理數值型資料的時候,在匯入pandas下預設是object的資料類型,此時需要強制轉換資料類型,但是我一直沒法轉換。

出現的BUG就是:ValueError: could not convert string to float
後來找了半天才找到原因:是資料中含有空格或者“,”才導致無法將string轉為int。
解決辦法:replace(‘ ‘,‘‘).replace(‘,‘,‘‘)即替換掉其中的空格,刪除其中的“,”

3、至於後面的繪圖就很簡單了,唯一值得說一下的是周期性的圖的繪製。

我採用的是按“周”來繪圖的,周期的固定的。實現過程看代碼就好。

4、另外需要提一下,讀取檔案的時候需要設定encoding = ‘gbk‘。預設的是utf-8,但是系統會報錯。

 1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # Author:Leslie Dang 4  5 import numpy as np 6 import pandas as pd 7 import matplotlib.pyplot as plt 8  9 # 01從檔案匯入資料10 data1 = pd.read_csv(‘01series.csv‘,parse_dates=True,index_col=0,encoding = ‘gbk‘)11 print(data1)12 # print(type(data1.index))13 print(data1.dtypes)14 15 # 02強制轉換資料類型16 print(‘***02強制轉換資料類型***‘)17 18 # ValueError: could not convert string to float19 # 原因:很可能是你的資料中含有\t,或者空格,或者“,”20 # 解決辦法:replace(‘ ‘,‘‘).replace(‘,‘,‘‘)21 22 for i in range(data1[‘銷售額‘].count()):23     data1[‘銷售額‘][i] = data1[‘銷售額‘][i].replace(‘ ‘,‘‘).replace(‘,‘,‘‘)24 25 data1[‘銷售額‘] = data1[‘銷售額‘].astype(int)26 print(data1.dtypes)27 28 # 03繪圖-線圖29 print(‘***03繪圖***‘)30 # plt.plot(data1[‘銷售額‘],label = ‘銷售額‘)31 # plt.show()32 33 # 04繪圖-周期性分析圖34 print(‘***04繪圖-周期性分析圖***‘)35 36 data1 = data1.set_index(‘星期‘)37 print(data1)38 39 count = data1[‘銷售額‘].count()40 circle = count//741 print(count,circle)42 for i in range(circle):43     plt.plot(data1[‘銷售額‘][7*i:7*i+7])44 plt.show()45 46 # 思考:如何量化周期性?採用什麼參數可以表達?周期性的強度如何?

這裡補上我採用的資料來源:

            星期    銷售額日期                         2018-08-01  Wed  4,702,986 2018-08-02  Thu  5,034,151 2018-08-03  Fri  5,636,981 2018-08-04  Sat  6,377,764 2018-08-05  Sun  6,138,548 2018-08-06  Mon  5,335,273 2018-08-07  Tue  5,055,513 2018-08-08  Wed  5,159,413 2018-08-09  Thu  5,393,767 2018-08-10  Fri  5,920,339 2018-08-11  Sat  6,637,867 2018-08-12  Sun  6,292,839 2018-08-13  Mon  5,485,055 2018-08-14  Tue  5,274,536 2018-08-15  Wed  5,171,561 2018-08-16  Thu  5,269,780 2018-08-17  Fri  5,359,121 2018-08-18  Sat  6,353,952 2018-08-19  Sun  6,334,198 2018-08-20  Mon  5,577,552 2018-08-21  Tue  5,276,165 2018-08-22  Wed  5,403,919 2018-08-23  Thu  5,611,874 2018-08-24  Fri  6,073,795 2018-08-25  Sat  6,754,291 2018-08-26  Sun  6,333,426 2018-08-27  Mon  5,570,875 2018-08-28  Tue  5,327,305 2018-08-29  Wed  5,425,794 

 

Python處理時間序列資料

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.