Pandas的时序分析
转载请注明出处 😃!
手动反爬:Pandas时序分析(df.tz_localize 时区位置、df.tz_convert 时区转换)
https://blog.csdn.net/Lyun911/article/details/112716440
注:以下使用 Jupyter Notebook 演示
6 pd.dataframe.timezone 时区转换功能
在处理数据的时候,我们拿到的数据一般都有两种时间状态:
A 本地时间状态,不区分时区问题
B 带有时区的时间状态
timezone
功能就是解决时区问题的利器
载入数据(时间/股价):
import pandas as pd
df = pd.read_csv("msft.csv")
df
# 注:表中【8/17/2017 9:00:00 AM】是美国 New York 的时间!!!
df = pd.read_csv(
"msft.csv",
header = 1,# 第1行的数据不是行头,以第2行为行头
parse_dates = True,# 自动寻找时间 = True
index_col = 'Date Time'# 以 'Date Time'作为 index列
)
df.head()
6.1 df.tz_localize 时区位置
df.tz_localize(’’) 时区查看(显示 加/减 小时)
(注:注意事项在备注中)
# timezone = 美国/东部,改完以后Date Time的后面就会出现'-04:00'
# 【2017-08-17 09:00:00】是美国 New York 的时间
# 而【-04:00】指的是相对于0时区【US/Eastern】的时间差
# 所以此处【09:00:00-04:00】=【05:00:00】不是【US/Eastern】的时间!!!
# 【US/Eastern】的实际时间应该是:
# 09:00:00 + (【US/Eastern-04:00】-【New York时间-05:00】) = 10:00
df.tz_localize(tz = 'US/Eastern')
# timezone = 欧洲/柏林,改完以后Date Time的后面就会出现'+02:00'
df.tz_localize(tz = 'Europe/Berlin')
6.2 df.tz_convert 时区转换
df.index = df.index.tz_localize(tz = 'US/Eastern')# 把 df.index替换成带有时区的 index
df.index
df = df.tz_convert('Europe/Berlin')# 将 df的时区转换为 欧洲/柏林
df
查看所有时区,转换时区:
from pytz import all_timezones
print (all_timezones[:30])# 查看所有的时区
df = df.tz_convert('Asia/Shanghai')
df
6.3 不同时区的转换,带时区的 date_range
london = pd.date_range(
'2012/3/6 08:00:00 ',
periods = 12,
freq = 'H',
tz = 'Europe/London'
)
s = pd.Series(range(12), index = london)
b = s.tz_convert('Asia/Shanghai')