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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、課 題3.8時(shí)間的轉(zhuǎn)換與提取課 型講練授課班級(jí)大數(shù)據(jù)授課時(shí)數(shù)2教學(xué)目標(biāo).理解 Times tmap、Timedelta、Dat etime Index 等時(shí)間類的作用。.能夠創(chuàng)立時(shí)間類數(shù)據(jù)。.能夠?qū)⑽谋拘蛿?shù)據(jù)轉(zhuǎn)換為時(shí)間類數(shù)據(jù)。教學(xué)重點(diǎn)1.能夠?qū)⑽谋拘蛿?shù)據(jù)轉(zhuǎn)換為時(shí)間類數(shù)據(jù)。教學(xué)難點(diǎn)1.理解 Timestmap Timedelta、Datetimeindex 等時(shí)間類的作用。學(xué)情分析學(xué)情分析在任何數(shù)據(jù)分析中,常常需要處理時(shí)間類型的數(shù)據(jù),比方從時(shí)間中提取 出年、月、日等信息,這些內(nèi)容的學(xué)習(xí)可以提高學(xué)生預(yù)處理數(shù)據(jù)的能力。數(shù)據(jù)分析的對(duì)象不僅限于數(shù)值型和字符串型兩種,常用的數(shù)據(jù)類型還包括了時(shí)間 型,通過時(shí)

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

3、。Timestamp是最基礎(chǔ)的時(shí)間類,表示某個(gè)時(shí)間點(diǎn),在絕大多數(shù)場景中的時(shí)間都是 Timestamp形式的時(shí)間。1 ,生成Timestamp類數(shù)據(jù)在pandas中,如果要生成一個(gè)Timestamp類數(shù)據(jù),可以先創(chuàng)立一個(gè)字符型的時(shí) 間數(shù)據(jù),再轉(zhuǎn)化為Timestamp類數(shù)據(jù),其一般方法為: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 的數(shù)據(jù)類型為:H,type(data)輸出結(jié)果如圖3-求所示。3-8 xC:UsersliliangAnaconda3python.exe C:/Users/liliang/PycharmProjects/sjfx/3-8.py data = 2020-02-02 12:30:00data的數(shù)據(jù)類型為:Process finished with exit code 0圖3-*生成一個(gè)Timestamp類數(shù)據(jù)例如結(jié)果2,生成Timedelta類數(shù)據(jù)在pandas中,如果要生成Timedelta類數(shù)據(jù),可以先創(chuàng)立兩個(gè)Timestamp類數(shù)據(jù), 再通過運(yùn)算得到,其一般方法為: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 的數(shù)據(jù)類型為:type(data) 輸出結(jié)果如圖3-*所示。Run:3-8C:UsersliliangAnaconda3python.exe C:/Users/liliang/PycharmProjects/

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

7、st 二田pd.to_Timedate(str_list)(2)利用 data_range 函數(shù)如果要生成一個(gè)Datetimeindex類序列,還可以利用data_range函數(shù)來生成,其 一般方法為:pd.data_range(start,stop,freq)其中,start表示開始時(shí)間,stop表示結(jié)束時(shí)間,freq表示時(shí)間頻率,如freq=D 表示日,freq=H表示小時(shí),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 的數(shù)據(jù)類型為:,type(data)print,)data = pd.date_range(,20200201 12:00:00,;20200201 18:00:00,freq=H)print(Hdata = data)print(Mdata 的數(shù)據(jù)類型為:,type(data)輸出結(jié)果如圖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的數(shù)據(jù)類型為:二 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的數(shù)據(jù)類型為:Process finished with exit c

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

11、inute分鐘weekday_name星期名稱提取Timestamp時(shí)間信息的一般方法為: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(初始數(shù)據(jù)為:n”,data)print(提取 d 列中的月份為:n,datad.

12、dt.month)print。提取d列中的小時(shí)份為:rT,datad.dthour)輸出結(jié)果如圖3-*所示。3-8 xC:UsersliliangAnaconda3python.exe C:/Users/liliang/PycharmProjects/sjfx/3-8.py 初始數(shù)據(jù)為: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列中的小時(shí)份為:01019214Name: d, dtype: int64Process finished with exit code 0圖3-*提取時(shí)間信息例如結(jié)果任務(wù)實(shí)訓(xùn)任務(wù) 1: 利用 read_csv 導(dǎo)入 supermarket.csv (supermarket.csv 存放在 c:data 路徑 中),導(dǎo)入時(shí)encoding參數(shù)使用,gbk,數(shù)據(jù)如圖3-*所示。口 supermarket -記事本文件(F)編娟(E)格式(0)查看(V)幫助(H)訂單ID產(chǎn)品ID,產(chǎn)品名稱,客戶,訂單日期,發(fā)貨日期US-2018-1357144,辦公用-

14、用品-10002717/Fiskars 剪刀,藍(lán)色”,曾惠-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 攪拌機(jī),黑色,萬蘭-15730,2017/5/31,2017/6/2 CN-2016-4497736,技術(shù)-設(shè)備-10001640柯尼卡 打印機(jī),紅色面明-18325,2016/10/27,2016/10/31CN-2016-4497736,辦公用-裝訂-10001029/lbico 訂書機(jī),實(shí)惠,俞明-18325,2016/10/27,2016/10/31CN-2016-4497736,家具-椅子-10000578,SAFCO 扶手椅,可調(diào):俞明-18325,2016/10/27,2016/10/31CN-2016-4497

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

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。*時(shí)間數(shù)據(jù)轉(zhuǎn)化前*”)print,”訂單期,的數(shù)據(jù)類型:sn發(fā)貨期,的數(shù)據(jù)類型:%s”%(datal訂單日期,.dtype,datal發(fā)貨日期1.dtype)print,“)datal訂單日期=pd.to_date

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

19、s/liliang/PycharmProjects/sjfx/3-8.py *時(shí)間數(shù)據(jù)轉(zhuǎn)化前* ,訂單日期,的數(shù)據(jù)類型:object 發(fā)貨日期的數(shù)據(jù)類型:object*時(shí)間數(shù)據(jù)轉(zhuǎn)化后* 導(dǎo)入數(shù)據(jù)前5行為:訂單ID 產(chǎn)品ID 產(chǎn)品名稱 客戶 訂單日期 發(fā)貨日期 訂單處理時(shí)間 0 US-2018-1357144 辦公用-用品-10002717 Fiskars 剪刀,藍(lán)色 曾惠-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 攪拌機(jī),黑色 萬蘭-15730 2017-05-31 2017-06-02 2 days ,訂單日期,的數(shù)據(jù)類型:datetim

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

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

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

24術(shù)-設(shè)備10003635StarTech 打印機(jī),耐用 錢偉-21430 2018-09-15 2018-09-172 days 2018986 CN-2018-3172853 辦公用-標(biāo)簽-10000895 Harbour Creations 有色標(biāo)簽,可調(diào)熊麗-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 辦公用-美術(shù)-10002705Sanford 熒光筆,藍(lán)色 顧黎-16360 2018-05-21 2018-0S-243 days 201852018年5月、9月的數(shù)據(jù)行數(shù)為:9Process finished with exit code 0圖3-*任務(wù)2 (1)輸出結(jié)果任務(wù)2 (2)具體代碼如下:data2星期=data2訂單日期weekday _nameresult2 = data2.1oc(data2,=2017) & (data2星期=Monday)print(n2017 年的周一的數(shù)據(jù)為:n”,result2)printC2017年的周一的數(shù)據(jù)行數(shù)為:工esult2.shape0)輸出結(jié)果如圖3-*所

溫馨提示

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

評(píng)論

0/150

提交評(píng)論