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