最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一文詳解Pandas時(shí)間數(shù)據(jù)處理技巧

 更新時(shí)間:2025年06月18日 08:30:20   作者:傻啦嘿喲  
在數(shù)據(jù)分析中,時(shí)間是最重要的維度之一,處理股票K線、用戶行為日志、傳感器監(jiān)測數(shù)據(jù)時(shí),掌握Pandas時(shí)間數(shù)據(jù)處理技巧能讓你效率提升10倍,本文通過真實(shí)案例拆解,帶你從時(shí)間對象操作到高性能時(shí)間計(jì)算全面進(jìn)階,需要的朋友可以參考下

一、時(shí)間對象的"七十二變"

當(dāng)拿到"2025-06-17 15:30:00"這樣的字符串,如何讓它變成可計(jì)算的時(shí)間對象?Pandas提供了三種核心轉(zhuǎn)換方式:

import pandas as pd
 
# 方式1:自動(dòng)推斷格式
ts1 = pd.to_datetime('20250617', format='%Y%m%d')
 
# 方式2:處理不標(biāo)準(zhǔn)格式
ts2 = pd.to_datetime('17.06.2025', dayfirst=True)
 
# 方式3:批量轉(zhuǎn)換
dates = ['2025-Q1', '2025-Q2']
ts3 = pd.to_datetime(dates, format='%Y-Q%q')

這些轉(zhuǎn)換背后藏著兩個(gè)關(guān)鍵概念:Timestamp(時(shí)間戳)和Period(時(shí)間段)。Timestamp適合精確到秒的分析,而Period更適合按周/月/季度統(tǒng)計(jì)。例如,計(jì)算月度銷售額時(shí),用Period自動(dòng)對齊財(cái)務(wù)月份:

sales = pd.Series([100, 200], 
                 index=pd.PeriodIndex(['2025-06', '2025-07'], freq='M'))

二、時(shí)間序列的"基因改造"

生成時(shí)間序列是日常高頻操作,但你真的會用date_range嗎?這三個(gè)參數(shù)組合能解決90%的場景:

# 生成工作日序列(跳過周末)
workdays = pd.date_range('2025-06-01', '2025-06-30', 
                        freq='B',  # Business day
                        closed='left')  # 不包含結(jié)束點(diǎn)
 
# 生成自定義頻率(每3小時(shí)20分鐘)
custom_freq = pd.date_range('2025-06-17', periods=5,
                           freq='3H20T')
 
# 生成逆向時(shí)間序列
reverse_dates = pd.date_range('2025-06-30', '2025-06-01',
                             freq='-1D')

當(dāng)原始數(shù)據(jù)存在時(shí)間漏洞時(shí),asfreq方法可以智能填充:

df = pd.DataFrame({'value': [1,3,5]},
                 index=pd.to_datetime(['2025-06-01',
                                     '2025-06-03',
                                     '2025-06-06']))
# 填充缺失日期,前值填充
filled_df = df.asfreq('D', method='ffill')

三、重采樣的"變形金剛"

重采樣是時(shí)間序列的縮放魔法,掌握這兩個(gè)維度變換就能應(yīng)對多數(shù)場景:

場景1:降采樣(分鐘線轉(zhuǎn)日線)

minute_data = pd.DataFrame(np.random.randn(10000),
                          index=pd.date_range('2025-06-01',
                                            periods=10000,
                                            freq='T'))
# 計(jì)算每日開盤價(jià)、最高價(jià)、收盤價(jià)
daily_ohlc = minute_data.resample('D').agg([
    'first',  # 開盤價(jià)
    'max',    # 最高價(jià)
    'last'    # 收盤價(jià)
])

場景2:升采樣(日線轉(zhuǎn)小時(shí)線)

daily_data = pd.Series([100, 105],
                     index=pd.to_datetime(['2025-06-01',
                                         '2025-06-03']))
# 線性插值填充缺失小時(shí)
hourly_data = daily_data.resample('H').interpolate(method='linear')

四、窗口函數(shù)的"十八般武藝"

滾動(dòng)計(jì)算是趨勢分析的核心武器,這三個(gè)窗口類型必須掌握:

1. 固定窗口(Rolling Window)

# 計(jì)算5日移動(dòng)平均
df['MA5'] = df['close'].rolling(5).mean()
 
# 指數(shù)加權(quán)移動(dòng)平均(適合近期數(shù)據(jù))
df['EWMA'] = df['close'].ewm(span=5).mean()

2. 擴(kuò)展窗口(Expanding Window)

# 計(jì)算累計(jì)最大值
df['cum_max'] = df['high'].expanding().max()

3. 跳躍窗口(Skipping Window)

# 每3天計(jì)算一次標(biāo)準(zhǔn)差(非連續(xù))
df['3d_std'] = df['volume'].rolling(3, min_periods=1,
                                  closed='both').std()

五、時(shí)區(qū)處理的"時(shí)空穿越"

處理跨國數(shù)據(jù)時(shí),時(shí)區(qū)轉(zhuǎn)換是必經(jīng)之路。這三個(gè)操作能解決大部分問題:

# 創(chuàng)建帶時(shí)區(qū)的時(shí)間
ny_time = pd.Timestamp('2025-06-17 10:00', tz='America/New_York')
 
# 時(shí)區(qū)轉(zhuǎn)換(自動(dòng)處理夏令時(shí))
london_time = ny_time.tz_convert('Europe/London')
 
# 批量轉(zhuǎn)換時(shí)間序列
df['local_time'] = df['utc_time'].dt.tz_localze('UTC').dt.tz_convert('Asia/Shanghai')

當(dāng)遇到AmbiguousTimeError時(shí),用ambiguous='infer'參數(shù)自動(dòng)判斷夏令時(shí)轉(zhuǎn)換點(diǎn)。

六、性能優(yōu)化的"獨(dú)門秘籍"

處理百萬級時(shí)間數(shù)據(jù)時(shí),這些技巧能讓你告別卡頓:

1. 禁用自動(dòng)對齊

# 關(guān)閉索引對齊,速度提升3-5倍
df1.add(df2, axis=1, fill_value=0)  # 錯(cuò)誤方式
df1.values + df2.values  # 正確方式(需確保索引一致)

2. 使用Category類型

# 將時(shí)間特征轉(zhuǎn)為分類類型
df['hour'] = df.index.hour.astype('category')

3. 向量化日期提取

# 錯(cuò)誤方式:逐行計(jì)算
df['day'] = df.index.dayofweek
 
# 正確方式:向量化操作
df['day'] = df.index.dayofweek.values

七、實(shí)戰(zhàn)案例:股票日線轉(zhuǎn)周線

假設(shè)有茅臺股票的日線數(shù)據(jù),要生成周線數(shù)據(jù)并計(jì)算經(jīng)典指標(biāo):

# 讀取數(shù)據(jù)(假設(shè)已有日線數(shù)據(jù))
df = pd.read_csv('maotai.csv', index_col='date', parse_dates=True)
 
# 生成周線數(shù)據(jù)(每周最后一個(gè)交易日)
weekly_df = df.resample('W-FRI').agg({
    'open': 'first',
    'high': 'max',
    'low': 'min',
    'close': 'last',
    'volume': 'sum'
})
 
# 計(jì)算周線MACD
weekly_df['EMA12'] = weekly_df['close'].ewm(span=12).mean()
weekly_df['EMA26'] = weekly_df['close'].ewm(span=26).mean()
weekly_df['MACD'] = weekly_df['EMA12'] - weekly_df['EMA26']

通過這個(gè)案例可以看到,從數(shù)據(jù)讀取到指標(biāo)計(jì)算,整個(gè)流程完全基于Pandas時(shí)間函數(shù)實(shí)現(xiàn),無需任何循環(huán)操作。

八、常見陷阱與解決方案

陷阱1:閏年處理

# 錯(cuò)誤:假設(shè)每年都是365天
days_in_year = (pd.Timestamp('2024-12-31') - 
              pd.Timestamp('2024-01-01')).days  # 正確結(jié)果應(yīng)為366

陷阱2:時(shí)間戳比較

# 錯(cuò)誤:直接比較字符串時(shí)間
df[df['time'] > '2025-06-17 15:00:00']
 
# 正確:先轉(zhuǎn)為時(shí)間對象
df[df['time'] > pd.Timestamp('2025-06-17 15:00:00')]

陷阱3:跨天計(jì)算

# 錯(cuò)誤:計(jì)算23:00到次日01:00的時(shí)間差
(pd.Timestamp('2025-06-18 01:00') - 
 pd.Timestamp('2025-06-17 23:00')).total_seconds()/3600  # 正確結(jié)果應(yīng)為2小時(shí)

九、未來時(shí)間處理趨勢

隨著Pandas 2.0的發(fā)布,時(shí)間處理正在經(jīng)歷這些變革:

  • Arrow后端集成:通過pd.set_option('future.use_arrow_dt', True)啟用,時(shí)間計(jì)算速度提升30%
  • 時(shí)區(qū)感知索引:新版本默認(rèn)保留時(shí)區(qū)信息,避免意外丟失
  • 周期類型增強(qiáng):Period對象支持更靈活的頻率轉(zhuǎn)換
  • 掌握這些新特性,能讓你在處理海量時(shí)間數(shù)據(jù)時(shí)如虎添翼。

結(jié)語

時(shí)間數(shù)據(jù)處理就像修理精密鐘表,需要理解每個(gè)齒輪的運(yùn)作原理。從本文的基礎(chǔ)操作到進(jìn)階技巧,核心在于建立"時(shí)間索引優(yōu)先"的思維:所有計(jì)算都應(yīng)基于時(shí)間對象而非字符串,所有聚合都應(yīng)利用向量化操作而非循環(huán)。記住這個(gè)原則,你就能在時(shí)間序列分析中游刃有余。

以上就是一文詳解Pandas時(shí)間數(shù)據(jù)處理技巧的詳細(xì)內(nèi)容,更多關(guān)于Pandas時(shí)間數(shù)據(jù)處理的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Pandas技巧分享之讀取多個(gè)文件

    Pandas技巧分享之讀取多個(gè)文件

    日常分析數(shù)據(jù)時(shí),只有單一數(shù)據(jù)文件的情況其實(shí)很少見,更多的情況是,從同一個(gè)數(shù)據(jù)來源定期或不定期的采集了很多數(shù)據(jù)文件,那么如何讀取多個(gè)文件呢,下面就和大家簡單講講
    2023-07-07
  • python計(jì)算機(jī)視覺opencv矩形輪廓頂點(diǎn)位置確定

    python計(jì)算機(jī)視覺opencv矩形輪廓頂點(diǎn)位置確定

    這篇文章主要為大家介紹了python計(jì)算機(jī)視覺opencv矩形輪廓頂點(diǎn)位置確定,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • python打包exe文件并隱藏執(zhí)行CMD命令窗口問題

    python打包exe文件并隱藏執(zhí)行CMD命令窗口問題

    這篇文章主要介紹了python打包exe文件并隱藏執(zhí)行CMD命令窗口問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Python處理HTTP認(rèn)證的常見方法

    Python處理HTTP認(rèn)證的常見方法

    在Python中,HTTP認(rèn)證通常指的是客戶端在向服務(wù)器發(fā)送請求時(shí),需要提供某種形式的認(rèn)證信息,處理HTTP認(rèn)證通常涉及到使用requests庫,requests庫提供了簡單的方式來處理需要認(rèn)證的HTTP請求,本文給大家介紹了Python處理HTTP認(rèn)證的常見方法
    2025-03-03
  • 在Pytorch中計(jì)算卷積方法的區(qū)別詳解(conv2d的區(qū)別)

    在Pytorch中計(jì)算卷積方法的區(qū)別詳解(conv2d的區(qū)別)

    今天小編就為大家分享一篇在Pytorch中計(jì)算卷積方法的區(qū)別詳解(conv2d的區(qū)別),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • python plotly畫柱狀圖代碼實(shí)例

    python plotly畫柱狀圖代碼實(shí)例

    這篇文章主要介紹了python plotly畫柱狀圖代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • 安裝不同版本的tensorflow與models方法實(shí)現(xiàn)

    安裝不同版本的tensorflow與models方法實(shí)現(xiàn)

    這篇文章主要介紹了安裝不同版本的tensorflow與models方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • 利用Python實(shí)現(xiàn)繪制論文中的曲線圖

    利用Python實(shí)現(xiàn)繪制論文中的曲線圖

    這篇文章主要為大家詳細(xì)介紹了如何利用Python語言實(shí)現(xiàn)繪制論文中需要的曲線圖,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-03-03
  • 關(guān)于Python使用logging庫進(jìn)行有效日志管理的方法詳解

    關(guān)于Python使用logging庫進(jìn)行有效日志管理的方法詳解

    在開發(fā)大型軟件或處理復(fù)雜問題時(shí),我們經(jīng)常需要一種方法來記錄和跟蹤程序的運(yùn)行狀態(tài),Python 提供了一個(gè)名為 logging 的標(biāo)準(zhǔn)庫,可以幫助我們更好地完成這項(xiàng)任務(wù),在這篇文章中,我們將介紹如何使用 Python 的 logging 庫進(jìn)行日志記錄
    2023-06-06
  • pandas歸一化與反歸一化操作實(shí)現(xiàn)

    pandas歸一化與反歸一化操作實(shí)現(xiàn)

    本文主要介紹了pandas歸一化與反歸一化操作實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01

最新評論

汕头市| 霞浦县| 南丹县| 武胜县| 巴南区| 隆回县| 曲水县| 武强县| 蒙阴县| 阜阳市| 昌乐县| 平舆县| 佛山市| 清远市| 通许县| 额敏县| 维西| 七台河市| 克拉玛依市| 塘沽区| 安平县| 虹口区| 柳河县| 秦皇岛市| 开化县| 二连浩特市| 博兴县| 来凤县| 隆尧县| 瑞丽市| 镇远县| 邹城市| 耿马| 安龙县| 鄂托克旗| 新平| 历史| 奉新县| 安多县| 家居| 宁国市|