天天看點

62.重采樣

作者:李光朱

案例導入

如下資料表,将第1列作為索引列,引擎為”openpyxl”。請按天對測量資料進行重采樣,聚合函數為求均值。添加代碼注釋。

時間 測量值
2022-03-18 00:00:00 5
2022-03-18 01:00:00 9
2022-03-18 02:00:00 6
2022-03-18 03:00:00 9
2022-03-18 04:00:00 8
2022-03-18 05:00:00 10
2022-03-18 06:00:00 4
2022-03-18 07:00:00 3
2022-03-18 08:00:00 6
2022-03-18 09:00:00 3
2022-03-18 10:00:00 1
2022-03-18 11:00:00 6
2022-03-18 12:00:00 7
2022-03-18 13:00:00 4
2022-03-18 14:00:00 1
2022-03-18 15:00:00 7
2022-03-18 16:00:00 4
2022-03-18 17:00:00 10
2022-03-18 18:00:00 8
2022-03-18 19:00:00 6
2022-03-18 20:00:00 6
2022-03-18 21:00:00 1
2022-03-18 22:00:00 5
2022-03-18 23:00:00 4
2022-03-19 00:00:00 5
2022-03-19 01:00:00 5
2022-03-19 02:00:00 4
2022-03-19 03:00:00 1
2022-03-19 04:00:00 8
2022-03-19 05:00:00 6
2022-03-19 06:00:00 1
2022-03-19 07:00:00 2
2022-03-19 08:00:00 8
2022-03-19 09:00:00 4
2022-03-19 10:00:00 9
2022-03-19 11:00:00 1
2022-03-19 12:00:00 8
2022-03-19 13:00:00 2
2022-03-19 14:00:00 5
2022-03-19 15:00:00 2
2022-03-19 16:00:00 6
2022-03-19 17:00:00 9
2022-03-19 18:00:00 6
2022-03-19 19:00:00 2
2022-03-19 20:00:00 1
2022-03-19 21:00:00 8
2022-03-19 22:00:00 1
2022-03-19 23:00:00 2
2022-03-20 00:00:00 6
2022-03-20 01:00:00 6
2022-03-20 02:00:00 10
2022-03-20 03:00:00 9
2022-03-20 04:00:00 6
2022-03-20 05:00:00 7
2022-03-20 06:00:00 8
2022-03-20 07:00:00 10
2022-03-20 08:00:00 1
2022-03-20 09:00:00 3
2022-03-20 10:00:00 1
2022-03-20 11:00:00 3
2022-03-20 12:00:00 2
2022-03-20 13:00:00 10
2022-03-20 14:00:00 9
2022-03-20 15:00:00 5
2022-03-20 16:00:00 2
2022-03-20 17:00:00 4
2022-03-20 18:00:00 10
2022-03-20 19:00:00 7
2022-03-20 20:00:00 6
2022-03-20 21:00:00 10
2022-03-20 22:00:00 4
2022-03-20 23:00:00 7
2022-03-21 00:00:00 7
2022-03-21 01:00:00 9
2022-03-21 02:00:00 8
2022-03-21 03:00:00 6
2022-03-21 04:00:00 2
2022-03-21 05:00:00 6
2022-03-21 06:00:00 10
2022-03-21 07:00:00 3
2022-03-21 08:00:00 2
2022-03-21 09:00:00 1
2022-03-21 10:00:00 7
2022-03-21 11:00:00 2
2022-03-21 12:00:00 9
2022-03-21 13:00:00 1
2022-03-21 14:00:00 7
2022-03-21 15:00:00 2
2022-03-21 16:00:00 2
2022-03-21 17:00:00 10
2022-03-21 18:00:00 5
2022-03-21 19:00:00 5
2022-03-21 20:00:00 4
2022-03-21 21:00:00 6
2022-03-21 22:00:00 4
2022-03-21 23:00:00 1
2022-03-22 00:00:00 5
2022-03-22 01:00:00 10
2022-03-22 02:00:00 6
2022-03-22 03:00:00 9

文心一言提示詞

打開百度“文心一言”,輸入提示詞:“你是pandas專家。檔案路徑為:D:/Samples/時間序列.xlsx。用pandas導入Excel檔案中第1個工作表中的資料,将第1列作為索引列,引擎為”openpyxl”。請按天對測量資料進行重采樣,聚合函數為求均值。添加代碼注釋。”

顯示結果如下:

為了按照您的要求使用pandas導入Excel檔案中的資料,将第1列作為索引列,并使用openpyxl作為引擎進行讀取,然後按照天對資料進行重采樣并計算均值,您可以參考以下代碼:

import pandas as pd

# 設定檔案路徑
file_path = 'D:/Samples/時間序列.xlsx'

# 使用pandas讀取Excel檔案,設定第1列為索引列,并使用openpyxl引擎
# 注意:openpyxl通常用于.xlsx檔案,如果是.xls檔案,則可能需要使用xlrd引擎
df = pd.read_excel(file_path, sheet_name=0, index_col=0, engine='openpyxl')

# 假設DataFrame中的時間資料是datetime類型且位于索引位置
# 如果不是datetime類型,您可能需要先轉換索引列的資料類型
# 例如:df.index = pd.to_datetime(df.index)

# 檢查資料類型
print(df.index.dtype)

# 如果資料類型不是datetime64[ns],則需要進行轉換
# if not isinstance(df.index.dtype, pd.DatetimeTZDtype):
#     df.index = pd.to_datetime(df.index)

# 按天對資料進行重采樣,并計算均值
# 假設我們要重采樣整個DataFrame,而不是某一列
resampled_df = df.resample('D').mean()

# 輸出結果
print(resampled_df)

# 如果需要儲存結果到新的Excel檔案
output_path = 'D:/Samples/時間序列_重采樣.xlsx'
resampled_df.to_excel(output_path, engine='openpyxl')           

注意:

  1. 在運作上述代碼之前,請確定openpyxl庫已經安裝。如果未安裝,可以通過pip install openpyxl進行安裝。
  2. Excel檔案的索引列(即第1列)應該包含可以轉換為datetime類型的資料,否則在重采樣時會遇到問題。
  3. 在上述代碼中,我假設整個DataFrame都需要按天重采樣。如果您的DataFrame包含多列,且隻有某些列需要重采樣,您可能需要對特定列應用resample方法。
  4. 如果原始資料中的索引列不是datetime類型,您需要使用pd.to_datetime函數将其轉換為正确的類型。在上面的代碼中,我提供了注釋掉的示例代碼,您可以根據實際情況決定是否需要使用它們。
  5. 如果您想要儲存重采樣後的資料到新的Excel檔案中,我添加了儲存檔案的代碼段。如果您不需要這一步,可以删除或注釋掉相關代碼。

Python運作結果

62.重采樣

圖1.Python運作結果

本合集使用的工具如下:

文心一言:3.5版本

Python編輯器:3.9.0

申明:以上結果皆為實際運作結果,如遇到無法運作可在評論區留言。部分資料來自網絡,如有侵權請私信告知,感謝!