您好,登錄后才能下訂單哦!
這篇文章主要介紹“python Pandas時(shí)序數(shù)據(jù)處理的方法有哪些”,在日常操作中,相信很多人在python Pandas時(shí)序數(shù)據(jù)處理的方法有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”python Pandas時(shí)序數(shù)據(jù)處理的方法有哪些”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!
import time # 從格林威治時(shí)間到現(xiàn)在,單位秒 print('系統(tǒng)時(shí)間戳:', time.time()) print('本地時(shí)間按格式轉(zhuǎn)成str:', time.strftime('%Y-%m-%d %X', time.localtime())) # 無參的localtime返回time.struct_time格式的時(shí)間,是本地時(shí)區(qū)的時(shí)間 print('無參localtime:', time.localtime()) print('本時(shí)區(qū)時(shí)間轉(zhuǎn)成時(shí)間戳:', time.mktime(time.localtime())) # 將時(shí)間戳轉(zhuǎn)換為能讀懂的時(shí)間 print('時(shí)間戳轉(zhuǎn)時(shí)間:', time.strftime('%Y-%m-%d %X', time.localtime(time.time())))
運(yùn)行結(jié)果:
系統(tǒng)時(shí)間戳: 1542188096.1592166
本地時(shí)間按格式轉(zhuǎn)成str: 2018-11-14 17:34:56
無參localtime: time.struct_time(tm_year=2018, tm_mon=11, tm_mday=14, tm_hour=17, tm_min=34, tm_sec=56, tm_wday=2, tm_yday=318, tm_isdst=0)
本時(shí)區(qū)時(shí)間轉(zhuǎn)成時(shí)間戳: 1542188096.0
時(shí)間戳轉(zhuǎn)時(shí)間: 2018-11-14 17:34:56
時(shí)間序列在Series對(duì)象中且作為索引存在時(shí),就構(gòu)成了時(shí)序數(shù)據(jù)。
import datetime import numpy as np import pandas as pd # pd.date_range()函數(shù)用于創(chuàng)建一個(gè)Pandas時(shí)間序列DatetimeIndex # start參數(shù)(也是第一個(gè)參數(shù))傳入一個(gè)str格式的開始時(shí)間,也可以傳入一個(gè)datetime對(duì)象 # 這里用datetime.datetime()創(chuàng)建了一個(gè)datetime對(duì)象,只用了前三個(gè)參數(shù)也就是年月日 # pd.date_range()函數(shù)可以指明end表示時(shí)間序列的結(jié)尾時(shí)間 # 這里用periods參數(shù)指明序列中要生成的時(shí)間的個(gè)數(shù),freq='D'指定為每天(Day)生成一個(gè)時(shí)間 dti = pd.date_range(start=datetime.datetime(2018, 11, 14), periods=18, freq='D') print(dti, '\n', '*' * 40, sep='') # 將時(shí)間序列放在Series對(duì)象中作為索引,這里freq='W'表示隔一周生成一個(gè) s_dti = pd.Series(np.arange(6), index=pd.date_range('2018/11/4', periods=6, freq='W')) print(s_dti.head(), '\n', '*' * 40, sep='') # 取時(shí)序數(shù)據(jù)中指定時(shí)間的內(nèi)容 print(s_dti['2018-11-25'], '\n', '*' * 40, sep='') # 取第二個(gè)索引對(duì)應(yīng)的時(shí)間的年月日 print(s_dti.index[2].year, s_dti.index[2].month, s_dti.index[2].day, '\n', '*' * 40, sep='')
運(yùn)行結(jié)果:
DatetimeIndex(['2018-11-14', '2018-11-15', '2018-11-16', '2018-11-17',
'2018-11-18', '2018-11-19', '2018-11-20', '2018-11-21',
'2018-11-22', '2018-11-23', '2018-11-24', '2018-11-25',
'2018-11-26', '2018-11-27', '2018-11-28', '2018-11-29',
'2018-11-30', '2018-12-01'],
dtype='datetime64[ns]', freq='D')
****************************************
2018-11-04 0
2018-11-11 1
2018-11-18 2
2018-11-25 3
2018-12-02 4
Freq: W-SUN, dtype: int32
****************************************
3
****************************************
20181118
****************************************
import pandas as pd import matplotlib as mpl import matplotlib.pyplot as plt df = pd.read_csv('E:/Data/practice/hz_weather.csv') df = df[['日期', '最高氣溫', '最低氣溫']] # print(df.head())
print(type(df.日期)) # <class 'pandas.core.series.Series'> print(type(df.日期.values)) # <class 'numpy.ndarray'> # 修改日期格式 # 注意,df.日期得到的是Series對(duì)象,df.日期.values得到的是ndarray多維數(shù)組 # pd.to_datetime()函數(shù)將輸入解析成時(shí)間對(duì)象的格式并返回 # format參數(shù)指定解析的方式 # 當(dāng)輸入列表形式的值時(shí),返回DatetimeIndex;當(dāng)輸入Series時(shí),返回Series;當(dāng)輸入常量時(shí),返回Timestamp print(type(pd.to_datetime(df.日期.values, format="%Y-%m-%d"))) # <class 'pandas.core.indexes.datetimes.DatetimeIndex'> print(type(pd.to_datetime(df.日期, format="%Y-%m-%d"))) # <class 'pandas.core.series.Series'> df.日期 = pd.to_datetime(df.日期.values, format="%Y-%m-%d") # print(df.head())
# 將日期設(shè)置為索引 df = df.set_index('日期') # 取出第0個(gè)索引值對(duì)應(yīng)的日期 print(df.index[0]) # 2017-01-01 00:00:00 # DatetimeIndex里存的是一個(gè)個(gè)的Timestamp,查看一下類型 print(type(df.index[0])) # <class 'pandas._libs.tslibs.timestamps.Timestamp'> # print(df.info())
# 提取1月份的溫度數(shù)據(jù) df_jan = df[(df.index >= "2017-1-1") & (df.index < "2017-2-1")] # 或用這種方式也可以 df_jan = df["2017-1-1":"2017-1-31"] # print(df_jan.info())
# 只取到月份 df_m = df.to_period('M') # print(df_m.head())
# 利用上面的只取到月份,對(duì)level=0(即索引層級(jí))做聚合就可以求月內(nèi)的平均值等 s_m_mean = df_m.groupby(level=0).mean() # print(s_m_mean.head())
# 繪制[最高溫度]和[最低溫度]兩個(gè)指標(biāo)隨著索引[時(shí)間]變化的圖 fig, ax = plt.subplots(1, 1, figsize=(12, 4)) df.plot(ax=ax) plt.show()
到此,關(guān)于“python Pandas時(shí)序數(shù)據(jù)處理的方法有哪些”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。