最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python Pandas庫基礎(chǔ)分析之時間序列的處理詳解

 更新時間:2019年07月13日 14:07:18   作者:千鋒Python唐唐君  
這篇文章主要介紹了python Pandas庫基礎(chǔ)分析之時間序列的處理詳解,Pandas作為Python環(huán)境下的數(shù)據(jù)分析庫,更是提供了強大的日期數(shù)據(jù)處理的功能,是處理時間序列的利器,需要的朋友可以參考下

前言

在使用Python進行數(shù)據(jù)分析時,經(jīng)常會遇到時間日期格式處理和轉(zhuǎn)換,特別是分析和挖掘與時間相關(guān)的數(shù)據(jù),比如量化交易就是從歷史數(shù)據(jù)中尋找股價的變化規(guī)律。Python中自帶的處理時間的模塊有datetime,NumPy庫也提供了相應(yīng)的方法,Pandas作為Python環(huán)境下的數(shù)據(jù)分析庫,更是提供了強大的日期數(shù)據(jù)處理的功能,是處理時間序列的利器。

1、生成日期序列

主要提供pd.data_range()和pd.period_range()兩個方法,給定參數(shù)有起始時間、結(jié)束時間、生成時期的數(shù)目及時間頻率(freq='M'月,'D'天,‘W',周,'Y'年)等。

兩種主要區(qū)別在于pd.date_range()生成的是DatetimeIndex格式的日期序列;pd.period_range()生成的是PeriodIndex格式的日期序列。

以下通過生成月時間序列和周時間序列來對比下:

date_rng = pd.date_range('2019-01-01', freq='M', periods=12)
print(f'month date_range():
{date_rng}')
"""
date_range():
DatetimeIndex(['2019-01-31', '2019-02-28', '2019-03-31', '2019-04-30',
 '2019-05-31', '2019-06-30', '2019-07-31', '2019-08-31',
 '2019-09-30', '2019-10-31', '2019-11-30', '2019-12-31'],
 dtype='datetime64[ns]', freq='M')
"""
period_rng = pd.period_range('2019/01/01', freq='M', periods=12)
print(f'month period_range():
{period_rng}')
"""
period_range():
PeriodIndex(['2019-01', '2019-02', '2019-03', '2019-04', '2019-05', '2019-06',
 '2019-07', '2019-08', '2019-09', '2019-10', '2019-11', '2019-12'],
 dtype='period[M]', freq='M')
"""
date_rng = pd.date_range('2019-01-01', freq='W-SUN', periods=12)
print(f'week date_range():
{date_rng}')
"""
week date_range():
DatetimeIndex(['2019-01-06', '2019-01-13', '2019-01-20', '2019-01-27',
 '2019-02-03', '2019-02-10', '2019-02-17', '2019-02-24',
 '2019-03-03', '2019-03-10', '2019-03-17', '2019-03-24'],
 dtype='datetime64[ns]', freq='W-SUN')
"""
period_rng=pd.period_range('2019-01-01',freq='W-SUN',periods=12)
print(f'week period_range():
{period_rng}')
"""
week period_range():
PeriodIndex(['2018-12-31/2019-01-06', '2019-01-07/2019-01-13',
 '2019-01-14/2019-01-20', '2019-01-21/2019-01-27',
 '2019-01-28/2019-02-03', '2019-02-04/2019-02-10',
 '2019-02-11/2019-02-17', '2019-02-18/2019-02-24',
 '2019-02-25/2019-03-03', '2019-03-04/2019-03-10',
 '2019-03-11/2019-03-17', '2019-03-18/2019-03-24'],
 dtype='period[W-SUN]', freq='W-SUN')
"""
date_rng = pd.date_range('2019-01-01 00:00:00', freq='H', periods=12)
print(f'hour date_range():
{date_rng}')
"""
hour date_range():
DatetimeIndex(['2019-01-01 00:00:00', '2019-01-01 01:00:00',
 '2019-01-01 02:00:00', '2019-01-01 03:00:00',
 '2019-01-01 04:00:00', '2019-01-01 05:00:00',
 '2019-01-01 06:00:00', '2019-01-01 07:00:00',
 '2019-01-01 08:00:00', '2019-01-01 09:00:00',
 '2019-01-01 10:00:00', '2019-01-01 11:00:00'],
 dtype='datetime64[ns]', freq='H')
"""
period_rng=pd.period_range('2019-01-01 00:00:00',freq='H',periods=12)
print(f'hour period_range():
{period_rng}')
"""
hour period_range():
PeriodIndex(['2019-01-01 00:00', '2019-01-01 01:00', '2019-01-01 02:00',
 '2019-01-01 03:00', '2019-01-01 04:00', '2019-01-01 05:00',
 '2019-01-01 06:00', '2019-01-01 07:00', '2019-01-01 08:00',
 '2019-01-01 09:00', '2019-01-01 10:00', '2019-01-01 11:00'],
 dtype='period[H]', freq='H')
"""

2、生成Timestamp對象及轉(zhuǎn)換

創(chuàng)建一個Timestamp時間戳對象有pd.Timestamp()方法和pd.to_datetime()方法。如下所示:

ts=pd.Timestamp(2019,1,1)
print(f'pd.Timestamp()-1:{ts}')
#pd.Timestamp()-1:2019-01-01 00:00:00
ts=pd.Timestamp(dt(2019,1,1,hour=0,minute=1,second=1))
print(f'pd.Timestamp()-2:{ts}')
#pd.Timestamp()-2:2019-01-01 00:01:01
ts=pd.Timestamp("2019-1-1 0:1:1")
print(f'pd.Timestamp()-3:{ts}')
#pd.Timestamp()-3:2019-01-01 00:01:01
print(f'pd.Timestamp()-type:{type(ts)}')
#pd.Timestamp()-type:<class 'pandas._libs.tslibs.timestamps.Timestamp'>
#dt=pd.to_datetime(2019,1,1) 不支持
dt=pd.to_datetime(dt(2019,1,1,hour=0,minute=1,second=1))
print(f'pd.to_datetime()-1:{dt}')
#pd.to_datetime()-1:2019-01-01 00:01:01
dt=pd.to_datetime("2019-1-1 0:1:1")
print(f'pd.to_datetime()-2:{dt}')
#pd.to_datetime()-2:2019-01-01 00:01:01
print(f'pd.to_datetime()-type:{type(dt)}')
#pd.to_datetime()-type:<class 'pandas._libs.tslibs.timestamps.Timestamp'>
#pd.to_datetime生成自定義時間序列
dtlist=pd.to_datetime(["2019-1-1 0:1:1", "2019-3-1 0:1:1"])
print(f'pd.to_datetime()-list:{dtlist}')
#pd.to_datetime()-list:DatetimeIndex(['2019-01-01 00:01:01', '2019-03-01 00:01:01'], dtype='datetime64[ns]', freq=None)
#時間戳轉(zhuǎn)換為period月時期
pr = ts.to_period('M')
print(f'ts.to_period():{pr}')
#ts.to_period():2019-01
print(f'pd.to_period()-type:{type(pr)}')
#pd.to_period()-type:<class 'pandas._libs.tslibs.period.Period'>

3、生成period對象及轉(zhuǎn)換

#定義時期period
per=pd.Period('2019')
print(f'pd.Period():{per}')
#pd.Period():2019
per_del=pd.Period('2019')-pd.Period('2018')
print(f'2019和2018間隔{per_del}年')#可以直接+、-整數(shù)(代表年)
#2019和2018間隔1年
#時期轉(zhuǎn)換為時間戳
print(per.to_timestamp(how='end'))#2019-12-31 00:00:00
print(per.to_timestamp(how='start'))#2019-01-01 00:00:00

4、生成時間間隔Timedelta

#生成時間間隔Timedelta
print(pd.Timedelta(days=5, minutes=50, seconds=20, milliseconds=10, microseconds=10, nanoseconds=10))
#5 days 00:50:20.010010
#獲取當(dāng)前時間
now=pd.datetime.now()
#計算當(dāng)前時間往后50天的日期
dt=now+pd.Timedelta(days=50)
print(f'當(dāng)前時間是{now}, 50天后時間是{dt}')
#當(dāng)前時間是2019-06-08 17:59:31.726065, 50天后時間是2019-07-28 17:59:31.726065
#只顯示年月日
print(dt.strftime('%Y-%m-%d'))#2019-07-28

5、重采樣及頻率轉(zhuǎn)換

#asfreq 按季度顯示索引值
#'DatetimeIndex' object has no attribute 'asfreq'
date=pd.date_range('1/1/2018', periods=20, freq='D')
tsdat_series=pd.Series(range(20),index=date)
tsp_series=tsdat_series.to_period('D')
print(tsp_series.index.asfreq('Q'))
date=pd.period_range('1/1/2018', periods=20, freq='D')
tsper_series=pd.Series(range(20),index=date)
print(tsper_series.index.asfreq('Q'))
"""
PeriodIndex(['2018Q1', '2018Q1', '2018Q1', '2018Q1', '2018Q1', '2018Q1',
 '2018Q1', '2018Q1', '2018Q1', '2018Q1', '2018Q1', '2018Q1',
 '2018Q1', '2018Q1', '2018Q1', '2018Q1', '2018Q1', '2018Q1',
 '2018Q1', '2018Q1'],
 dtype='period[Q-DEC]', freq='Q-DEC')
"""
#resample 按季度統(tǒng)計并顯示
print(tsdat_series.resample('Q').sum().to_period('Q'))
"""
2018Q1 190
Freq: Q-DEC, dtype: int64
"""
#groupby 按周進行匯總求平均值
print(tsdat_series.groupby(lambda x:x.weekday).mean())
"""
0 7.0
1 8.0
2 9.0
3 10.0
4 11.0
5 12.0
6 9.5
dtype: float64
"""

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解Python中DOM方法的動態(tài)性

    詳解Python中DOM方法的動態(tài)性

    這篇文章主要介紹了詳解Python中DOM方法的動態(tài)性,xml.dom模塊在Python的網(wǎng)絡(luò)編程中相當(dāng)有用,本文來自于IBM官網(wǎng)的開發(fā)者技術(shù)文檔,需要的朋友可以參考下
    2015-04-04
  • Python之pymysql的使用小結(jié)

    Python之pymysql的使用小結(jié)

    這篇文章主要介紹了Python之pymysql的使用小結(jié),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • 深入分析python 排序

    深入分析python 排序

    這篇文章主要介紹了python 排序的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)python排序的知識,感興趣的朋友可以了解下
    2020-08-08
  • Python全局變量操作詳解

    Python全局變量操作詳解

    這篇文章主要介紹了Python全局變量操作詳解,本文總結(jié)了兩種使用全局變量的方式,需要的朋友可以參考下
    2015-04-04
  • python中extend功能用法舉例

    python中extend功能用法舉例

    這篇文章主要給大家介紹了關(guān)于python中extend功能的相關(guān)資料,Python中的extend()方法是一種非常有用的列表操作,它可以將一個列表中的元素添加到另一個列表的末尾,需要的朋友可以參考下
    2023-08-08
  • 利用Python實現(xiàn)網(wǎng)絡(luò)運維自動化的實戰(zhàn)案例

    利用Python實現(xiàn)網(wǎng)絡(luò)運維自動化的實戰(zhàn)案例

    Python作為一種簡潔而強大的編程語言,已經(jīng)成為網(wǎng)絡(luò)運維自動化的熱門選擇,本文將介紹如何利用Python實現(xiàn)網(wǎng)絡(luò)設(shè)備配置管理、監(jiān)控和故障排除等自動化任務(wù),并提供代碼示例,需要的朋友可以參考下
    2024-03-03
  • 淺談keras中的目標(biāo)函數(shù)和優(yōu)化函數(shù)MSE用法

    淺談keras中的目標(biāo)函數(shù)和優(yōu)化函數(shù)MSE用法

    這篇文章主要介紹了淺談keras中的目標(biāo)函數(shù)和優(yōu)化函數(shù)MSE用法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python使用LRU緩存策略進行緩存的方法步驟

    Python使用LRU緩存策略進行緩存的方法步驟

    本文主要介紹了Python使用LRU緩存策略進行緩存的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • python中sort sorted reverse reversed函數(shù)的區(qū)別說明

    python中sort sorted reverse reversed函數(shù)的區(qū)別說明

    這篇文章主要介紹了python中sort sorted reverse reversed函數(shù)的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • 對numpy數(shù)據(jù)寫入文件的方法講解

    對numpy數(shù)據(jù)寫入文件的方法講解

    今天小編就為大家分享一篇對numpy數(shù)據(jù)寫入文件的方法講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07

最新評論

浦北县| 大丰市| 邯郸市| 柳江县| 绥棱县| 镇康县| 新巴尔虎右旗| 龙州县| 岳普湖县| 泰州市| 和政县| 平乡县| 探索| 依安县| 浙江省| 长汀县| 潮安县| 渝中区| 清水县| 乌什县| 辰溪县| 滕州市| 连平县| 林州市| 龙口市| 沙河市| 察隅县| 宜川县| 文山县| 海口市| 全南县| 徐闻县| 藁城市| 仙居县| 凤庆县| 汶川县| 汾阳市| 南昌县| 嵊州市| 新和县| 吐鲁番市|