Pandas 中的数据重采样问题
Trouble resampling data in Pandas
我正在尝试使用 Pandas 重新采样天气数据。原始数据大约以 5 分钟为间隔。最后,我想导出单独的 excel 文件,其中数据以 5 分钟、15 分钟和 1 小时的间隔重新采样。
我已成功将 'Time' 列设置为日期时间索引,但是当我尝试重新采样时,我不断得到 "DataError: No numeric types to aggregate"
我也尝试过使用转换器导入原始 excel 文件={'TemperatureF':int...etc
#Open Excel File With Original Timestamps
xlsx = pd.ExcelFile('IDLWeaterData_OriginalTime.xlsx')
df = pd.read_excel(xlsx)
print ('File read successfully')
# Set 'Time' Column as dataframe index
df.set_index(pd.DatetimeIndex(pd.to_datetime(df.Time)), inplace=True)
df.drop(['Time'],axis=1)
#Resample to 5 minute intervals
clean5 = df.resample('5min').mean()
如果能深入了解导致此问题的原因,那就太好了!谢谢!
这是数据示例:
TemperatureF DewpointF PressureIn Humidity HourlyPrecipIn dailyrainin SolarRadiationWatts/m^2
2016-01-01 00:04:00 31.9 22.2 30.51 67 0.00 0.00 0
2016-01-01 00:10:00 32.2 22.5 30.52 67 0.00 0.00 0
2016-01-01 00:16:00 32.5 23.1 30.51 68 0.00 0.00 0
这就是您的数据所发生的情况。
修复它:
>>> df[df.Time.notnull()].set_index('Time').astype(float).resample('5min')
TemperatureF DewpointF PressureIn Humidity HourlyPrecipIn
dailyrainin SolarRadiationWatts/m^2
Time
2016-01-01 00:00:00 31.9 22.20 30.51 67 0 0 0
2016-01-01 00:05:00 NaN NaN NaN NaN NaN NaN NaN
2016-01-01 00:10:00 32.2 22.50 30.52 67 0 0 0
2016-01-01 00:15:00 32.5 23.10 30.51 68 0 0 0
2016-01-01 00:20:00 32.5 22.80 30.52 67 0 0 0
...
我正在尝试使用 Pandas 重新采样天气数据。原始数据大约以 5 分钟为间隔。最后,我想导出单独的 excel 文件,其中数据以 5 分钟、15 分钟和 1 小时的间隔重新采样。
我已成功将 'Time' 列设置为日期时间索引,但是当我尝试重新采样时,我不断得到 "DataError: No numeric types to aggregate"
我也尝试过使用转换器导入原始 excel 文件={'TemperatureF':int...etc
#Open Excel File With Original Timestamps
xlsx = pd.ExcelFile('IDLWeaterData_OriginalTime.xlsx')
df = pd.read_excel(xlsx)
print ('File read successfully')
# Set 'Time' Column as dataframe index
df.set_index(pd.DatetimeIndex(pd.to_datetime(df.Time)), inplace=True)
df.drop(['Time'],axis=1)
#Resample to 5 minute intervals
clean5 = df.resample('5min').mean()
如果能深入了解导致此问题的原因,那就太好了!谢谢!
这是数据示例:
TemperatureF DewpointF PressureIn Humidity HourlyPrecipIn dailyrainin SolarRadiationWatts/m^2
2016-01-01 00:04:00 31.9 22.2 30.51 67 0.00 0.00 0
2016-01-01 00:10:00 32.2 22.5 30.52 67 0.00 0.00 0
2016-01-01 00:16:00 32.5 23.1 30.51 68 0.00 0.00 0
这就是您的数据所发生的情况。
修复它:
>>> df[df.Time.notnull()].set_index('Time').astype(float).resample('5min')
TemperatureF DewpointF PressureIn Humidity HourlyPrecipIn
dailyrainin SolarRadiationWatts/m^2
Time
2016-01-01 00:00:00 31.9 22.20 30.51 67 0 0 0
2016-01-01 00:05:00 NaN NaN NaN NaN NaN NaN NaN
2016-01-01 00:10:00 32.2 22.50 30.52 67 0 0 0
2016-01-01 00:15:00 32.5 23.10 30.51 68 0 0 0
2016-01-01 00:20:00 32.5 22.80 30.52 67 0 0 0
...