10/1
https://scotch.io/tutorials/build-a-crud-web-app-with-python-and-flask-part-one
https://flask-restless.readthedocs.io/en/stable/quickstart.html
https://flask-marshmallow.readthedocs.io/en/latest/
https://flask-restful.readthedocs.io/en/latest/quickstart.html
將Restful+CRUD文件做法看一看(1.5hr)
動手將之前寫的api改成Restful+CRUD(11:30-12:30, 14:33-16:16, 4hours)
將Request.py改成丟Random資料
pandas/ 開始參與專案的小部分工作(5:00-
10/2
學習pandas(10-2)(4hours)
專案(3:30-19:20)
若有子module或者有權限的,用這樣的方式update
git submodule update filename
利用這樣的方式來安裝local的py套件(載下來的,或者別人做的)
pip install .
https://zhuanlan.zhihu.com/p/25283691
10/3
專案(10:00-18:30)
http://flask-sqlalchemy.pocoo.org/2.3/quickstart/
https://pandas.pydata.org/pandas-docs/stable/api.html#dataframe
10/4
今日目標:
1hr.架環境
1hr.學五個函數
下午:試著完成一個檔案的改寫
10:38-11:30(1hours) - 架設環境
11:30-12:30(1hours) - 練習dataframe函數
https://pandas.pydata.org/pandas-docs/stable/api.html#dataframe
https://www.programcreek.com/python/example/101386/pandas.read_sql_table
https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.html
https://stackoverflow.com/questions/20621607/module-object-has-no-attribute-dataframe
***大神開課啦~***
取得資料/遇到問題
先將Data的Type輸出出來
Python 不外乎
-
List(Array)
-
Dictionary
-
Object(或其他)
List = [a,b,c,d,e]
他是利用index 索引值來取得資料
也就是說,他其實也跟字典一樣,有著
key:value
key就是index索引值,list裡是0.1.2.3.4來代替第一個位置,第二個位置
上面的a,b,c,d,e就是值
所以取第一個值就是
<span class="hl-identifier">list</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span>
再來是字典,跟json長得
dictionary = {'key1':'value1', 'key2':'value2'}
這個的話他的key值可以是字串/中文或其他
但是list的key值是固定的數字索引
字典取值是這樣
dictionary['key1']
取子字典的話,前面篇數有提到XD
最後是Object或其他
通常會是有套件或者其他函數擷取
這種的話,以pandas舉例
df = pd.read_sql("select * from User), db.engine)
t = df['Email']
type(t)
pandas.core.series.Series
所以這個就是Series
取值方法就是要去找Pandas的函數
所以如果是這種另外回傳的資訊,那就要去知道他的資料型態,再去尋找相對應的函式來取值
****再來是遇到問題
遇到問題,先知道資料的類型是什麼,可以根據類型找網路資源來看
-
優先看函數Documentation
-
再搜尋相關的chear sheet
-
最後才是google
這邊以pandas為例
Documentation
https://pandas.pydata.org/pandas-docs/stable/api.html#dataframe
pandas python cheat sheet
最後才是去google
google 你要知道關鍵字,越精準越好,不然只是在隨便抓,會很茫然
最後記錄自己遇到的問題
https://ithelp.ithome.com.tw/articles/10194003
https://ithelp.ithome.com.tw/articles/10193421
****BUG小提醒,注意你看到的json或者字典值也許跟別人開的規格一樣
可是呢!!!,有的時候數字值看到並不表示他是真的數字,我就把被我所看到的數字迷惑XD,他具體是什麼類型不知道,但最好最後還是利用
int()
來轉成數字在輸出好些
如何取Pandas Series值
取資料庫限制10筆,根據什麼來判定,取最後十筆
最後幾筆
select * from table order by ID DESC limit 10
10/5
10:24-11:30 STUDY (1hours)
13:30-16:20(3hours)
吃飽回來後解大程式
https://pandas.pydata.org/pandas-docs/stable/indexing.html
Series | `s.loc[indexer]` |
DataFrame | `df.loc[row_indexer,column_indexer]` |
Panel | `p.loc[item_indexer,major_indexer,minor_indexer]` |
Series | `series[label]` | scalar value |
DataFrame | `frame[colname]` | `Series` corresponding to colname |
Panel | `panel[itemname]` | `DataFrame` corresponding to the itemname |
def f_read(table, limit):
df = pd.read_sql("select * from {} limit {}".format(table, limit), db.engine)
return df
def axes_basic():
df = f_read("User",50)
# TypeError: 'RangeIndex' object is not callable
# dont use ()
df = df.index
# TypeError: 'Index' object is not callable
# dont use()
df = df.columns
# Type: DataFrame >> DataFrame[Column]
# Type: Series >> series[label]
get_column = df['Name']
get_label = df[1]
def axes_type():
# show columns type
df = df.dtypes()
# get type counts
df = df.get_dtype_counts()
# get data from type
# df.select_dtypes([include, exclude])
df = df.select_dtypes(object,int)
def axes_value():
# TypeError: 'numpy.ndarray' object is not callable
# return array (don't use () )
df = df.values
# this is show array of data
df = df.get_values()
***大神開課啦~***
關於寫程式的習慣跟技巧
如何讓大家知道現在程式的完成狀態
-
利用註解方式 » Git Push
-
於GitHub » Wiki中改
-
於GitHub 發Issue
利用註解方式 (Python)
# TODO 這個你可以寫還沒完成,但準備解決,需要做什麼來完成它/或者不知道怎麼寫,還沒碰觸的註解
# FIXME 這個則是寫你遇到什麼問題,你已經處理過了還是遇到問題/會留下暫時的解法,使用這個註解
完成的就不用寫註解
***大神們建議***
多看Youtuber 工程師高手的頻道來改善自己寫Code的習慣
被大神念自己的If, Else觀念不清啦!!!
***寫程式的超級注意事項***
若還是新手,建議一行一行DEBUG,使用像是Ipython與Jupyter之類的即時Feedback編輯器來一行一行檢查你寫的程式碼
尤其要注意的是: 你以為這行程式碼應該是在做甚麼,但實際上寫給電腦,電腦做的動作卻不是這樣!!
你看到的,跟你的認知,也許跟電腦輸出的資訊差異很大
所以被大神念說,找時間把最基礎的東西都補一補吧QQ,還有搞懂IF, Else的用法
基本上IF,Else就是在判定True, False !
IF []:
return TRUE
Else:
return FALSE
>> FALSE
IF ['a']:
return TRUE
Else:
return FALSE
>> TRUE
所以說這本身就是判定true, false
最好不要犯用集合來做比較,以及這種根本不知所云的比較QQ
所以老話一句就是
新手要練習的是
-
不要以為這行程式碼會是你想像的,直接一行一行驗證比較好
-
基礎的函數跟基礎的觀念跟用法要會用,不要亂用,然後不知道在寫甚麼,但以為知道在寫甚麼,或者亂用跑的出就好,是不對的
-
了解每一行程式碼,不要亂抄,會者抄別人程式,然後都不懂在幹嘛
-
當牽扯到資料讀取使用時,每一次吐出來的資料要利用Type()去查看資料類型