在R中,對資料進行混合。我一般會通過管道一次性完成大部分(如果不是全部)基本的混合,例如:
在R語言中,資料的混合是通過管道進行的。
df_mung = df %>%。
filter(X > 1) %>%
select(X, Y, Z) %>%
group_by(X, Y) %>%
summarise(`sum` = sum(Z))
這意味著,在這個例子中,最后我有兩個DataFrames:
。
df(我的原始資料框架)df_mung(我的合并的資料框架))
如果我用Python來做這件事,我會做這樣的事情:
df_filter = df[df['X']>1]
df_select = df_filter[['X'/span>, 'Y'/span>, 'Z'/span>] ]
df_sum = df_select.groupby(['X','Y']).sum()
這樣一來,我就有了四個DataFrames(是我在R中的兩倍):
。df(我的原始資料框架)df_filter(我的過濾的資料框架)df_select(我的選定列資料框架)df_sum(我的求和資料框架))
現在我可以把我的DataFrame復制到它自己身上,就像這樣:
我可以把我的DataFrame復制到它自己身上。
df = df['X'/span>]>1
df = df[['X'/span>, 'Y'/span>, 'Z'/span>]]
df = df.groupby(['X','Y']).sum()
但是考慮到這個帖子中對SettingWithCopyWarning的高票數回應。如何處理 Pandas 中的 SettingWithCopyWarning ,這顯然是我不應該做的事情。
所以我的問題是,在Python中進行資料混合時,最佳做法是什么?是在我每次做某事時創建一個新的變數,還是將 DataFrame 復制到自己身上,還是其他什么?
我擔心當我在Python中進行分析時,我可能會有幾十個甚至幾百個DataFrame變數,這樣一來,a)看起來很亂,b)對接手我的代碼的人來說很困惑。
多謝
uj5u.com熱心網友回復:
我只需在一個函式中包住munging。
- 中間變數不在任何全域范圍內(不亂) 。
- 命名函式只做一件可以理解的事情(不會讓閱讀你的代碼的人感到困惑)
- 命名函式做一件可以理解的事情。
- 蒙太奇函式是可以單獨測驗的(好的做法) 。
def munge_df(df)。
df_filter = df['X'] > 1。
df_select = df_filter[['X'/span>, 'Y'/span>, 'Z'/span>] ] ]
df_sum = df_select.groupby(['X','Y']).sum()
return df_sum
# ...
df_munged = munge_df(df) # 或者如果你不需要原始資料,只需要`df = ...`。
uj5u.com熱心網友回復:
你可以跳過SettingWithCopyWarning使用loc并在一個運算式中進行行和列的過濾。你也可以做方法鏈,這似乎是你在R例子中所做的。
df.loc[df['X'].gt(1), ['X', 'Y', 'Z']].groupby(['X', 'Y']) .sum()
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/324012.html
標籤:
