[英]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"])
這是名為“系列”的數據幀的字典,作為循環的輸出。
我對上一個循環的期望是給我一個帶有新列的數據幀字典,即添加了“ 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.