Python|熊猫 dataframe.asfreq()
Python是一种用于进行数据分析的出色语言,主要是因为以数据为中心的Python包的奇妙生态系统。 Pandas就是其中之一,它使导入和分析数据变得更加容易。
Pandas dataframe.asfreq()
函数用于将 TimeSeries 转换为指定的频率。此函数可选地提供填充方法来填充/回填缺失值。它以指定的频率返回符合新索引的原始数据。如果需要进行汇总等操作来以新频率表示数据,则重新采样更合适。
Syntax : DataFrame.asfreq(freq, method=None, how=None, normalize=False, fill_value=None)
Parameters :
freq : DateOffset object, or string
method : Method to use for filling holes in reindexed Series
how : For PeriodIndex only, see PeriodIndex.asfreq
normalize : Whether to reset output index to midnight
fill_value : Value to use for missing values, applied during upsampling (note this does not fill NaNs that already were present).
Returns : converted : type of caller
示例 #1:将时间序列数据从每周频率解采样到每日频率
# importing pandas as pd
import pandas as pd
# Creating a date_time form index
index_values = (pd.date_range('1/1/2000',
periods=3,freq='W'))
# Creating a series using 'index_values'
# Notice, one of the series value is nan value
series = (pd.Series([0.0,None,2.0],
index=index_values))
# Creating dataframe using the series
df=pd.DataFrame({"Col_1":series})
# Print the Dataframe
df
现在将这个每周采样数据解采样为每日采样数据。默认情况下,新创建的 bin 将具有 nan 值。因此,使用fill_value参数用提供的值填充所有新创建的 bin。
# unsampling and providing a fill value = 9.0
df.asfreq(freq ='D', fill_value = 9.0)
输出 :
注意:这不会填充采样前已经存在的 NaN。
示例 #2:将一分钟时间戳数据解采样到 30 秒的 bin 中。首先创建一个具有 5 个一分钟时间戳的系列。
# importing pandas as pd
import pandas as pd
# Creating a date_time form index
index_values = (pd.date_range('1/1/2000',
periods=5,freq='T'))
# Creating a series using 'index_values'
# Notice, one of the series value is nan value
series = (pd.Series([0.0,1.0,None,3.0,4.0],
index=index_values))
# Creating dataframe using the series
df=pd.DataFrame({"Col_1":series})
# Print the Dataframe
df
现在取消采样到 30 秒的 bin 并提供 100.0 的 fill_value
# unsampling and providing a fill value of 100.0
df.asfreq(freq ='30S', fill_value = 100.0)
输出 :
注意:将不会填充非采样前存在的 Nan 值