Python數據分析與可視化教案3.8 時間的轉換與提取_第1頁
Python數據分析與可視化教案3.8 時間的轉換與提取_第2頁
Python數據分析與可視化教案3.8 時間的轉換與提取_第3頁
Python數據分析與可視化教案3.8 時間的轉換與提取_第4頁
Python數據分析與可視化教案3.8 時間的轉換與提取_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、課 題3.8時間的轉換與提取課 型講練授課班級大數據授課時數2教學目標.理解 Times tmap、Timedelta、Dat etime Index 等時間類的作用。.能夠創(chuàng)立時間類數據。.能夠將文本型數據轉換為時間類數據。教學重點1.能夠將文本型數據轉換為時間類數據。教學難點1.理解 Timestmap Timedelta、Datetimeindex 等時間類的作用。學情分析學情分析在任何數據分析中,常常需要處理時間類型的數據,比方從時間中提取 出年、月、日等信息,這些內容的學習可以提高學生預處理數據的能力。數據分析的對象不僅限于數值型和字符串型兩種,常用的數據類型還包括了時間 型,通過時

2、間類型數據能夠獲取對應的年、月、日等信息。但是,從CSV數據中導入 數據時都是字符串的形式,無法實現大局部與時間相關的分析。因此,在進行數據序 列分析時,常常需要將字符型數據轉換為時間性數據。pandas提供了多種與時間相關的類,各種時間類如表3-*所示:表3-* pandas時間相關類一、生成時間類數據類名稱說明Timestmap基礎的時間類,表示某個時間點,在數據分析中 經常需要從這個類中提取年、月、日的等信息。Timedelta表示時間間隔,如1天、2個小時等。Datetimeindex表示,組Timestmap構成索引Index,用來作為 DataFrame 或 Series 的索弓1

3、。Timestamp是最基礎的時間類,表示某個時間點,在絕大多數場景中的時間都是 Timestamp形式的時間。1 ,生成Timestamp類數據在pandas中,如果要生成一個Timestamp類數據,可以先創(chuàng)立一個字符型的時 間數據,再轉化為Timestamp類數據,其一般方法為:str = yearmonthday houriminuteisecond1pd.Timestamp(str)例如代碼如下:import pandas as pdstr = 20200202 12:30:00*data = pd.Timestamp(str)print(ndata = H,data)print,d

4、ata 的數據類型為:H,type(data)輸出結果如圖3-求所示。3-8 xC:UsersliliangAnaconda3python.exe C:/Users/liliang/PycharmProjects/sjfx/3-8.py data = 2020-02-02 12:30:00data的數據類型為:Process finished with exit code 0圖3-*生成一個Timestamp類數據例如結果2,生成Timedelta類數據在pandas中,如果要生成Timedelta類數據,可以先創(chuàng)立兩個Timestamp類數據, 再通過運算得到,其一般方法為:pd.Times

5、tamp(str2) - pd.Timestamp(str 1) 例如代碼如下:strl = 20200201 12:30:00str2 = 20200202 13:30:00*datal = pd.Timestamp(str 1) data2 = pd.Timestamp(str2) data = data2 - datal print(ndata = data)print(Hdata 的數據類型為:type(data) 輸出結果如圖3-*所示。Run:3-8C:UsersliliangAnaconda3python.exe C:/Users/liliang/PycharmProjects/

6、sjfx/3-8.py data = 1 days 01:00:00data的數據類型為:Process finished with exit code 0圖3-*生成Timedelta類數據例如結果3.生成Datetimeindex類序列在pandas中,Datetimeindex類序列可以作為DataFrame或Series的索引。在 DataFrame中,如果將時間序列設為時間索引,那么在數據查詢時會減少處理時間, 提高效率。(1)利用列表生成如果要生成一個Datetimeindex類序列,可以先創(chuàng)立一個字符時間型列表,再轉 化為Datetimeindex類序列,其一般方法為:strji

7、st 二田pd.to_Timedate(str_list)(2)利用 data_range 函數如果要生成一個Datetimeindex類序列,還可以利用data_range函數來生成,其 一般方法為:pd.data_range(start,stop,freq)其中,start表示開始時間,stop表示結束時間,freq表示時間頻率,如freq=D 表示日,freq=H表示小時,freq二T表示分鐘,freq二S表示秒。例如代碼如下:list_str = 2020020r;20200202,;20200203,data = pd. to_dateti me(l i st_str)print(n

8、data =tdata)print(Hdata 的數據類型為:,type(data)print,)data = pd.date_range(,20200201 12:00:00,;20200201 18:00:00,freq=H)print(Hdata = data)print(Mdata 的數據類型為:,type(data)輸出結果如圖3-*所示。Run:3-8AC:UsersliliangAnaconda3python.exe C:/Users/liliang/PycharmProjects/sjfx/3-8.pydata = Datetimelndex(,2020-02-01, 2020

9、-02-02, 2020-02-03, dtype=datetime64ns, freq=None) data的數據類型為:二 5U data = Datetimelndex(,2020-02-01 12:00:00, 2020-02-01 13:00:00, .2020-02-01 14:00:00, 2020-02-01 15:00:00,2020-02-01 16:00:00, 2020-02-01 17:00:00,2020-02-01 18:00:00,dtype=datetime64ns, freq=H)data的數據類型為:Process finished with exit c

10、ode 0圖3-*生成Timedelta類數據例如結果二、轉化時間數據在DataFrame中,導入的時間常常是字符串的形式,此時可以利用to_datetime 函數將將字符串的列轉換為時間類型,其一般方法為:pd.to_datetime(DataFramecolumn)三、提取時間信息在處理時間數據時,常常需要提取時間中年、月、日等信息。在DataFrame中, 利用出方法可以提取一列數據中的年、月、日等信息,提取時間屬性如表3-*所示:表3-*提取時間屬性屬性名稱說明屬性名稱說明year年second秒month月date日期day日time時間hour小時weekday星期序號,周一為0m

11、inute分鐘weekday_name星期名稱提取Timestamp時間信息的一般方法為:Timestamp.出.屬性名稱例如代碼如下:import numpy as nparr = np.arange( 1,10).reshape(3,3)data = pd.DataFrame(arr,columns=,a,bVc,)datafd1 = 20200201 10:30:00V20200202 9:45:00,20200203 14:15:00,datad = pd.to_datetime(data*d)print(初始數據為:n”,data)print(提取 d 列中的月份為:n,datad.

12、dt.month)print。提取d列中的小時份為:rT,datad.dthour)輸出結果如圖3-*所示。3-8 xC:UsersliliangAnaconda3python.exe C:/Users/liliang/PycharmProjects/sjfx/3-8.py 初始數據為:a b cd01232020-02-0110:30:0014562020-02-0209:45:0027892020-02-0314:15:0001232020-02-0110:30:0014562020-02-0209:45:0027892020-02-0314:15:00提取d列中的月份為:021222Na

13、me: d, dtype: int64提取d列中的小時份為:01019214Name: d, dtype: int64Process finished with exit code 0圖3-*提取時間信息例如結果任務實訓任務 1: 利用 read_csv 導入 supermarket.csv (supermarket.csv 存放在 c:data 路徑 中),導入時encoding參數使用,gbk,數據如圖3-*所示???supermarket -記事本文件(F)編娟(E)格式(0)查看(V)幫助(H)訂單ID產品ID,產品名稱,客戶,訂單日期,發(fā)貨日期US-2018-1357144,辦公用-

14、用品-10002717/Fiskars 剪刀,藍色”,曾惠-14485,2018/4/27,2018/4/29CN-2018-1973789,辦公用-信封-10004832,GlobeWeis 搭扣信封,紅色,許安-10165,2018/6/15,2018/6/19 CN-2018-1973789,辦公用-裝訂-10001505/Cardinal 孔加固材料,回收,許安-10165,2018/6/15,2018/6/19 US-2018-3017568,辦公用-用品-10003746;Kleencut 開信刀,工業(yè),宋良-17170,2018/12/9,2018/12/13 CN-2017-2

15、975416,辦公用-器具-10003452/KitchenAid 攪拌機,黑色,萬蘭-15730,2017/5/31,2017/6/2 CN-2016-4497736,技術-設備-10001640柯尼卡 打印機,紅色面明-18325,2016/10/27,2016/10/31CN-2016-4497736,辦公用-裝訂-10001029/lbico 訂書機,實惠,俞明-18325,2016/10/27,2016/10/31CN-2016-4497736,家具-椅子-10000578,SAFCO 扶手椅,可調:俞明-18325,2016/10/27,2016/10/31CN-2016-4497

16、736,辦公用-紙張-10001629,Green Bar 計劃信息表,多色,俞明-18325,2016/10/27,2016/10/31 CN-2016-4497736,辦公用-系固-10004801/Stockwell 橡皮筋,整包,俞明-18325,2016/10/27,2016/10/31完成:(1)查看“訂單日期”和“發(fā)貨日期”兩列的數據類型。(2)將“訂單日期”和“發(fā)貨日期”兩列的數據類型轉換為“日期型”,新增列“訂單處理時間。計算公式為:“訂單處理時間”=“發(fā)貨日期”-“訂單日期”(3)查看數據的前5行。再查看“訂單日期”、“發(fā)貨日期”和“訂單處理時間” 3列的數據類型。具體代碼

17、如下:pd.set_option(,display.max_columns,None)pd.set_option(,display.width,None)pd.set_option(display.unicode.east_asian_width,True)datal = pd.read_csv(,c:datasupermarket.csv,encoding=,gbk,)print。*時間數據轉化前*”)print,”訂單期,的數據類型:sn發(fā)貨期,的數據類型:%s”%(datal訂單日期,.dtype,datal發(fā)貨日期1.dtype)print,“)datal訂單日期=pd.to_date

18、time(datal單日期)datal發(fā)貨日期口 = pd.to_datetime(data 1發(fā)貨日期)print。*時間數據轉化后*”)datal訂單處理時間口 = datal發(fā)貨日期口 - datal訂單日期口print(導入數據前5行為:n”,datal.head。)prints訂單日期,的數據類型:sn,發(fā)貨日期,的數據類型:sn訂單處理時間,的數 據類型:s”%(datal,訂單日期dtype,data%發(fā)貨日期dtype,datal訂單處理時間 1.dtype)輸出結果如圖3-*所示。Run:3-8C:UsersliliangAnaconda3python.exe C:/User

19、s/liliang/PycharmProjects/sjfx/3-8.py *時間數據轉化前* ,訂單日期,的數據類型:object 發(fā)貨日期的數據類型:object*時間數據轉化后* 導入數據前5行為:訂單ID 產品ID 產品名稱 客戶 訂單日期 發(fā)貨日期 訂單處理時間 0 US-2018-1357144 辦公用-用品-10002717 Fiskars 剪刀,藍色 曾惠-14485 2018-04-27 2018-04-29 2 days 1 CN-2018-1973789 辦公用-信封-10004832 GlobeWeis 搭扣信封,紅色 許安-10165 2018-06-15 2018-

20、06-19 4 days 2 CN-2018-1973789 辦公用-裝訂-10001505 Cardinal 孔加固材料,回收 許安-10165 2018-06-15 2018-06-19 4 days 3 US-2018-301 乃68 辦公用-用品-10003746 Kleencut 開信刀,工業(yè) 宋良-17170 2018-12-09 2018-12-13 4 days 4 CN-2017-2975416 辦公用-器具-10003452 KitchenAid 攪拌機,黑色 萬蘭-15730 2017-05-31 2017-06-02 2 days ,訂單日期,的數據類型:datetim

21、e64ns 發(fā)貨日期,的數據類型:datetime64ns訂單處理時間的數據類型:timedelta64nsProcess finished with exit code 0圖3-*任務1輸出結果【結果分析】如果不將“訂單日期”和“發(fā)貨日期”兩列的數據類型轉換為時間 型數據,公式“訂單處理時間”二“發(fā)貨日期”-“訂單日期”是不能算出結果的,因 為字符串之間是不能進行運算的。任務2:將任務1的結果datal重新命名為data2,完成:(1)將“訂單日期”中的年、月提出,并將提取的信息放入新列“年”、“月。 選取data2中2018年5月、9月的數據,并計算數據的行數。(2)將“訂單日期”中的星期

22、名稱提出,并將提取的信息放入新列“星期”,選 取data2中2017年的周一的數據,并計算數據的行數。任務2 (1)具體代碼如下:data2=dataldata2r 年 = data2訂單日期data2r 月 口 = data2訂單日期result 1 = data2.1oc(data2,l=2018)&(data2, 卜=5)|(data2r 月=9)print(H2018 年 5 月、9 月的數據為:n”,resultl)print(n2018 年 5 月、9 月的數據行數為:“jesultl.shapeO)輸出結果如圖3-*所示。Run:3-8C:UsersliliangAnaconda

23、3python.exe C:/Users/liliang/PycharmProjects/sjfx/3-8.py2018年5月、9月的數據為:訂單ID產品ID產品名稱客戶訂單日期發(fā)貨日期 訂單處理時間年 月32 CN-2018-3230180 辦公用-收納-10001942Fellowes 文件車,金屬 宋棟-12310 2018-09-28 2018-10-024 days 2018933 CN-2018-3230180 家具-椅子-10000374Harbour Creations 椅墊,可調 宋林-1231。2018-09-28 2018-10-024 days 2018964 CN-2

24術-設備10003635StarTech 打印機,耐用 錢偉-21430 2018-09-15 2018-09-172 days 2018986 CN-2018-3172853 辦公用-標簽-10000895 Harbour Creations 有色標簽,可調熊麗-15805 2018-05-28 2018-06-025 days 2018593 US-2018-4733722 辦公用-用品-10001876Stiletto 大剪刀,鋼顧黎-1636。2018-05-21 2018-05-243 days 2018594 US-2018-4733722家具-椅子-1。4

25、416Novimex 折疊椅,每套兩件 顧黎-16360 2018-05-21 2018-05-243 days 2018595 US-2018-4733722 辦公用-系固-10001646OIC 夾子,整包 顧黎-16360 2018-05-21 2018-05-243 days 2018596 US-2018-4733722 辦公用-信封-10004907Ames 局間信封,銀色 顧黎-16360 2018-05-21 2018-05-243 days 2018597 US-2018-4733722 辦公用-美術-10002705Sanford 熒光筆,藍色 顧黎-16360 2018-05-21 2018-0S-243 days 201852018年5月、9月的數據行數為:9Process finished with exit code 0圖3-*任務2 (1)輸出結果任務2 (2)具體代碼如下:data2星期=data2訂單日期weekday _nameresult2 = data2.1oc(data2,=2017) & (data2星期=Monday)print(n2017 年的周一的數據為:n”,result2)printC2017年的周一的數據行數為:工esult2.shape0)輸出結果如圖3-*所

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論