[英]Merge and plot multiple pandas dataframes
希望幫助完成以下任務:
概括
更多細節
我有一個如下所示的數據集(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
我的最終目標是:
timestamp
,因為它可以合並記錄數據的時間戳相同的值。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.