系列文章目录
pandas深化学习之索引
pandas深化学习之排序重塑
pandas深化学习之缺失值处理
pandas深化学习之字符串处理
pandas深化学习之数学运算
pandas深化学习之日期时间处理
pandas深化学习之重置索引、选择
前言
本文主要记录pandas中缺失值异常值相关的api使用:
通过对真实数据的一系列操作帮助我们熟练掌握相关api的使用。
提示:以下是本篇文章正文内容,下面案例可供参考
1.引入库
代码如下:
import pandas as pd
import numpy as np
from faker import Faker
import warnings
warnings.filterwarnings('ignore')
2.造数据
代码如下:
f = Faker('ZH-cn')
peridx = pd.PeriodIndex(pd.date_range('20201001',periods=10,freq='D'))
df = pd.DataFrame(np.random.randint(1,100,(10,4)),index=peridx)
结果
3.数据基本信息查询
我们在理解DataFrame时要类比Excel表格,可以帮助我们更清晰的分析
在DataFrame中,我更倾向于叫一行为样本或者记录,叫一列为特征或者属性
df.info()
结果
4.时间序列索引相关api
- 转换为指定频率的时间序列索引
前缀
df.asfreq('Q')
结果
相关频率如下
B 工作日频率
C 自定义工作日频率
D 日历日频率
W 每周频率
M 月末频率
SM 半月(15日和月末)
BM 月末工作日
CBM 自定义月工作日结束频率
MS 月开始频率
SMS 半个月开始频率(第1和第15)
BMS 月工作日开始频率
CBMS 自定义月工作日开始频率
Q 季度
BQ 季度末
QS 季度初
BQS 季度工作日开始频率
A, Y 年终频率
BA, BY 年度工作日结束频率
AS, YS 年开始频率
BAS, BYS 年度工作日开始频率
BH 工作日时间频率
H 每小时频率
T, min 分钟频率
S 秒
L, ms 毫秒
U, us 微秒
N 纳秒
还可以在频率字母前加上数字,表示倍数
df.asfreq('30T')
结果
- 返回where条件之前非空的最后一行。
df.asof('2020-10-05 22:00')
结果
- 偏移
偏移方法并不是时间序列特有的方法,是DataFrame和Series的方法
df.shift(2,fill_value=0)
结果
如果没有指定fill_value,则会默认填充nan
df.shift(2)
- 切片偏移,不保留已偏移行或者列
df.slice_shift(3,axis=1)
结果
- 返回第一个非空值的索引。
df.first_valid_index()
# 结果
Period('2020-10-01', 'D')
- 返回最后一个非空值的索引。
df.last_valid_index()
# 结果
Period('2020-10-10', 'D')
- 重采样
重新采样时间序列数据,返回的是Sampler对象
可以使用聚合函数
df.resample('3D').max()
结果
- 将非时间序列索引转换成时间序列索引
df1 = pd.DataFrame(np.random.randint(1,100,(10,4)),
index=pd.date_range('20200101',freq='M',periods=10))
此时的索引是日期时间索引
df2 = df1.to_period()
此时查看基本信息可以发现已经转换成时间序列索引了
- 将时间序列索引转换成非时间序列索引
同样的我们也可以将时间序列索引转换成日期时间索引
df.to_timestamp()
结果
转换完成后,并不能直观的发现区别,但是我们可以通过查看基本信息,或者查看索引
peridx = df.to_timestamp().index
结果
- 时间序列索引的方法
时间序列索引可以使用日期时间类型的大部分方法和属性
# 天
peridx.day
# 星期
peridx.day_name()
# 季度
peridx.quarter
# 是否闰年
peridx.is_leap_year
其他方法不再演示,可以查看同系列的日期时间处理的文章。
总结
代码的功底都是通过不断的练习一步步积累起来的,和我一起学pandas吧!