中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Pandas.DataFrame時間序列數據處理如何實現

發布時間:2023-02-23 10:38:47 來源:億速云 閱讀:121 作者:iii 欄目:開發技術

本篇內容主要講解“Pandas.DataFrame時間序列數據處理如何實現”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Pandas.DataFrame時間序列數據處理如何實現”吧!

將pandas.DataFrame,pandas.Series的索引設置為datetime64 [ns]類型時,將其視為DatetimeIndex,并且可以使用各種處理時間序列數據的函數。可以按年或月指定行,并按切片指定提取周期,這在處理包含日期和時間信息(例如日期和時間)的數據時非常方便。

如何將一列現有數據指定為DatetimeIndex

將pandas.DataFrame與默認的基于0的索引和一個字符串列作為日期。

import pandas as pd

df = pd.read_csv('./data/26/sample_date.csv')
print(df)
#           date  val_1  val_2
# 0   2017-11-01     65     76
# 1   2017-11-07     26     66
# 2   2017-11-18     47     47
# 3   2017-11-27     20     38
# 4   2017-12-05     65     85
# 5   2017-12-12      4     29
# 6   2017-12-22     31     54
# 7   2017-12-29     21      8
# 8   2018-01-03     98     76
# 9   2018-01-08     48     64
# 10  2018-01-19     18     48
# 11  2018-01-23     86     70

print(type(df.index))
# <class 'pandas.core.indexes.range.RangeIndex'>

print(df['date'].dtype)
# object

將to_datetime()應用于日期字符串列,并轉換為datetime64 [ns]類型。

df['date'] = pd.to_datetime(df['date'])
print(df['date'].dtype)
# datetime64[ns]

使用set_index()方法將datetime64 [ns]類型的列指定為索引。

Pandas.DataFrame,重置列的行名(set_index)

索引現在是DatetimeIndex。索引的每個元素都是時間戳類型。

df.set_index('date', inplace=True)
print(df)
#             val_1  val_2
# date                    
# 2017-11-01     65     76
# 2017-11-07     26     66
# 2017-11-18     47     47
# 2017-11-27     20     38
# 2017-12-05     65     85
# 2017-12-12      4     29
# 2017-12-22     31     54
# 2017-12-29     21      8
# 2018-01-03     98     76
# 2018-01-08     48     64
# 2018-01-19     18     48
# 2018-01-23     86     70

print(type(df.index))
# <class 'pandas.core.indexes.datetimes.DatetimeIndex'>

print(df.index[0])
print(type(df.index[0]))
# 2017-11-01 00:00:00
# <class 'pandas._libs.tslib.Timestamp'>

可以按年或月指定行,并按切片提取周期。

print(df['2018'])
#             val_1  val_2
# date                    
# 2018-01-03     98     76
# 2018-01-08     48     64
# 2018-01-19     18     48
# 2018-01-23     86     70

print(df['2017-11'])
#             val_1  val_2
# date                    
# 2017-11-01     65     76
# 2017-11-07     26     66
# 2017-11-18     47     47
# 2017-11-27     20     38

print(df['2017-12-15':'2018-01-15'])
#             val_1  val_2
# date                    
# 2017-12-22     31     54
# 2017-12-29     21      8
# 2018-01-03     98     76
# 2018-01-08     48     64

還可以指定各種格式的行。

print(df.loc['01/19/2018', 'val_1'])
# 18

print(df.loc['20180103', 'val_2'])
# 76

讀取CSV時如何指定DatetimeIndex

如果原始數據是CSV文件,則在使用read_csv()進行讀取時可以指定DatetimeIndex。

在參數index_col中指定要用作索引的日期和時間數據的列名(或從0開始的列號),并將parse_dates設置為True。

df = pd.read_csv('./data/26/sample_date.csv', index_col='date', parse_dates=True)
print(df)
#             val_1  val_2
# date
# 2017-11-01     65     76
# 2017-11-07     26     66
# 2017-11-18     47     47
# 2017-11-27     20     38
# 2017-12-05     65     85
# 2017-12-12      4     29
# 2017-12-22     31     54
# 2017-12-29     21      8
# 2018-01-03     98     76
# 2018-01-08     48     64
# 2018-01-19     18     48
# 2018-01-23     86     70

print(type(df.index))
# <class 'pandas.core.indexes.datetimes.DatetimeIndex'>

如果CSV文件的日期字符串為非標準格式,請在read_csv()的參數date_parser中指定由lambda表達式定義的解析器。

parser = lambda date: pd.to_datetime(date, format='%Y年%m月%d日')

df_jp = pd.read_csv('./data/26/sample_date_cn.csv', index_col='date', parse_dates=True, date_parser=parser)
print(df_jp)
#             val_1  val_2
# date
# 2017-11-01     65     76
# 2017-11-07     26     66
# 2017-11-18     47     47
# 2017-11-27     20     38
# 2017-12-05     65     85
# 2017-12-12      4     29
# 2017-12-22     31     54
# 2017-12-29     21      8
# 2018-01-03     98     76
# 2018-01-08     48     64
# 2018-01-19     18     48
# 2018-01-23     86     70

print(type(df_jp.index))
# <class 'pandas.core.indexes.datetimes.DatetimeIndex'>

關于pandas.Series

這可能不是實際的模式,但是如果pandas.Series索引是日期字符串。

s = pd.read_csv('./data/26/sample_date.csv', index_col=0, usecols=[0, 1], squeeze=True)
print(s)
# date
# 2017-11-01    65
# 2017-11-07    26
# 2017-11-18    47
# 2017-11-27    20
# 2017-12-05    65
# 2017-12-12     4
# 2017-12-22    31
# 2017-12-29    21
# 2018-01-03    98
# 2018-01-08    48
# 2018-01-19    18
# 2018-01-23    86
# Name: val_1, dtype: int64

print(type(s))
print(type(s.index))
# <class 'pandas.core.series.Series'>
# <class 'pandas.core.indexes.base.Index'>

如果要將此索引轉換為DatetimeIndex,則可以通過將用to_datetime轉換的索引替換為屬性索引來覆蓋它。

s.index = pd.to_datetime(s.index)
print(s)
# date
# 2017-11-01    65
# 2017-11-07    26
# 2017-11-18    47
# 2017-11-27    20
# 2017-12-05    65
# 2017-12-12     4
# 2017-12-22    31
# 2017-12-29    21
# 2018-01-03    98
# 2018-01-08    48
# 2018-01-19    18
# 2018-01-23    86
# Name: val_1, dtype: int64

print(type(s))
print(type(s.index))
# <class 'pandas.core.series.Series'>
# <class 'pandas.core.indexes.datetimes.DatetimeIndex'>

print(s['2017-12-15':'2018-01-15'])
# date
# 2017-12-22    31
# 2017-12-29    21
# 2018-01-03    98
# 2018-01-08    48
# Name: val_1, dtype: int64

到此,相信大家對“Pandas.DataFrame時間序列數據處理如何實現”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

梨树县| 筠连县| 邵东县| 潢川县| 敦化市| 涟源市| 庐江县| 余姚市| 霍城县| 乌鲁木齐县| 西昌市| 南雄市| 金山区| 壶关县| 墨竹工卡县| 凌云县| 张家口市| 城口县| 新竹县| 绥阳县| 磴口县| 怀化市| 怀集县| 北流市| 开江县| 湘潭县| 清新县| 邹平县| 泰和县| 房产| 桃园市| 万源市| 东莞市| 建平县| 巩留县| 六枝特区| 武义县| 花莲县| 荆州市| 云霄县| 双流县|