簡體   English   中英

Python 3.x:對循環中的數據幀字典執行分析

[英]Python 3.x: Perform analysis on dictionary of dataframes in loops

我有一個數據框(df),其列名稱為["Home", "Season", "Date", "Consumption", "Temp"] 現在,我想做的是通過“主頁”,“季節”,“溫度”和“消耗”對這些數據框執行計算。

In[56]: df['Home'].unique().tolist()
Out[56]: [1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]

In[57]: df['Season'].unique().tolist()
Out[57]: ['Spring', 'Summer', 'Autumn', 'Winter']

到目前為止,這是完成的操作:

series = {}
for i in df['Home'].unique().tolist():
    for j in df["Season"].unique().tolist():
        series[i, j] = df[(df["Home"] == i) & (df["Consumption"] >= 0) & (df["Season"] == j)]
        for key, value in series.items():
            value["Corr"] = value["Temp"].corr(value["Consumption"])

這是名為“系列”的數據幀的字典,作為循環的輸出。

循環中名為“ series”的詞典的圖像

我對上一個循環的期望是給我一個帶有新列的數據幀字典,即添加了“ Corr”,該字段將具有與“ Temp”和“ Consumption”相關的值,但是它為迭代中的最后一個宿主提供了一個數據幀即23。

要簡單地在字典的所有數據框中添加名為“ Corr”的第六列,這將是“ Temp”和“ Consumption”之間的關聯。 你能幫我以上嗎? 我不知何故在最后一個循環中缺少鍵的使用。 提前致謝!

所有這些循環都是完全不必要的! 只需致電:

df.groupby(['Home', 'Season'])['Consumption', 'Temp'].corr()

(感謝@jezrael的更正)

關於如何在pandas數據框列中找到一組值之間的相關性的答案之一有所幫助。 避免所有不必要的循環。 感謝@jezrael和@JoshFriedlander建議使用groupby方法。 贊成(y)。

在此處發布解決方案:

df = df[df["Consumption"] >= 0]

corrs = (df[["Home", "Season", "Temp"]]).groupby(
            ["Home", "Season"]).corrwith(
                    df["Consumption"]).rename(
                            columns = {"Temp" : "Corr"}).reset_index()

df = pd.merge(df, corrs, how = "left", on = ["Home", "Season"])

暫無
暫無

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

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