频率别名 | 描述 |
---|---|
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 | 纳秒频率 |
import pandas as pd import numpy as np df = pd.DataFrame( data=np.random.randint(1,20,10), index=pd.date_range(start="20/01/2021",periods=10,freq="M"),) print(df)
0
2021-01-31 1
2021-02-28 6
2021-03-31 12
2021-04-30 5
2021-05-31 7
2021-06-30 4
2021-07-31 9
2021-08-31 7
2021-09-30 18
2021-10-31 10
0
count 10.00000
mean 7.90000
std 4.72464
min 1.00000
25% 5.25000
50% 7.00000
75% 9.75000
max 18.00000
创建时添加索引
pd.DataFrame(...,index=[],...)
df.set_index使用现有列设置索引
df.set_index(["X"],inplace=True) df.set_index(["X","Y"],inplace=True)
df.reset_index可以还原索引
df.reset_index("X")
df.truncate过滤数据
df.truncate(before="2021-5",after="2021-9")
0
2021-05-31 7
2021-06-30 4
2021-07-31 9
2021-08-31 7
df.loc索引过滤
df.loc["2021-5":]
0
2021-05-31 7
2021-06-30 4
2021-07-31 9
2021-08-31 7
2021-09-30 18
2021-10-31 10
duplicated()方法判断
# 判断dataframe数据整行是否重复 df.duplicated() # dataframe数据某列是否重复 df.columns_name.duplicated() # 判断dataframe数据多列数据是否重复(多列组合查) df.duplicated(subset = ['n1','n2'])
groupby().count()
df.groupby('columns').count()>1
drop_duplicats参数说明:
df.drop_duplicats(subset=['name1','name2'],keep='last',inplace=True)
按照index索引去重
df.index.duplicated(keep='last')
df.info查询各列的信息
df.info() # res class 'pandas.core.frame.DataFrame'> Int64Index: 10 entries, 19 to 14 Data columns (total 2 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Y 10 non-null int32 1 Z 10 non-null int32 dtypes: int32(2) memory usage: 160.0 bytes
df.isnull判断是否是空值
df.isnull().any() # 筛选出缺失值的列 df.isna().any() # 筛选出缺失值的列
df.empty判断是否有空值
df.empty
5.2 缺失值填充
ffill 空值取前面的值
df.ffill()
bfill 空值取后面的值
df.bfill()
fillna 指定值填充
df.fillna(1) df.fillna({'A': 0, 'B': 1, 'C': 2, 'D': 3}) # 指定列填充
interpolate 插值
dff.interpolate(method='polynomial',order=2)
删除缺失值
df.dropna(how='any')
方法 | 说明 |
---|---|
count | 非NaN值的数理 |
describe | 列计算统计汇总 |
min、max | 最小值和最大值 |
argmin、argmax | 最小值和最大值索引(int) |
idxmin、idxmax | 最小值和最大值索引 |
quantile | 分位数([0,1],0.25下四分为) |
sum | 总和 |
mean | 均值 |
median | 0.5分位数,中位数 |
mad | 根据均值计算绝对离差 |
var | 方差 |
std | 标准差 |
df.describe()
重采样就是基于时间数据由一个频率转换到另一个频率的方法,分为降采样和升采样。
降采样:高频率===>低频率,如频率日变为月,需要指定统计函数如sum
df.resample("M").mean()
升采样:低频率===>高频率,如频率月变为日,需要进行缺失值填充
df.resample("D").asfreq().fillna(1)
到此这篇关于Pandas中时间序列处理的文章就介绍到这了,更多相关Pandas时间序列处理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!