纯净、安全、绿色的下载网站

首页|软件分类|下载排行|最新软件|IT学院

当前位置:首页IT学院IT技术

Pandas时间序列处理 Pandas中时间序列的处理大全

FOR.GET   2021-06-07 我要评论
想了解Pandas中时间序列的处理大全的相关内容吗FOR.GET在本文为您仔细讲解Pandas时间序列处理的相关知识和一些Code实例欢迎阅读和指正我们先划重点:pandas时间序列处理,pandas时间序列分析,python,时间序列图下面大家一起来学习吧

一、时间序列数据的生成

pd.date_ranges生成时间序列

  • time格式:年月日分隔符号可以是"-""/"空格这三种格式(年月日、日月年、月日年都可以)时分秒只能用":"分隔顺序只能是时分秒
  • start:起始时间(time)
  • end:终止时间(time)
  • periods:期数(int)使用时只能出现start或者end两者不能同时出现
  • freq:频率(numY,num年numM,num月numD,num日)详细参数见下表
频率别名 描述
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

二、Pandas设置索引

创建时添加索引

pd.DataFrame(...,index=[],...)

df.set_index使用现有列设置索引

  • keys:列名多个列用[name1,name2]
  • drop:设置升序(True)、降序(False)
  • inplace:替换原变量(True)不替换(False)
df.set_index(["X"],inplace=True)
df.set_index(["X","Y"],inplace=True)

df.reset_index可以还原索引

df.reset_index("X")

三、 时间序列数据的截取

df.truncate过滤数据

  • before:过滤之前的数据(time)
  • after:过滤之后的数据(time)
  • axis:列(columns)行(index)
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

四、Pandas重复值处理

4.1 查询是否有重复值

duplicated()方法判断

# 判断dataframe数据整行是否重复
df.duplicated()
# dataframe数据某列是否重复
df.columns_name.duplicated()
# 判断dataframe数据多列数据是否重复(多列组合查)
df.duplicated(subset = ['n1','n2'])

groupby().count()

df.groupby('columns').count()>1

4.2 去除重复值

drop_duplicats参数说明:

  • 参数subset:用来指定特定的列默认所有列
  • 参数keep:first和last表示是选择最前一项还是最后一项保留默认first
  • 参数inplace:是直接在原来数据上修改还是保留一个副本默认为False
df.drop_duplicats(subset=['name1','name2'],keep='last',inplace=True)

按照index索引去重

df.index.duplicated(keep='last')


五、Pandas缺失值处理

5.1 缺失值查询

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 插值

  • df.interpolate(method=‘linear', axis=0, limit=None, inplace=False, limit_direction=‘forward', limit_area=None, downcast=None, **kwargs)
  • method参数解释
    • linear:忽略索引线性等距插值
    • time:在以天或者更高频率的数据上插入给定的时间间隔长度数据
    • index, values:使用索引的实际数值
    • pad:使用现有值填写NaN
    • nearest, zero, slinear, quadratic, cubic, spline, barycentric, polynomial:传递给scipy.interpolate.interp1d这些方法使用索引的数值polynomial和spline都要求您还指定一个顺序(int)例如 df.interpolate(method=‘polynomial', order=5)
    • kroghpiecewise_polynomialsplinepchipakima:包括类似名称的SciPy插值方法
    • from_derivatives:指 scipy.interpolate.BPoly.from_derivatives它替换了scipy 0.18中的'piecewise_polynomial'插值方法
  • axis : {0或'index'1或'columns'None}默认为None沿轴进行interpolate
  • limit: int要填充的连续NaN的最大数量必须大于0
  • inplace : bool默认为False如果可以更新现有数据
  • limit_direction : {‘forward'‘backward'‘both'}默认为'forward'如果指定了限制则将沿该方向填充连续的NaN
  • limit_area : {None, ‘inside', ‘outside'}, 默认为None如果指定了限制则连续的NaN将填充此限制
  • None:无填充限制
  • inside:仅填充有效值包围的NaN
  • outside: 仅在有效值之外填充NaN
dff.interpolate(method='polynomial',order=2)

删除缺失值

df.dropna(how='any')

六、pandas统计计算方法

方法 说明
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()

七、Pandas数据重采样

重采样就是基于时间数据由一个频率转换到另一个频率的方法分为降采样和升采样

降采样:高频率===>低频率如频率日变为月需要指定统计函数如sum

df.resample("M").mean()

升采样:低频率===>高频率如频率月变为日需要进行缺失值填充

df.resample("D").asfreq().fillna(1)

总结


相关文章

猜您喜欢

  • Flutter 底部弹窗ModelBottomSheet Flutter 底部弹窗ModelBottomSheet的使用示例

    想了解Flutter 底部弹窗ModelBottomSheet的使用示例的相关内容吗岛上码农在本文为您仔细讲解Flutter 底部弹窗ModelBottomSheet的相关知识和一些Code实例欢迎阅读和指正我们先划重点:Flutter,底部弹窗,Flutter,ModelBottomSheet下面大家一起来学习吧..
  • vs2019 MFC 画图 vs2019 MFC实现office界面的画图小项目

    想了解vs2019 MFC实现office界面的画图小项目的相关内容吗悲恋花丶无心之人在本文为您仔细讲解vs2019 MFC 画图的相关知识和一些Code实例欢迎阅读和指正我们先划重点:vs2019,MFC,画图,vs2019,MFC下面大家一起来学习吧..

网友评论

Copyright 2020 www.fresh-weather.com 【世纪下载站】 版权所有 软件发布

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 点此查看联系方式