Python中的时间序列数据操作总结( 四 )


3 1991-10-01 3.611003 1991 10 1 1991-10-01 00:00:00
4 1991-11-01 3.565869 1991 11 1 1991-11-01 00:00:00
"""
还可以重新组合它们 。
df["date_joined"] = pd.to_datetime(df[["year","month","day"]])
print(df["date_joined"])
"""
0 1991-07-01
1 1991-08-01
2 1991-09-01
3 1991-10-01
4 1991-11-01
...
199 2008-02-01
200 2008-03-01
201 2008-04-01
202 2008-05-01
203 2008-06-01
Name: date_joined, Length: 204, dtype: datetime64[ns]
过滤查询
使用loc方法来过滤DataFrame 。
df = df.loc["2021-01-01":"2021-01-10"]

Python中的时间序列数据操作总结

文章插图
truncate 可以查询两个时间间隔中的数据
df_truncated = df.truncate('2021-01-05', '2022-01-10')
Python中的时间序列数据操作总结

文章插图
常见数据操作
下面就是对时间序列数据集中的值执行操作 。我们使用yfinance库创建一个用于示例的股票数据集 。
#get google stock price data
import yfinance as yf
start_date = '2020-01-01'
end_date = '2023-01-01'
ticker = 'GOOGL'
df = yf.download(ticker, start_date, end_date)
df.head()
"""
Date Open High Low Close Adj Close Volume
2020-01-02 67.420502 68.433998 67.324501 68.433998 68.433998 27278000
2020-01-03 67.400002 68.687500 67.365997 68.075996 68.075996 23408000
2020-01-06 67.581497 69.916000 67.550003 69.890503 69.890503 46768000
2020-01-07 70.023003 70.175003 69.578003 69.755501 69.755501 34330000
2020-01-08 69.740997 70.592499 69.631500 70.251999 70.251999 35314000
"""
计算差值
diff函数可以计算一个元素与另一个元素之间的插值 。
#subtract that day's value from the previous day
df["Diff_Close"] = df["Close"].diff()
#Subtract that day's value from the day's value 2 days ago
df["Diff_Close_2Days"] = df["Close"].diff(periods=2)
Python中的时间序列数据操作总结

文章插图
累计总数
df["Volume_Cumulative"] = df["Volume"].cumsum()
Python中的时间序列数据操作总结

文章插图
滚动窗口计算
滚动窗口计算(移动平均线) 。
df["Close_Rolling_14"] = df["Close"].rolling(14).mean()
df.tail()
Python中的时间序列数据操作总结

文章插图
可以对我们计算的移动平均线进行可视化
Python中的时间序列数据操作总结

文章插图
常用的参数:
 
  •  
    center:决定滚动窗口是否应以当前观测值为中心 。
     
  •  
    min_periods:窗口中产生结果所需的最小观测次数 。
     
 
s = pd.Series([1, 2, 3, 4, 5])
#the rolling window will be centered on each observation
rolling_mean = s.rolling(window=3, center=True).mean()
"""
0 NaN
1 2.0
2 3.0
3 4.0
4 NaN
dtype: float64
Explanation:
first window: [na 1 2] = na
second window: [1 2 3] = 2
"""
# the rolling window will not be centered,
#and will instead be anchored to the left side of the window
rolling_mean = s.rolling(window=3, center=False).mean()
"""
0 NaN
1 NaN
2 2.0
3 3.0
4 4.0
dtype: float64
Explanation:
first window: [na na 1] = na
second window: [na 1 2] = na
third window: [1 2 3] = 2
"""
平移
Pandas有两个方法 , shift()和tshift() , 它们可以指定倍数移动数据或时间序列的索引 。Shift()移位数据 , 而tshift()移位索引 。


推荐阅读