Python数据分析基础(八)——时间序列

时间序列数据是一种重要的结构化数据形式。


datetime模块中的数据类型

类型 说明
date 以公历形式存储日历日期(年、月、日)
time 将时间存储为时、分、秒、毫秒
datetime 存储日期和时间
timedelta 表示两个datetime值之间的差(日、秒、毫秒)


datettime格式定义

代码 说明
%Y 4位数的年
%y 2位数的年
%m 2位数的月[01, 12]
%d 2位数的日[01, 31]
%H 时(24小时制)[00, 23]
%I 时(12小时制)[01, 12]
%M 2位数的分[00, 59]
%S 秒00, 61
%w 用整数表示的星期几[0(星期天), 6]
%U 每年的第几周[00, 53],星期天被认为是每周的第一天
%W 每年的第几周[00, 53],星期一被认为是每周的第一天
%z 以+HHMM或-HHMM表示的UTC时区偏移量
%F %Y-%m-%d简写形式
%D %m/%d/%y简写形式


特定于当前环境的日期格式

代码 说明
%a 星期几的简写
%A 星期几的全称
%b 月份的简写
%B 月份的全称
%c 完整的日期和时间
%p 不同环境中的AM或PM
%x 适合于当前环境的日期格式
%X 适合于当前环境的时间格式


时间序列的基础频率

别名 偏移量类型 说明
D Day 每日日历
B BusinessDay 每工作日
H Hour 每小时
T或min Minute 每分
S Second 每秒
L或ms Milli 每毫秒
U Micro 每微秒
M MonthEnd 每月最后一个日历日
BM BusinessMonthEnd 每月最后一个工作日
MS MonthBegin 每月第一个日历日
BMS BusinessMonthBegin 每月第一个工作日
W-MON、W-TUE Week 从指定的星期几(MON、TUE、WED、THU、FRI、SAT、SUN)开始算起,每周
WOM-1MON、WOM-2MON WeekOfMonth 产生每月第一、第二、第三或第四周的星期几
Q-JAN、Q-FEB QuarterEnd 对于以指定月份(JAN、FEB、MAR、APR、MAY、JUN、JUL、AUG、SEP、OCT、NOV、DEC)结束的年度,每季度最后一月的最后一个日历日
BQ-JAN、BQ-FEB BusinessQuarterEnd 对于以指定月份结束的年度,每季度最后一月的最后一个工作日
QS-JAN、QS-FEB QuarterBeging 对于以指定月份结束的年度,每季度最后一月的第一个日历日
BQS-JAN、BQS-FEB BusinessQuarterBegin 对于以指定月份结束的年度,每季度最后一月的第一个工作日
A-JAN、A-FEB YearEnd 每年指定月份的最后一个日历日
BA-JAV、BA-FEB BusinessYearEnd 每年指定月份的最后一个工作日
AS-JAN、AS-FEB YearBegin 每年指定月份的第一个日历日
BAS-JAV、BAS-FEB BusinessYearBegin 每年指定月份的第一个工作日


resample方法的参数

参数 说明
freq 表示重采样频率的字符串或DateOffset,例如'M'、'5min'或Second(15)
how='mean' 用于产生聚合值的函数名或数组函数,例如'mean'、'ohlc'、np.max等。默认为'mean',其他常用的值有:'first'、'last'、'median'、'ohlc'、'max'、'min'。
axis=0 重采样的轴,默认为axis=0
fill_method=None 升采样时如何插值,比如'ffill'或'bfill'。默认不插值
closed='right' 在降采样中,各时间段的哪一端是闭合(即包含)的,'right'或'left',默认为'right'
label='right' 在降采样中,如何设置聚合值的标签,'right'或'left'(面元的右边界或左边界),默认为'right'
loffset=None 面元标签的时间校正值,比如'-1s'/Second(-1)用于将聚合标签调早1秒
limit=None 在前向或后向填充时,允许填充的最大时期数
kind=None 聚合到时期('period')或时间戳('timestamp'),默认聚合到时间序列的索引类型
convention=None 当重采样时期时,将低频率转换到高频率所采用的约定('start'或'end'),默认为'end'


移动窗口和指数加权函数

函数 说明
rolling_count 返回各窗口非NA观测值的数量
rolling_sum 移动窗口的和
rolling_mean 移动窗口的平均数
rolling_median 移动窗口的中位数
rolling_var、rolling_std 移动窗口的方差和标准差。分母为n-1
rolling_skew、rolling_kurt 移到窗口的偏度(三阶矩)和峰度(四阶矩)
rolling_min、rolling_max 移动窗口的最小值和最大值
rolling_quantile 移动窗口指定百分位数/样本分位数位置的值
rolling_corr、rolling_cov 移动窗口的相关系数和协方差
rolling_apply 对移动窗口应用普通数组函数
ewma 指数加权移动平均
ewmvar、evmstd 指数加权移动方差和标准差
ewmcorr、ewmcov 指数加权移动相关系数和协方差



参考文献:

利用Python进行数据分析.    Wes McKinney.    唐学韬译

Python数据分析与处理领域非常流行,尤其是在教育领域的高考分数线统计分析。假设你想对北京历年来的高考分数线数据进行分析,你可以按照以下步骤操作: 1. **数据获取**:可以从公开教育资源网站、教育部官网或者第三方数据平台下载历年的北京高考分数线数据,可能是CSV、Excel或其他结构化的电子表格文件。 2. **数据清洗**:检查数据是否存在缺失值、异常值或错误格式,必要时进行数据清洗和填充。 3. **数据加载**:使用pandas库中的`read_csv`函数读取数据,并将其转换为DataFrame格式,方便后续操作。 ```python import pandas as pd df = pd.read_csv('beijing_gaokao_scores.csv') ``` 4. **数据探索**:通过`head()`, `describe()`等方法初步了解数据分布、各科分数平均值、最高分和最低分等信息。 5. **时间序列分析**:如果数据按年份排列,可以查看分数线随时间的变化趋势,比如绘制折线图。 6. **分科目分析**:按科目划分,对比各个科目的平均分、最高分,可能需要对每个学科的历史变化进行可视化。 7. **聚类分析或分类**:如果有多年的数据,可以尝试进行聚类分析,看看是否有明显的年级或地区差异。 8. **预测模型**:如果目标是预测未来几年的分数线,可以使用回归模型(如线性回归、决策树回归等)进行训练。 9. **撰写报告**:整理分析结果,形成清晰易懂的图表和文字描述,总结出关键发现和趋势。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值