簡體   English   中英

合並和 plot 多個 pandas 數據幀

[英]Merge and plot multiple pandas dataframes

希望幫助完成以下任務:

概括

  1. 重新索引數據框
  2. 合並多個數據框
  3. Plot 基於時間列的新數據幀

更多細節

我有一個如下所示的數據集(raw_data):

id  timestamp       key             value
1   1576086899000   temperature     70
2   1576086899000   sleep           8
3   1576086899000   heartrate       65
4   1576086876000   temperature     72
5   1576086876000   sleep           7.5
6   1576086876000   heartrate       62
7   1576086866000   temperature     74
8   1576086866000   sleep           7.8
9   1576086866000   heartrate       64

我使用以下方法對其進行了旋轉:

df = rawdata.pivot(index='timestamp', columns='key', values='value')

這使索引成為時間戳值,並且每列都有一個鍵名及其對應的值。

因為每一行並不總是包含每個鍵/值對的值,所以我為特定鍵創建了一個新數據框,並刪除了任何 NaN 值:

sleep_df = pd.DataFrame({'date': df.index, 'value': df.sleep}).dropna()

這仍然將索引保留為列時間戳,但創建了一個名為 time 的重復列。 然后我將時間列格式化為年-月-日值:

sleep_df['date]' = pd.to_datetime(sleep_df['date'], unit='ms').map(lambda x: x.strftime('%Y-%m-%d'))

因此,我生成的每個表的數據集如下所示:

timestamp       date         sleep            
1576086899000   2020-04-05      8
1576086876000   2020-04-04     7.5
1576086866000   2020-04-03     7.8

我的最終目標是:

  1. 將這些表中的每一個和 plot 與時間列合並。 由於這個原因,我認為索引應該保留timestamp ,因為它可以合並記錄數據的時間戳相同的值。
  2. 在未來的分析中,我很想知道是否可以根據日期而不是時間戳合並數據,因為某些數據可能沒有在確切時間記錄。 我是否必須改為創建索引:“日期”? 我假設我必須確保每個單獨的日期只有一個條目,否則合並表可能會變得很時髦。
  3. 我想出了這個數據的繪圖。 我將表的索引設為date字段,並將所有值轉換為int類型,並根據日期繪制就好了。 有一個更好的方法嗎?

提前感謝您的幫助,SO 作為一個學習工具非常棒。

如果您的目標是 plot 每個鍵的時間序列,我建議不要旋轉,分離數據幀並重新合並它們。 我建議直接使用初始 DataFrame ,因為您可以繪制 plot ,其中每行代表一個特定的鍵,例如seaborn

import pandas as pd
import seaborn as sns
df = pd.DataFrame({"timestamp": pd.date_range("2020-04-20 00:00:00", periods=8, freq="D"),
                   "key": ["temperature", "sleep", "heartrate", "temperature", "sleep", "heartrate", "temperature", "sleep"],
                   "value": [70, 8, 65, 72, 7.5, 62, 74, 7.8]})
df["date"] = pd.to_datetime(df["timestamp"])
g = sns.relplot(x="date", y="value", hue="key", kind="line", data=df)
g.fig.autofmt_xdate()

沒有必要按date索引。 希望能幫助到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM