Re: [問題] 縮減程式碼以及PANDAS問題

作者: poototo (poototo)   2021-04-22 20:28:24
1.只看了前面一點點,其他大大都有實用建言
感覺對資料的處理邏輯本身,原PO比較需要多點轉換思考
簡單或複雜往往只在一念之間
不然只把pandas用得傷人又傷已
可以這麼期許自己:
當你pandas通了,你會忘了for的存在
而如果覺得pandas辦不到你想要用for做的事,先懷疑自己的處理邏輯
2.底下是一點語法小建議
# 條件既然拆成多行了,bit運算也提出來寫,方便增刪修條件
# 運算不要在最後的[]裡,除非只有一個條件
# 欄名儘量用 . 調用,減少視覺干擾
# 變數名稱,建議 df_xxx,se_xxx,明白把類型寫出來,這是針對原PO的建議
where = True
where &= NDVI_LST.col_0 > 0.0
where &= NDVI_LST.col_0 < 0.1
edge_1 = NDVI_LST[where]
※ 引述《KSJ (阿真)》之銘言:
: 接著幫回 也說明一下我的想法
: 不管怎樣 直接貼code給大家看我還是覺得不是很好
: 不是有沒有誠意 是這樣看code真的很容易誤看
: 沒有色碼 縮排又痛苦…
: 我先貼的原po的code
: ( 參考https://www.ptt.cc/bbs/C_and_CPP/M.1460282360.A.ADC.html )
: https://ideone.com/3wBqbL
: 雖然不行run完 但至少好讀
: 怕以後連結不見的話,ptt貼code可以放最後,有需要再去看
: 然後縮8格...有點逼我吉娃娃…看開點
: 個人建議4格就好
: ※ 引述《TuCH (謬客)》之銘言:
: : 先稍微整理一下
: : col_0 = col[0]
: : col_1 = col[1]
: 的確, col 0 跟 1 如果常用到 寫成變數是好事
: 一來維護簡潔 二來執行有可能加速 三來字數可能變少
: : upperb=NDVI_LST[col_0]>0.0
: : lowerb=NDVI_LST[col_0]<0.1
: : edge_1=NDVI_LST[(upperb & lowerb)]
: 的確 整個code沒用到 建議刪除
: 通用會這樣寫只有可能為了可讀性或延用到別人function的變數名調整而已
: 這段理解後似乎也沒有必要
: 你開了一個空list 然後把pd的LST轉np的array
: 再一個一個值塞回去…
: 你可以簡單的tolist() (如果你需要python的list的話)
: 或是list_values = LST.values (怕不小心改到值的話用copy)
: 最後只找max的話 pandas也有max可以用(還會幫忙去掉nan值)
: 上面提到塞list的動作也可以省略
: : # 這段看不懂在幹嘛
: : max_lst_values = edge_1[col_1].max()
: : min_lst_values = edge_1[col_1].min()
: 需要回圈跑的東西通通for loop就可以了
: 12個月、upperb、lowerb什麼的 沒有什麼是不能for loop的
: 下面的整段code我研究了一下 給你一些建議:
: 1. for i in range(10)
: a. i已經是整數 int(i)顯得多餘
: b. 整段code的i for loop 只對NDVI_bound取index得到值
: 何不直接for loop NDVI_bound[:-1] 反正i+1也只是+0.1
: 2. 你的 lst_values=[] 應該是放錯位置了
: 從append方式很奇怪之外,這個變數也沒有被用到(for i j loop)
: for k loop有用到 但內圈 i j loop一直洗掉 lst_values
: 想必有問題
: 個人通靈建議lst_values=[]至少提升至for k loop下
: 你是說 indent 吧? 縮排
: 如上通靈 放至for k loop 裡
: 用幾行算錢的話 這樣也不錯啊...
: 不過感覺這不是主要問題 你forloop沒事 存值邏輯要調整而已
: 如果上面通靈有誤 那你必需開更多的欄位來儲存結果
: : 這邊完全沒有對K做操作 請檢查一下code跟邏輯
: 原po的k是用來幫df塞月份的值的
: 應該是lst_values=[]寫在for loop i造成的誤會
: : binary search
: 給個方向 找27.33 >= D1的最後一個true對應到的就是下限25.8
: 找27.33 < D1的第一個true對應到的就是上限29.8
: 配合index可以找到0.2~0.3之類的東西
: 建議寫成function比較不影響程式整體的邏輯思考
: p.s. 真的不外包給我嗎 省時省力

Links booklink

Contact Us: admin [ a t ] ucptt.com