自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

使用Pandas進行時間重采樣,充分挖掘數(shù)據價值

大數(shù)據 數(shù)據分析
在Pandas中進行數(shù)據重采樣,有助于可視化連續(xù)或離散時間數(shù)據中的趨勢和規(guī)律,進一步挖掘數(shù)據價值,突出顯示不同的組成部分,包括趨勢、季節(jié)性和不規(guī)則問題(可能是數(shù)據中的噪音)。

一、簡介

時間序列數(shù)據蘊含著很大價值,通過重采樣技術可以提升原始數(shù)據的表現(xiàn)形式。無論你是數(shù)據科學家、分析師,還是對數(shù)據挖掘感興趣,都可以從本文學習方法和工具,提升數(shù)據可視化技巧。

二、為什么需要進行數(shù)據重采樣?

在進行時間數(shù)據可視化時,數(shù)據重采樣是至關重要且非常有用的。它支持控制數(shù)據的粒度,以挖掘數(shù)據價值,并創(chuàng)建具有吸引力的圖片。用戶可以根據需求,對時間序列數(shù)據的頻率進行上采樣或下采樣。

圖片圖片

三、數(shù)據重采樣的方法

數(shù)據重采樣主要有以下兩個目的:

  • 調整粒度:通過數(shù)據采集可以修改收數(shù)據點的時間間隔,只獲取關鍵信息,剔除噪音數(shù)據,提升數(shù)據可視化效果。
  • 對齊:重采樣還有助于將來自不同時間間隔的多個數(shù)據源進行對齊,確保在創(chuàng)建可視化或進行分析時保持一致性。

例如,對于某家公司的每日股價數(shù)據,該數(shù)據來自股票交易所,對其進行可視化,挖掘長期趨勢,并剔除噪音數(shù)據點。為此,可以通過取每月的平均收盤價,將每日數(shù)據重采樣為每月頻率,從而降低用于可視化的數(shù)據量,提升數(shù)據可視化的效果。

import pandas as pd

# 每日股票價格數(shù)據樣本
data = {
'Date': pd.date_range(start='2023-01-01', periods=365, freq='D'),
'StockPrice': [100 + i + 10 * (i % 7) for i in range(365)]
}
df = pd.DataFrame(data)

# 按月頻率重采樣
monthly_data = df.resample('M', notallow='Date').mean()
print(monthly_data.head())

這個例子通過將每日數(shù)據重采樣為每月數(shù)據,并計算出每月的平均收盤價,從而得到了更平滑、噪聲更小的股價數(shù)據,從而更容易識別長期趨勢和規(guī)律,以便做出決策。

3.1、選擇正確的重采樣頻率

處理時間序列數(shù)據時,重采樣的主要參數(shù)是頻率,必須正確選擇頻率,才能獲得具有洞察力和實用的可視化效果。不過,粒度和清晰度之間存在著權衡,粒度表示數(shù)據的詳細程度,而清晰度則表示數(shù)據規(guī)律的展現(xiàn)程度。

例如,對于一年內每分鐘記錄的溫度數(shù)據,對年度溫度趨勢進行可視化,但使用分鐘級數(shù)據將導致圖形過于密集和混亂。另外,如果將數(shù)據聚合為年度平均值,可能會丟失有價值的信息。

# 采集分鐘級溫度數(shù)據
data = {
    'Timestamp': pd.date_range(start='2023-01-01', periods=525600, freq='T'),
    'Temperature': [20 + 10 * (i % 1440) / 1440 for i in range(525600)]
}

df = pd.DataFrame(data)

# 按不同頻率重采樣
daily_avg = df.resample('D', notallow='Timestamp').mean()
monthly_avg = df.resample('M', notallow='Timestamp').mean()
yearly_avg = df.resample('Y', notallow='Timestamp').mean()

print(daily_avg.head())
print(monthly_avg.head())
print(yearly_avg.head())

此示例將分鐘級溫度數(shù)據重采樣為日平均值、月平均值和年平均值。根據分析或可視化目標,可以選擇最適合的詳頻率。每日平均值揭示了每日的溫度規(guī)律,而每年平均值展示了年度趨勢。

通過選擇最佳的重采樣頻率,可以在數(shù)據細節(jié)和可視化清晰度之間取得平衡,進而傳達數(shù)據中的規(guī)律和價值。

3.2、聚合方法

在處理時間數(shù)據時,了解各種聚合方法非常重要。通過這些方法,可以有效地總結和分析數(shù)據,揭示時間相關信息的不同方面。標準的聚合方法包括計算總和與平均值,或應用自定義函數(shù)。

圖片圖片

例如,對于包含一年內零售店每日銷售數(shù)據的數(shù)據集,對其進行年度收入趨勢分析。為此,你可以使用聚合方法計算每月和每年的總銷售額。

# 每日銷售數(shù)據樣本
data = {
'Date': pd.date_range(start='2023-01-01', periods=365, freq='D'),
'Sales': [1000 + i * 10 + 5 * (i % 30) for i in range(365)]
}
df = pd.DataFrame(data)

# 使用聚合方法計算每月和每年的銷售額
monthly_totals = df.resample('M', notallow='Date').sum()
yearly_totals = df.resample('Y', notallow='Date').sum()

print(monthly_totals.head())
print(yearly_totals.head())

此示例使用sum()聚合方法將每日銷售數(shù)據重采樣為每月和每年的總銷售額。通過該方法,可以分析在不同粒度級別上的銷售趨勢。月度總計揭示了季節(jié)變化,而年度總計則展示了年度業(yè)績。

根據具體的分析需求,還可以使用其他聚合方法,如計算平均值和中位數(shù),或根據數(shù)據集分布情況應用自定義函數(shù),這對問題的解決很有意義。通過這些方法,可以用符合自己的分析或可視化目標的方式對數(shù)據進行總結,從時間數(shù)據中提取更多價值。

3.3、處理缺失數(shù)據

處理缺失數(shù)據是時間序列中的關鍵點,可確保數(shù)據中存在間隙時,可視化和分析仍能保持準確性和信息量。

例如,對于歷史溫度數(shù)據集,但由于設備故障或數(shù)據收集錯誤,某些日期的溫度讀數(shù)缺失。你必須處理這些缺失值,以創(chuàng)建有意義的可視化并保持數(shù)據的完整性。

# 帶有缺失值的溫度數(shù)據樣本
data = {
    'Date': pd.date_range(start='2023-01-01', periods=365, freq='D'),
    'Temperature': [25 + np.random.randn() * 5 if np.random.rand() > 0.2 else np.nan for _ in range(365)]
}
df = pd.DataFrame(data)

# 前向填充缺失值(用前一天的溫度填充)
df['Temperature'].fillna(method='ffill', inplace=True)

# 可視化溫度數(shù)據
import matplotlib.pyplot as plt
plt.figure(figsize=(12, 6))
plt.plot(df['Date'], df['Temperature'], label='Temperature', color='blue')
plt.title('Daily Temperature Over Time')
plt.xlabel('Date')
plt.ylabel('Temperature (°C)')
plt.grid(True)
plt.show()

輸出圖形如下所示:

圖片圖片

這個示例模擬了缺失的溫度值(約占數(shù)據的20%),然后使用前向填充(ffill)方法填充了缺失的部分,即缺失值被前一天的溫度替代。

處理缺失數(shù)據可確保可視化效果準確地反映時間序列中的基本趨勢和規(guī)律,防止空缺數(shù)據影響整體數(shù)據。根據數(shù)據的性質和具體問題,可以采用插值或向后填充等其他策略。

3.4、可視化趨勢和規(guī)律

在Pandas中進行數(shù)據重采樣,有助于可視化連續(xù)或離散時間數(shù)據中的趨勢和規(guī)律,進一步挖掘數(shù)據價值,突出顯示不同的組成部分,包括趨勢、季節(jié)性和不規(guī)則問題(可能是數(shù)據中的噪音)。

例如,對于包含過去幾年每日網站流量數(shù)據的數(shù)據集,目標是可視化展示隨后幾年的整體流量趨勢,識別任何季節(jié)性規(guī)律,并發(fā)現(xiàn)流量中不規(guī)則的峰值或谷值。

# 網站每日流量數(shù)據樣本
data = {
'Date': pd.date_range(start='2019-01-01', periods=1095, freq='D'),
'Visitors': [500 + 10 * ((i % 365) - 180) + 50 * (i % 30) for i in range(1095)]
}
df = pd.DataFrame(data)

# 創(chuàng)建折線圖,展示趨勢
plt.figure(figsize=(12, 6))
plt.plot(df['Date'], df['Visitors'], label='Daily Visitors', color='blue')
plt.title('Website Traffic Over Time')
plt.xlabel('Date')
plt.ylabel('Visitors')
plt.grid(True)

# 添加季節(jié)性分解圖
from statsmodels.tsa.seasonal import seasonal_decompose
result = seasonal_decompose(df['Visitors'], model='additive', freq=365)
result.plot()
plt.show()

輸出如下所示:

圖片圖片

該示例創(chuàng)建了折線圖,展示了隨時間變化的每日網站流量趨勢。該圖描述了數(shù)據集中的整體增長和不規(guī)則規(guī)律。此外,為了將數(shù)據分解為不同的組成部分,本文使用了statsmodels庫的季節(jié)性分解技術,包括趨勢、季節(jié)性和殘差等組成部分。

通過這種方式,可以展示網站流量的趨勢、季節(jié)性和異常情況,從時間數(shù)據挖掘價值,進而將其轉化為數(shù)據驅動的決策。

四、總結

【下載代碼】:https://colab.research.google.com/drive/19oM7NMdzRgQrEDfRsGhMavSvcHx79VDK#scrollTo=nHg3oSjPfS-Y

  1. 重采樣是一種強大的方法,可用于轉換和匯總時間序列數(shù)據,以挖掘數(shù)據價值。
  2. 選擇事宜的重采樣頻率對于平衡粒度和清晰度至關重要。
  3. 聚合方法(如求和、平均值和自定義函數(shù)等)有助于揭示時間數(shù)據的不同方面。
  4. 可視化方法有助于識別趨勢、季節(jié)性和不規(guī)則問題,從而清晰地展示數(shù)據中的規(guī)律。
責任編輯:武曉燕 來源: Python學研大本營
相關推薦

2023-09-20 11:42:52

2024-10-23 17:10:49

2024-11-04 15:34:01

2016-11-07 19:57:33

大數(shù)據共享數(shù)據

2024-05-16 20:54:29

生成式AI

2024-07-18 13:13:58

2025-01-14 13:32:47

2015-12-02 11:06:47

2017-10-31 11:55:46

sklearn數(shù)據挖掘自動化

2022-08-02 09:32:47

pandas移動計算

2009-03-16 10:29:45

數(shù)據挖掘過濾器Access

2023-03-16 07:27:30

CnosDB數(shù)據庫

2023-03-27 07:34:28

XGBoostInluxDB時間序列

2017-01-09 09:20:07

Ubuntu NTP同步

2022-06-24 12:23:49

數(shù)據戰(zhàn)略Cloudera云遷移

2024-05-08 14:05:03

時間序列數(shù)據

2023-08-15 16:20:42

Pandas數(shù)據分析

2013-05-21 09:47:55

2023-10-04 00:13:00

SQL數(shù)據庫

2021-04-07 10:02:00

XGBoostPython代碼
點贊
收藏

51CTO技術棧公眾號