Skip to content

Commit d0ad133

Browse files
committed
Clean Up Resource Guide
1 parent dbd13c3 commit d0ad133

File tree

1 file changed

+92
-77
lines changed

1 file changed

+92
-77
lines changed

README.md

Lines changed: 92 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
# Python Deliberate Practice
22

3+
First of all, don't be afraid, read [Plateau of Productivity]. More importantly, be patient, a good read from Peter Norvig, titled [Teach Yourself Programming in 10 years].
4+
35
## Motivation
46

5-
[Language war] between Python and R is one of the most frequently discussed topics among the Data Scientist, and there doesn't seem to be a consensus on which one is better. Personally, I used both R and Python, but for very different purposes. I mainly use tidyverse packages (dplyr + ggplot2) to carry out data analyses and data visualization, while using Python for web scraping, task automations, and building [basic web applications in Flask].
7+
[Language war] between Python and R is one of the most frequently discussed topics among the Data Scientists, and there doesn't seem to be a consensus on which one is better. Personally, I used both R and Python, but for very different purposes. I mainly use tidyverse packages (dplyr + ggplot2) to carry out data analyses and data visualization, while using Python for web scraping, task automations, and building [basic web applications in Flask].
68

79
By now, I have a pretty good working knowledge of the R language. There are obviously many more things that I can learn - in particular building and maintaining R packages as well as more [advanced R materials]. Yet, the appeal of Python has always been there for me for a few reasons:
810

@@ -40,19 +42,20 @@ I am a huge believer in learning by doing, and there are a lot of opportunities
4042

4143
* **Outcome**: I want to move my data stack to Python completely. This means my day-to-day data analysis work will be done in Python instead of R, make my code as pythonic as possible. Become a Contributor to Airpy / tools, and take on one bigger Python project (ML, Data Viz ...etc).
4244

43-
* **Curriculum**: I want do everything that I can to go through all the basic materials in Pandas/Matplotlib combo. Expose yourself to functional programming, OOP, testing in Python, or even make tools. Get feedbacks from Airpy team members.
45+
* **Curriculum**: I want do everything that I can to go through all the basic materials in Pandas/Matplotlib combo. Expose myself to functional programming, OOP, testing in Python, or even making command tools. Get feedbacks from Airpy team members.
4446

4547
* **Timeframe**: Efficiency parity by end of October. One contribution to Airpy by Mid November. One ongoing big project touching different stacks in Python by the end of 2016.
4648

4749
## Project Milestones
4850

4951
* **Learning Python & Best Practices**
50-
* [Plateau of Productivity]
52+
* [Build On Top of the Basics: Python Progression]
53+
* [Drastically Improve Your Understanding: Jeff Knupp: Python's Execution Mode]
54+
* [Nate Batchelder: Loop like a native]
5155
* [Columbia Data Scientist Style Guide]
5256

53-
* **[Build On Top of the Basics]: Writing Pythonic Code**
54-
55-
* Guidelines of Writing Pythonic Code
57+
* **Writing Pythonic Code**
58+
* Guidelines For Writing Pythonic Code
5659
* Function: Use *args and **kwargs to accept arbitrary arguments in function definition
5760
* Tuples: effective unpacking, use _ for placeholder, swap values without tmp variables
5861
* List/Dict/Set: list comprehension, dict comprehension. dict.get, set comprehension
@@ -63,42 +66,35 @@ I am a huge believer in learning by doing, and there are a lot of opportunities
6366
* Formatting: pep8 standards
6467
* Executable script: __name__ = __main__
6568
* Import: The right way to do imports
66-
* [Drastically Improve Your Understanding: Jeff Knupp: Python's Execution Mode]
67-
* [Nate Batchelder: Loop like a native]
69+
* [Writing Idiomatic Python - Jeff Knupp]
70+
* [Stanford CS 41: Idiomatic Python]
71+
* [Another Tutorial On How To Write Pythonic Code]
6872

6973
* **iPython Notebook**
7074

71-
* Just start writing all your practices as iPython notebooks
7275
* [BIDS: Python Bootcamp: IPython Notebook]
76+
* [Jupyter Notebook tips, tricks and shortcuts]
7377
* [iPython Notebook Keybinding]
7478

7579
* **Pandas For Data Analysis**
7680

77-
* [Brandon Rhode's Pandas From The Groud Up]: good explanation on index; (row) set_index, sort_index; (column) stack, unstack
78-
* [dplyr/pandas vignette comparison]
79-
* [Data School Pandas Tutorials]
80-
* [Data School Pandas Github iPython notebook]
81-
* [More Pandas Questions Answered]
82-
* [Other resources]
83-
* [Tom Augspurgur: Pandas]
84-
* [Coursera: Introduction to Data Science in Python]: This course is basically about Pandas
85-
8681
* Introduction to Numpy
8782
* [BIDS: Python Bootcamp: Intro to Numpy]
88-
* creating ndarray, data type of ndarray
89-
* indexing and slicing: basic, boolean, fancy
90-
* element wise (vectorized) operations
83+
* [Stanford ICME 193: Scientific Python]
9184

9285
* Introduction to Pandas
86+
* [Dplyr/pandas Vignette Comparison]
87+
* [Data School Pandas Tutorials]
88+
* [Data School Pandas Github iPython notebook]
89+
* [More Pandas Questions Answered]
90+
* [Other Resources]
91+
* [Brandon Rhode's Pandas From The Groud Up]
92+
* [Tom Augspurgur: Pandas]
9393
* [BIDS: Python Bootcamp: Scipy Pandas]
94-
* DataFrame
95-
* Reading in Data into Dataframe
96-
* Indexing, Selection, Filtering, Sorting, Ranking
97-
* Combine and merge DataFrame
98-
* Reshape and Pivot DataFrame
99-
* Group By + Data Aggregation
94+
* [Coursera: Introduction to Data Science in Python]
95+
* [Chris Albon's notes]
10096

101-
* **Matplotlib For Data Visualization**
97+
* **Data Visualization**
10298

10399
* [BIDS: Python Bootcamp: Intro to Matplotlib]: The 800 pound gorilla, everything is customizable, but very low level
104100
* [Seaborn]: Good for statistical visualization. I still find it a bit limited on the type of simple plots it can do
@@ -107,8 +103,8 @@ I am a huge believer in learning by doing, and there are a lot of opportunities
107103

108104
* **Writing Object Oriented Programming Python Code**
109105

110-
* [Objected Oriented Programming For Scientist]
111-
* [Jeff Knupp's OOP Post]
106+
* [Computational Biology: OOP For Scientist]
107+
* [Improve Your Python: Jeff Knupp: OOP]
112108
* [BIDS: Python Bootcamp: OOP]
113109
* Simeon Franklin's Twitter University Class (not available to the public)
114110

@@ -118,32 +114,39 @@ I am a huge believer in learning by doing, and there are a lot of opportunities
118114
* [BIDS: Python Bootcamp: Higher order functions]
119115
* [Improve Your Python: Jeff Knupp: Yield & Generator Explained]
120116
* [Improve Your Python: Jeff Knupp: Decorator Explained]
117+
* [Improve Your Python: Jeff Knupp: Context Manager]
121118

122-
* **[Scikit-learn Machine Learning Library]**
123-
119+
* **Machine Learning In Python**
120+
* [Scikit-learn Machine Learning Library]
124121
* [Scikit-learn metrics]
125122
* [Scikit-learn Pipeline]
126123

127-
* **Testing Codes In Python**
124+
* **Testing In Python**
128125

129-
* [Four Tools For Testing Your Python Code]
130-
* [Testing For Scientist]
131-
* [Improve Your Python: Understanding Unit Testing: Jeff Knupp]
126+
* [Computational Biology: Four Tools For Testing Your Python Code]
127+
* [Computational Biology: Testing For Scientist]
128+
* [Improve Your Python: Jeff Knupp: Understanding Unit Testing]
132129
* [BIDS: Python Bootcamp: Test Driven Development]
133130
* [Software Carpentry: Testing]
134131

135-
* Logging
136-
* https://pymotw.com/2/logging/index.html#module-logging
137-
* http://docs.python-guide.org/en/latest/writing/logging/
132+
## Next Steps / Level In 2017
138133

139-
* Writing Command Line Tool
134+
Once mastered all the above, the next natural step is to create public work that other people can use so you can democratize your useful tool to others. A great introduction to how to get started is from Tim Hopper's talk, titled [Sharing Your Side Projects].
140135

141-
* **Building Packages In Python (Next Year?)**
136+
* **Logging In Python (Next Year?)**
137+
* [Basic Python Logging - Code Session]
138+
* [Logging HOWTO]
139+
* [Become A Logging Expert In 30 Minutes]
140+
141+
* **Writing Command-Line Tool (Next Year?)**
142+
* [Click Documentation]
143+
* [Writing A Command-Line Tool In Python]
142144

143-
* [Using cookiecutter to set up a project]
144-
* [Creating a clean Pytyon development environment]
145-
* [How to generate beautiful technical documentation]
146-
* [Five steps to add the bling factor your Python package]
145+
* **Building Packages In Python (Next Year?)**
146+
* [Computational Biology: Using Cookiecutter To Set Up A Project]
147+
* [Computational Biology: Creating A Clean Pytyon Development Environment]
148+
* [Computational Biology: How To Generate Beautiful Technical Documentation]
149+
* [Computational Biology: Five Steps To Add The Bling Factor Your Python Package]
147150

148151

149152
## Reference
@@ -156,68 +159,83 @@ I am a huge believer in learning by doing, and there are a lot of opportunities
156159
* [Berkeley BIDS Python bootcamp]
157160
* [Josh Bloom's Python Computing For Data Science]
158161
* [Writing Idiomatic Python - Jeff Knupp]
159-
* [Another tutorial on how to write pythonic code]
162+
* [Another Tutorial On How To Write Pythonic Code]
160163
* [Pandas Cookbook]
161164
* [Udemy course]
162-
* [Chris Albon's notes]
165+
166+
[Teach Yourself Programming in 10 years]:http://norvig.com/21-days.html
167+
[Plateau of Productivity]:http://pbpython.com/plateau-of-productivity.html
163168

164169
[Language war]:http://www.dataschool.io/python-or-r-for-data-science/
165170
[advanced R materials]:http://adv-r.had.co.nz/
166171
[basic web applications in Flask]:https://github.com/robert8138/flask-google-calendar-api-project
167172
[data stacks]:https://lab.getbase.com/productive-data-science-python/
168173

169-
[Plateau of Productivity]:http://pbpython.com/plateau-of-productivity.html
174+
[Build On Top of the Basics: Python Progression]:http://stackoverflow.com/questions/2573135/python-progression-path-from-apprentice-to-guru
175+
[Drastically Improve Your Understanding: Jeff Knupp: Python's Execution Mode]:https://www.jeffknupp.com/blog/2013/02/14/drastically-improve-your-python-understanding-pythons-execution-model/
176+
[Nate Batchelder: Loop like a native]:https://www.youtube.com/watch?time_continue=14&v=EnSu9hHGq5o
170177
[Columbia Data Scientist Style Guide]:http://columbia-applied-data-science.github.io/pages/lowclass-python-style-guide.html
171-
[Build On Top of the Basics]:http://stackoverflow.com/questions/2573135/python-progression-path-from-apprentice-to-guru
172178

173-
[Drastically Improve Your Understanding: Jeff Knupp: Python's Execution Mode]:https://www.jeffknupp.com/blog/2013/02/14/drastically-improve-your-python-understanding-pythons-execution-model/
179+
[Writing Idiomatic Python - Jeff Knupp]:https://jeffknupp.com/writing-idiomatic-python-ebook/
180+
[Stanford CS 41: Idiomatic Python]:https://drive.google.com/file/d/0B-eHIhYpHrGDNGZCYUN6SVB1OGc/view
181+
[Another Tutorial On How To Write Pythonic Code]:http://safehammad.com/downloads/python-idioms-2014-01-16.pdf
174182

175-
[iPython Notebook Keybinding]:https://www.webucator.com/blog/wp-content/uploads/2015/07/IPython-Notebook-Shortcuts.pdf
176183
[BIDS: Python Bootcamp: IPython Notebook]:https://www.youtube.com/watch?v=HrylK8I1ALs&index=3&list=PLKW2Azk23ZtSeBcvJi0JnL7PapedOvwz9
184+
[Jupyter Notebook tips, tricks and shortcuts]:https://www.dataquest.io/blog/jupyter-notebook-tips-tricks-shortcuts/
185+
[iPython Notebook Keybinding]:https://www.webucator.com/blog/wp-content/uploads/2015/07/IPython-Notebook-Shortcuts.pdf
177186

178-
[Nate Batchelder: Loop like a native]:https://www.youtube.com/watch?time_continue=14&v=EnSu9hHGq5o
179-
[Improve Your Python: Jeff Knupp: Yield & Generator Explained]:https://jeffknupp.com/blog/2013/04/07/improve-your-python-yield-and-generators-explained/
180-
[Improve Your Python: Jeff Knupp: Decorator Explained]:https://jeffknupp.com/blog/2013/11/29/improve-your-python-decorators-explained/
181-
[Simeon Franklin's higher order function]:http://simeonfranklin.com/blog/2013/jun/17/higher-order-functions-python/
182-
[BIDS: Python Bootcamp: Higher order functions]:https://www.youtube.com/watch?v=ob797BA49ZQ
183-
184-
[Brandon Rhode's Pandas From The Groud Up]:https://www.youtube.com/watch?v=5JnMutdy6Fw
185-
[dplyr/pandas vignette comparison]:http://nbviewer.jupyter.org/gist/TomAugspurger/6e052140eaa5fdb6e8c0
187+
[BIDS: Python Bootcamp: Intro to Numpy]:https://www.youtube.com/watch?v=PDOsOcG0m-Q
188+
[Stanford ICME 193: Scientific Python]:http://stanford.edu/~arbenson/cme193.html
189+
[Dplyr/pandas Vignette Comparison]:http://nbviewer.jupyter.org/gist/TomAugspurger/6e052140eaa5fdb6e8c0
186190
[Data School Pandas Tutorials]:http://www.dataschool.io/easier-data-analysis-with-pandas/
187191
[Data School Pandas Github iPython notebook]:https://github.com/justmarkham/pandas-videos
188192
[More Pandas Questions Answered]:https://www.youtube.com/watch?v=CWRKgBtZN18&list=PL5-da3qGB5ICCsgW1MxlZ0Hq8LL5U3u9y&index=31
189-
[Other resources]:http://www.dataschool.io/best-python-pandas-resources/
193+
[Other Resources]:http://www.dataschool.io/best-python-pandas-resources/
194+
[Brandon Rhode's Pandas From The Groud Up]:https://www.youtube.com/watch?v=5JnMutdy6Fw
190195
[Tom Augspurgur: Pandas]:https://www.youtube.com/watch?v=otCriSKVV_8
191-
[BIDS: Python Bootcamp: Intro to Numpy]:https://www.youtube.com/watch?v=PDOsOcG0m-Q
192196
[BIDS: Python Bootcamp: Scipy Pandas]:https://www.youtube.com/watch?v=bgIZAeNpL1U
193197
[Coursera: Introduction to Data Science in Python]:https://www.coursera.org/learn/python-data-analysis/home/welcome
198+
[Chris Albon's notes]:http://chrisalbon.com/
194199

195200
[BIDS: Python Bootcamp: Intro to Matplotlib]:https://www.youtube.com/watch?v=j5P822TSCKs
196201
[Seaborn]:https://stanford.edu/~mwaskom/software/seaborn/
197202
[Bokeh]:http://bokeh.pydata.org/en/latest/
198203
[A Dramatic Tour through Python’s Data Visualization Landscape (including ggplot and Altair)]:https://dansaber.wordpress.com/2016/10/02/a-dramatic-tour-through-pythons-data-visualization-landscape-including-ggplot-and-altair/
199204

200-
[Objected Oriented Programming For Scientist]:http://tjelvarolsson.com/blog/object-oriented-programming-for-scientists/
201-
[Jeff Knupp's OOP Post]:https://jeffknupp.com/blog/2014/06/18/improve-your-python-python-classes-and-object-oriented-programming/
205+
[Computational Biology: OOP For Scientist]:http://tjelvarolsson.com/blog/object-oriented-programming-for-scientists/
206+
[Improve Your Python: Jeff Knupp: OOP]:https://jeffknupp.com/blog/2014/06/18/improve-your-python-python-classes-and-object-oriented-programming/
202207
[BIDS: Python Bootcamp: OOP]:https://www.youtube.com/watch?v=HQ0q6oMpOEs
203208

209+
[Simeon Franklin's higher order function]:http://simeonfranklin.com/blog/2013/jun/17/higher-order-functions-python/
210+
[BIDS: Python Bootcamp: Higher order functions]:https://www.youtube.com/watch?v=ob797BA49ZQ
211+
[Improve Your Python: Jeff Knupp: Yield & Generator Explained]:https://jeffknupp.com/blog/2013/04/07/improve-your-python-yield-and-generators-explained/
212+
[Improve Your Python: Jeff Knupp: Decorator Explained]:https://jeffknupp.com/blog/2013/11/29/improve-your-python-decorators-explained/
213+
[Improve Your Python: Jeff Knupp: Context Manager]:https://jeffknupp.com/blog/2016/03/07/improve-your-python-the-with-statement-and-context-managers/
214+
204215
[Scikit-learn Machine Learning Library]:http://www.dataschool.io/machine-learning-with-scikit-learn/
205216
[Scikit-learn metrics]:http://scikit-learn.org/stable/modules/classes.html#module-sklearn.metrics
206217
[Scikit-learn Pipeline]:http://scikit-learn.org/stable/modules/classes.html#module-sklearn.pipeline
207218

208-
[Software Carpentry: Testing]:http://katyhuff.github.io/python-testing/
219+
[Computational Biology: Four Tools For Testing Your Python Code]:http://tjelvarolsson.com/blog/four-tools-for-testing-your-python-code/
220+
[Computational Biology: Testing For Scientist]:http://tjelvarolsson.com/blog/test-driven-develpment-for-scientists/
221+
[Improve Your Python: Jeff Knupp: Understanding Unit Testing]:https://jeffknupp.com/blog/2013/12/09/improve-your-python-understanding-unit-testing/
209222
[BIDS: Python Bootcamp: Test Driven Development]:https://www.youtube.com/watch?v=hrj8Wo34nvw
210-
[Four Tools For Testing Your Python Code]:http://tjelvarolsson.com/blog/four-tools-for-testing-your-python-code/
211-
[Improve Your Python: Understanding Unit Testing: Jeff Knupp]:https://jeffknupp.com/blog/2013/12/09/improve-your-python-understanding-unit-testing/
212-
[Testing For Scientist]:http://tjelvarolsson.com/blog/test-driven-develpment-for-scientists/
213-
[Automation And Make]:http://swcarpentry.github.io/make-novice/
223+
[Software Carpentry: Testing]:http://katyhuff.github.io/python-testing/
224+
225+
[Sharing Your Side Projects]:https://www.youtube.com/watch?v=uRul8QdYvqQ
226+
227+
[Basic Python Logging - Code Session]:https://www.youtube.com/watch?v=PX_xd2YjrsU
228+
[Logging HOWTO]:https://docs.python.org/2/howto/logging.html
229+
[Become A Logging Expert In 30 Minutes]:https://www.youtube.com/watch?v=24_4WWkSmNo
230+
231+
[Click Documentation]:http://click.pocoo.org/5/quickstart/
232+
[Writing A Command-Line Tool In Python]:http://nvie.com/posts/writing-a-cli-in-python-in-under-60-seconds/
214233

215-
[Using cookiecutter to set up a project]:http://tjelvarolsson.com/blog/using-cookiecutter-a-passive-code-generator/
216-
[Creating a clean Pytyon development environment]:http://tjelvarolsson.com/blog/begginers-guide-creating-clean-python-development-environments/
217-
[How to generate beautiful technical documentation]:http://tjelvarolsson.com/blog/how-to-generate-beautiful-technical-documentation/
218-
[Five steps to add the bling factor your Python package]:http://tjelvarolsson.com/blog/five-steps-to-add-the-bling-factor-to-your-python-package/
234+
[Computational Biology: Using Cookiecutter To Set Up A Project]:http://tjelvarolsson.com/blog/using-cookiecutter-a-passive-code-generator/
235+
[Computational Biology: Creating A Clean Pytyon Development Environment]:http://tjelvarolsson.com/blog/begginers-guide-creating-clean-python-development-environments/
236+
[Computational Biology: How To Generate Beautiful Technical Documentation]:http://tjelvarolsson.com/blog/how-to-generate-beautiful-technical-documentation/
237+
[Computational Biology: Five Steps To Add The Bling Factor Your Python Package]:http://tjelvarolsson.com/blog/five-steps-to-add-the-bling-factor-to-your-python-package/
219238

220-
[Improve Your Python: Jeff Knupp: Context Manager]:https://www.jeffknupp.com/blog/2016/03/07/improve-your-python-the-with-statement-and-context-managers/
221239

222240
[Python Tutor Visualizer]:http://www.pythontutor.com/visualize.html#mode=edit
223241
[Python For Data Analysis]:http://www3.canisius.edu/~yany/python/Python4DataAnalysis.pdf
@@ -226,8 +244,5 @@ I am a huge believer in learning by doing, and there are a lot of opportunities
226244
[Harvard CS 109: Data Science]:http://cs109.github.io/2015/
227245
[Berkeley BIDS Python bootcamp]:https://bids.berkeley.edu/news/python-boot-camp-fall-2016-training-videos-available-online
228246
[Josh Bloom's Python Computing For Data Science]:https://github.com/profjsb/python-seminar
229-
[Writing Idiomatic Python - Jeff Knupp]:http://share.sm3.su/writing_idiomatic_python_3.pdf
230-
[Another tutorial on how to write pythonic code]:http://safehammad.com/downloads/python-idioms-2014-01-16.pdf
231247
[Pandas Cookbook]:http://pandas.pydata.org/pandas-docs/stable/cookbook.html
232-
[Udemy course]:https://www.udemy.com/learning-python-for-data-analysis-and-visualization/?ccManual=&couponCode=DEAL19
233-
[Chris Albon's notes]:http://chrisalbon.com/
248+
[Udemy course]:https://www.udemy.com/learning-python-for-data-analysis-and-visualization/?ccManual=&couponCode=DEAL19

0 commit comments

Comments
 (0)