Blog Cover Image

Inspire you to have New thinking, Walk out your unique Road.

後端小菜鳥學習記錄(11)

Posted on Nov 3, 2018

這週終於把任務全刷完一遍了

再一個感覺一知半解的狀態下

懵懵懂懂的把東西做完了 XD

按照慣例,又來到了周五 PO 學習筆記的時候

剛練習的前幾天,東西爆炸多,常常就是學到甚麼貼甚麼

也因為打文章的時間沒有很多(都說菜鳥了狂學習,狂吸收知識,能趕緊把東西貼來部落格就沒甚麼時間了 XD)

下班跟假日都攤在那了,還是偶而我們的前端大神會唸一下刷 LeetCode QQ

現在都希望運用周五晚上的時間來把這一週的筆記編輯一下,才不會看起來雜亂無章


沒想到學習筆記來到了第 10 篇

回顧我第一天第二天上工,還是個不會接 MySQL 的菜鳥

現在已經學到了下 Where 條件 IN list 抓資料

雖然看起來寫部落格會花很多時間,但有的時候我還是堅持寫部落格

多的時候記錄學習的筆記,但其時有的時候回來翻我也不知道要翻哪篇

也算是我學習後端的紀錄


想Print List內的字串,但不想要有 [ ] 外包括號




names = ["Sam", "Peter", "James", "Julian", "Ann"]
print(', '.join(names))
print(*names, sep=", ")

處裡Pandas DataFrame 的timedelta64格式







# 忘記是後五行還是取五筆, 將 timedelta 轉成秒數
df[:5]['duration']/np.timedelta64(1, 's')





# 忘記是後五行還是取五筆, 將 timedelta 轉成小時
df[:5]['duration']/np.timedelta64(1, 'h')

<span class="n">將已存在的B, C欄位刪掉
</span><span class="n">df</span><span class="o">.</span><span class="n">drop</span><span class="p">(</span><span class="n">columns</span><span class="o">=</span><span class="p">[</span><span class="s1">'B'</span><span class="p">,</span> <span class="s1">'C'</span><span class="p">])</span>









<span class="n">DataFrame取到小數點後第二位
df</span><span class="o">.</span><span class="n">round</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>

10/30

這一天把卡了很久的 TimeDelta, DateTime 格式處裡做了一個突破

簡直是把之前遺留的毒瘤給一次解決

趕工的關係,就亂貼網站,現在也就

# 我在網路上找到一個轉換的函式
# 使用方式:
# strfdelta(tdelta, fmt)
# strfdelta(delta_obj, "{days} days {hours}:{minutes}:{seconds}")
# strfdelta(delta_obj, "{hours}:{minutes}:{seconds}")

def strfdelta(tdelta, fmt):
    d = {"days": tdelta.days}
    d["hours"], rem = divmod(tdelta.seconds, 3600)
    d["minutes"], d["seconds"] = divmod(rem, 60)
    return fmt.format(**d)








# DataTime的寫入格式(?)
import datetime
start = datetime.datetime(2009,2,10,14,00)
end   = datetime.datetime(2009,2,10,16,00)
delta = end-start
# 將日期轉字串
print(str(delta))





# 這個是我用lambda 將每個DateTime 轉成%d%m%Y
# DataFrame 是用apply函式, 然後用一行lambda 將每個值重新改一遍
df['A'].apply(lambda x: x.strftime('%d%m%Y'))





# 這個功能是我要將現有的時間, 每個時間 + 幾個小時 (Second, Minute沒試過, 留給大家嘗試)
from datetime import datetime, timedelta

nine_hours_from_now = datetime.now() + timedelta(hours=9)

# DataFrame的累加函式, 處裡工廠商品需要累加時很好用唷!
df.cumsum()













# 將重複值除去, 在取得一系列不重複的值, 若取商品清單應該是蠻好用的, 我自己是運用在取不同地點
df.drop_duplicates(subset=['UserData'])







# 好像是數這個DataFrame 總共有幾個Row
df.shape[0]
















# 咱的SQL大魔王出現
# 我有點忘記, 不過我是希望<code><span class="kwd">
</span></code>SELECT DISTINCT Category, MAX(CreationDate) FROM MonitoringJob GROUP BY Category ORDER BY MAX(CreationDate) DESC, Category








# 將Time 型別 轉成秒 除 3600 = Hour
time_d.total_seconds() /3600




# 將Time 轉成 秒數
object.dt.total_seconds()

這個還沒真正寫過, 這個是任務上遇到需要交叉比對 所找的方法

但我已經先用別的方法解掉任務了, 先將連結留著

https://blog.csdn.net/hustqb/article/details/78086394

# 恩要注意,其實每個程式都要注意保留字要特別處裡, 我算是忘記SQL也有保留字
# 如果報錯, 留意一下是否為保留字, 須加上 `Table` 來處理特殊字, 這邊是 Delete
INSERT INTO `User`(`Name`,`Type`,`Email`, `Delete`, `UpdateTime`)
VALUES
("***", 1, "***",0, "2018-10-30 10:36:45");

#其時也不用每個都加, 只要保留字 Delete 那個欄位特別加就行




# 平常可以不用加
INSERT INTO User(Name,Type,Email, Remove, UpdateTime)
VALUES
("***", 1, "***",0, "2018-10-30 10:36:45");





# 可以用 IN 方法來篩選一系列的字
select * from Employee where Person IN ('余OO','鄭OO');











# 特別是If Else 時特別好用!

bool(dct) == (not True)













# 可以用apply 方式來顯示或對DF做動作
DataFrame.apply
Perform any type of operations.