├── .DS_Store
├── .idea
├── PyDataRoad.iml
├── misc.xml
├── modules.xml
├── vcs.xml
└── workspace.xml
├── 01code
├── .DS_Store
└── plotly
│ └── 202203-plotly-yaxis-text-layout.ipynb
├── 01data
├── date.csv
└── test.txt
├── 02photo
├── QR-Python数据之道.jpg
├── foot.jpg
├── qr-geizan.png
├── wechat-pay.png
├── wechat-qr.jpg
└── xingqiu1.jpg
├── README.md
├── comprehensive
├── .DS_Store
├── Bokeh-data-visualization
│ └── README.md
├── Plotly-Express-Introducing
│ ├── .ipynb_checkpoints
│ │ └── Plotly-Express-Introducing-checkpoint.ipynb
│ ├── Plotly-Express-Introducing.ipynb
│ └── README.md
├── Seaborn-data-visualization
│ └── Data-Visualization-with-Seaborn-cn.ipynb
├── Tushare
│ └── README.md
├── cheat-sheet
│ └── Jupyter_Notebook_Cheat_Sheet.pdf
├── dataset
│ └── README.md
├── matplotlib-pie
│ └── matplotlib-pie.ipynb
├── numpy_basic
│ ├── README.md
│ └── numpy_notes_01.ipynb
├── pandas_df_sortby_custom_list
│ ├── Pandas_sorting_by_a_custom_list.ipynb
│ └── README.md
└── wechat-msg-send
│ └── wechat-message-send.py
└── projects
├── .DS_Store
├── Stock-prediction-with-Python
├── Lesson 3 Basic Python for Data Analytics (Stocks Prediction).ipynb
└── README.md
├── football-world-cup
├── README.md
├── football-world-cup-predict-2nd-post.ipynb
├── football-world-cup-top3-predict.ipynb
└── results.csv
├── gaokaozw
├── 1952-1965.txt
├── 1977-1986.txt
├── 1987-1996.txt
├── 1997-2006.txt
├── 2007-2016.txt
├── README.md
├── colors.png
├── gaokao.py
├── gaokao.txt
├── gaokao_orange_cloud.jpg
├── orange.jpg
├── stopwords_user
├── 中文停用词库.txt
├── 哈工大停用词表.txt
└── 四川大学机器智能实验室停用词库.txt
├── matplotlib-top-50-visualizations
├── README.md
└── Top-50-Matplotlib-Visualizations-cn.ipynb
├── ufo
├── README.md
└── UFO_analysis.ipynb
└── zhilian_analysis
├── README.md
├── colors.png
├── word_cloud.py
└── zhilian_data_analysis.ipynb
/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liyangbit/PyDataLab/78ceb8d03ce93490f1613d65b9505fb609b34bd8/.DS_Store
--------------------------------------------------------------------------------
/.idea/PyDataRoad.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/workspace.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 | 1563372914630
163 |
164 |
165 | 1563372914630
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 |
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
229 |
230 |
231 |
232 |
233 |
234 |
235 |
236 |
237 |
238 |
239 |
240 |
241 |
242 |
243 |
244 |
245 |
246 |
247 |
248 |
--------------------------------------------------------------------------------
/01code/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liyangbit/PyDataLab/78ceb8d03ce93490f1613d65b9505fb609b34bd8/01code/.DS_Store
--------------------------------------------------------------------------------
/01data/date.csv:
--------------------------------------------------------------------------------
1 | 2013-10-24,3
2 | 2013-10-25,4
3 | 2013-10-29,2
4 | 2013-10-30,1
5 | 2013-11-04,1
6 | 2013-11-06,3
7 | 2013-11-08,1
8 | 2013-11-12,5
9 | 2013-11-14,2
10 | 2013-11-25,1
11 | 2013-11-29,1
12 | 2013-12-06,3
13 | 2013-12-11,6
14 | 2013-12-16,1
15 | 2013-12-17,5
16 | 2013-12-18,3
17 | 2013-12-20,1
18 | 2013-12-24,2
19 | 2013-12-26,2
20 | 2013-12-27,2
21 | 2013-12-30,2
22 | 2014-01-06,1
23 | 2014-01-15,15
24 | 2014-02-13,1
25 | 2014-02-19,2
26 | 2014-02-21,1
27 | 2014-03-05,4
28 | 2014-03-11,7
29 | 2014-03-12,6
30 | 2014-03-13,1
31 | 2014-03-14,9
32 | 2014-03-17,2
33 | 2014-03-18,4
34 | 2014-03-19,1
35 | 2014-03-21,6
36 | 2014-03-24,3
37 | 2014-03-25,3
38 | 2014-03-26,1
39 | 2014-03-27,1
40 | 2014-03-31,5
41 | 2014-04-02,3
42 | 2014-04-03,2
43 | 2014-04-04,9
44 | 2014-04-09,5
45 | 2014-04-14,2
46 | 2014-04-17,2
47 | 2014-04-18,7
48 | 2014-04-22,4
49 | 2014-04-25,2
50 | 2014-04-29,4
51 | 2014-04-30,3
52 | 2014-05-07,1
53 | 2014-05-09,3
54 | 2014-05-13,1
55 | 2014-05-16,9
56 | 2014-05-20,1
57 | 2014-05-21,1
58 | 2014-05-30,2
59 | 2014-06-06,5
60 | 2014-06-09,2
61 | 2014-06-10,2
62 | 2014-06-11,1
63 | 2014-06-12,1
64 | 2014-06-13,1
65 | 2014-06-16,1
66 | 2014-06-17,4
67 | 2014-06-18,1
68 | 2014-06-20,3
69 | 2014-06-24,2
70 | 2014-06-25,1
71 | 2014-06-27,3
72 | 2014-06-30,8
73 | 2014-07-03,6
74 | 2014-07-09,2
75 | 2014-07-10,2
76 | 2014-07-11,3
77 | 2014-07-16,4
78 | 2014-07-17,3
79 | 2014-07-18,8
80 | 2014-07-21,5
81 | 2014-07-23,5
82 | 2014-07-24,4
83 | 2014-07-25,3
84 | 2014-07-28,1
85 | 2014-07-29,1
86 | 2014-08-01,3
87 | 2014-08-08,13
88 | 2014-08-14,5
89 | 2014-08-15,5
90 | 2014-08-18,3
91 | 2014-08-20,1
92 | 2014-08-21,6
93 | 2014-08-22,3
94 | 2014-08-25,7
95 | 2014-08-26,4
96 | 2014-08-29,2
97 | 2014-09-01,1
98 | 2014-09-02,3
99 | 2014-09-04,5
100 | 2014-09-05,3
101 | 2014-09-12,2
102 | 2014-09-16,5
103 | 2014-09-18,2
104 | 2014-09-19,4
105 | 2014-09-22,3
106 | 2014-09-28,2
107 | 2014-09-30,7
108 | 2014-10-09,1
109 | 2014-10-10,2
110 | 2014-10-15,9
111 | 2014-10-20,5
112 | 2014-10-21,4
113 | 2014-10-22,10
114 | 2014-10-23,5
115 | 2014-10-24,3
116 | 2014-10-27,8
117 | 2014-10-30,4
118 | 2014-10-31,6
119 | 2014-11-03,2
120 | 2014-11-06,8
121 | 2014-11-14,14
122 | 2014-11-15,3
123 | 2014-11-18,5
124 | 2014-11-21,4
125 | 2014-11-25,3
126 | 2014-11-28,1
127 | 2014-12-02,4
128 | 2014-12-04,4
129 | 2014-12-05,2
130 | 2014-12-06,1
131 | 2014-12-09,7
132 | 2014-12-10,2
133 | 2014-12-12,3
134 | 2014-12-15,1
135 | 2014-12-19,9
136 | 2014-12-29,8
137 | 2014-12-30,6
138 | 2014-12-31,4
139 | 2015-01-07,2
140 | 2015-01-12,1
141 | 2015-01-15,1
142 | 2015-01-19,2
143 | 2015-01-23,4
144 | 2015-01-26,1
145 | 2015-01-28,7
146 | 2015-01-30,12
147 | 2015-02-04,10
148 | 2015-02-10,1
149 | 2015-02-11,3
150 | 2015-02-16,19
151 | 2015-02-28,1
152 | 2015-03-10,5
153 | 2015-03-12,3
154 | 2015-03-19,9
155 | 2015-03-20,3
156 | 2015-03-23,1
157 | 2015-03-26,3
158 | 2015-04-03,9
159 | 2015-04-08,3
160 | 2015-04-09,1
161 | 2015-04-16,1
162 | 2015-04-17,2
163 | 2015-04-22,4
164 | 2015-04-23,1
165 | 2015-04-27,12
166 | 2015-04-30,26
167 | 2015-05-06,2
168 | 2015-05-07,4
169 | 2015-05-11,13
170 | 2015-05-14,8
171 | 2015-05-15,6
172 | 2015-05-18,6
173 | 2015-05-19,2
174 | 2015-05-21,2
175 | 2015-05-25,11
176 | 2015-05-27,2
177 | 2015-05-28,3
178 | 2015-05-29,7
179 | 2015-06-02,5
180 | 2015-06-04,5
181 | 2015-06-05,5
182 | 2015-06-08,2
183 | 2015-06-10,8
184 | 2015-06-11,4
185 | 2015-06-15,14
186 | 2015-06-18,4
187 | 2015-06-19,17
188 | 2015-06-25,7
189 | 2015-06-29,8
190 | 2015-06-30,8
191 | 2015-07-02,9
192 | 2015-07-03,4
193 | 2015-07-06,3
194 | 2015-07-09,9
195 | 2015-07-13,4
196 | 2015-07-14,1
197 | 2015-07-15,4
198 | 2015-07-16,13
199 | 2015-07-20,13
200 | 2015-07-22,22
201 | 2015-07-24,18
202 | 2015-07-28,2
203 | 2015-07-30,21
204 | 2015-07-31,4
205 | 2015-08-06,12
206 | 2015-08-07,18
207 | 2015-08-10,2
208 | 2015-08-12,6
209 | 2015-08-14,1
210 | 2015-08-20,15
211 | 2015-08-21,4
212 | 2015-08-26,5
213 | 2015-08-28,2
214 | 2015-09-01,11
215 | 2015-09-02,6
216 | 2015-09-06,3
217 | 2015-09-07,5
218 | 2015-09-09,6
219 | 2015-09-10,2
220 | 2015-09-11,4
221 | 2015-09-15,6
222 | 2015-09-17,3
223 | 2015-09-21,1
224 | 2015-09-22,1
225 | 2015-09-23,5
226 | 2015-09-25,4
227 | 2015-09-29,14
228 | 2015-09-30,5
229 | 2015-10-08,1
230 | 2015-10-09,1
231 | 2015-10-12,4
232 | 2015-10-13,5
233 | 2015-10-16,4
234 | 2015-10-23,11
235 | 2015-10-26,6
236 | 2015-10-27,2
237 | 2015-10-28,7
238 | 2015-11-02,20
239 | 2015-11-03,1
240 | 2015-11-05,8
241 | 2015-11-06,1
242 | 2015-11-08,3
243 | 2015-11-09,6
244 | 2015-11-10,2
245 | 2015-11-13,7
246 | 2015-11-18,10
247 | 2015-11-20,6
248 | 2015-11-25,6
249 | 2015-11-26,1
250 | 2015-12-02,8
251 | 2015-12-04,4
252 | 2015-12-07,1
253 | 2015-12-08,2
254 | 2015-12-09,2
255 | 2015-12-10,2
256 | 2015-12-11,5
257 | 2015-12-18,13
258 | 2015-12-21,7
259 | 2015-12-23,8
260 | 2015-12-28,7
261 | 2015-12-29,1
262 | 2015-12-30,1
263 | 2015-12-31,2
264 | 2016-01-04,4
265 | 2016-01-07,6
266 | 2016-01-09,6
267 | 2016-01-14,4
268 | 2016-01-16,6
269 | 2016-01-20,6
270 | 2016-01-22,1
271 | 2016-01-25,8
272 | 2016-01-29,23
273 | 2016-02-04,4
274 | 2016-02-05,6
275 | 2016-02-16,2
276 | 2016-03-01,7
277 | 2016-03-04,8
278 | 2016-03-07,2
279 | 2016-03-09,6
280 | 2016-03-10,2
281 | 2016-03-11,3
282 | 2016-03-15,10
283 | 2016-03-18,7
284 | 2016-03-23,11
285 | 2016-03-26,4
286 | 2016-03-28,1
287 | 2016-03-29,3
288 | 2016-03-30,6
289 | 2016-03-31,5
290 | 2016-04-01,8
291 | 2016-04-05,4
292 | 2016-04-06,8
293 | 2016-04-07,2
294 | 2016-04-09,44
295 | 2016-04-11,13
296 | 2016-04-12,37
297 | 2016-04-14,39
298 | 2016-04-15,17
299 | 2016-04-20,102
300 | 2016-04-21,2
301 | 2016-04-22,26
302 | 2016-04-23,33
303 | 2016-04-28,106
304 | 2016-04-29,107
305 | 2016-05-03,9
306 | 2016-05-04,4
307 | 2016-05-05,5
308 | 2016-05-06,10
309 | 2016-05-07,12
310 | 2016-05-10,6
311 | 2016-05-11,1
312 | 2016-05-12,4
313 | 2016-05-13,31
314 | 2016-05-16,11
315 | 2016-05-17,28
316 | 2016-05-20,9
317 | 2016-05-23,7
318 | 2016-05-27,26
319 | 2016-05-30,9
320 | 2016-05-31,4
321 | 2016-06-03,1
322 | 2016-06-04,17
323 | 2016-06-06,2
324 | 2016-06-08,3
325 | 2016-06-12,11
326 | 2016-06-13,4
327 | 2016-06-14,9
328 | 2016-06-15,1
329 | 2016-06-16,5
330 | 2016-06-17,3
331 | 2016-06-20,2
332 | 2016-06-21,7
333 | 2016-06-22,1
334 | 2016-06-23,6
335 | 2016-06-24,8
336 | 2016-06-27,2
337 | 2016-06-28,3
338 | 2016-06-30,5
339 | 2016-07-02,4
340 | 2016-07-06,12
341 | 2016-07-07,6
342 | 2016-07-11,16
343 | 2016-07-13,13
344 | 2016-07-14,1
345 | 2016-07-16,2
346 | 2016-07-19,7
347 | 2016-07-20,3
348 | 2016-07-22,7
349 | 2016-07-26,8
350 | 2016-07-27,4
351 | 2016-07-29,4
352 | 2016-07-30,2
353 | 2016-08-03,6
354 | 2016-08-06,2
355 | 2016-08-08,16
356 | 2016-08-09,4
357 | 2016-08-10,1
358 | 2016-08-11,2
359 | 2016-08-17,7
360 | 2016-08-18,4
361 | 2016-08-19,2
362 | 2016-08-20,14
363 | 2016-08-23,2
364 | 2016-08-26,2
365 | 2016-08-29,2
366 | 2016-08-30,5
367 | 2016-09-01,36
368 | 2016-09-05,13
369 | 2016-09-06,3
370 | 2016-09-07,4
371 | 2016-09-10,6
372 | 2016-09-14,9
373 | 2016-09-15,6
374 | 2016-09-27,39
375 | 2016-09-28,1
376 | 2016-09-30,17
377 | 2016-10-09,4
378 | 2016-10-13,4
379 | 2016-10-17,19
380 | 2016-10-18,3
381 | 2016-10-19,3
382 | 2016-10-20,1
383 | 2016-10-21,4
384 | 2016-10-24,6
385 | 2016-10-25,1
386 | 2016-10-27,10
387 | 2016-10-28,1
388 | 2016-10-31,4
389 | 2016-11-01,6
390 | 2016-11-02,7
391 | 2016-11-04,2
392 | 2016-11-07,9
393 | 2016-11-08,1
394 | 2016-11-09,5
395 | 2016-11-10,1
396 | 2016-11-14,11
397 | 2016-11-15,10
398 | 2016-11-16,2
399 | 2016-11-18,16
400 | 2016-11-21,10
401 | 2016-11-23,6
402 | 2016-11-24,1
403 | 2016-11-25,2
404 | 2016-11-28,7
405 | 2016-11-30,10
406 | 2016-12-02,12
407 | 2016-12-05,1
408 | 2016-12-07,14
409 | 2016-12-08,5
410 | 2016-12-09,7
411 | 2016-12-14,3
412 | 2016-12-20,28
413 | 2016-12-22,2
414 | 2016-12-30,53
415 | 2016-12-31,4
416 | 2017-01-03,7
417 | 2017-01-07,15
418 | 2017-01-14,21
419 | 2017-01-17,2
420 | 2017-01-23,10
421 | 2017-01-25,10
422 | 2017-01-26,7
423 | 2017-02-07,8
424 | 2017-02-14,6
425 | 2017-02-22,6
426 |
--------------------------------------------------------------------------------
/01data/test.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liyangbit/PyDataLab/78ceb8d03ce93490f1613d65b9505fb609b34bd8/01data/test.txt
--------------------------------------------------------------------------------
/02photo/QR-Python数据之道.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liyangbit/PyDataLab/78ceb8d03ce93490f1613d65b9505fb609b34bd8/02photo/QR-Python数据之道.jpg
--------------------------------------------------------------------------------
/02photo/foot.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liyangbit/PyDataLab/78ceb8d03ce93490f1613d65b9505fb609b34bd8/02photo/foot.jpg
--------------------------------------------------------------------------------
/02photo/qr-geizan.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liyangbit/PyDataLab/78ceb8d03ce93490f1613d65b9505fb609b34bd8/02photo/qr-geizan.png
--------------------------------------------------------------------------------
/02photo/wechat-pay.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liyangbit/PyDataLab/78ceb8d03ce93490f1613d65b9505fb609b34bd8/02photo/wechat-pay.png
--------------------------------------------------------------------------------
/02photo/wechat-qr.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liyangbit/PyDataLab/78ceb8d03ce93490f1613d65b9505fb609b34bd8/02photo/wechat-qr.jpg
--------------------------------------------------------------------------------
/02photo/xingqiu1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liyangbit/PyDataLab/78ceb8d03ce93490f1613d65b9505fb609b34bd8/02photo/xingqiu1.jpg
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | - [个人官网](#个人官网)
2 | - [源代码](#源代码)
3 | - [延伸阅读](#延伸阅读)
4 | ## 个人官网
5 |
6 | 欢迎访问个人官网: [http://liyangbit.com](http://liyangbit.com)
7 |
8 | ## 源代码
9 |
10 | 欢迎关注个人微信公众号“**Python数据之道**”(公号ID:**PyDataLab** )。
11 |
12 |
13 |

14 |
15 |
16 | 微信公众号上目前已发布的部分文章链接,以及对应的代码或数据文件如下:
17 |
18 | |文章发布日期|文章名称及链接|代码 / 数据文件|
19 | |-------|---------|---------|
20 | |20220323|[答读者问:奇奇怪怪的Python问题,Poltly中y轴文字位置控制](http://liyangbit.com)|[请点击链接](https://github.com/liyangbit/PyDataRoad/tree/master/01code/plotly)|
21 | |20210131|[财经数据神器 Tushare,股票数据全搞定](https://mp.weixin.qq.com/s/c1ukemeK12flCgA-lo69fA)|[请点击链接](https://github.com/liyangbit/PyDataRoad/tree/master/comprehensive/Tushare)|
22 | |20190619|[用Python快速分析、可视化和预测股票价格](https://mp.weixin.qq.com/s/fVN4ImUd4xDszJOKecwIhg)|[请点击链接](https://github.com/liyangbit/PyDataRoad/tree/master/projects/Stock-prediction-with-Python)|
23 | |20190323|[Python 可视化神器:Plotly Express 入门之路](http://liyangbit.com/pythonvisualization/Plotly-Express-introduction-cn/)|[请点击链接](https://github.com/liyangbit/PyDataRoad/tree/master/comprehensive/Plotly-Express-Introducing)|
24 | |20190304|[干货推荐:掌握这几点,轻松玩转 Bokeh 可视化 (项目实战经验分享)](http://liyangbit.com/pythonvisualization/Bokeh-Data-Visualization/)|[请点击链接](https://github.com/liyangbit/PyDataRoad/tree/master/comprehensive/Bokeh-data-visualization)|
25 | |20190225|[推荐:免费获取《Python知识手册》](http://liyangbit.com/python-knowledge-handbook/)|[请点击链接](https://github.com/liyangbit/Python-Knowledge-Handbook)|
26 | |20190131|[轻松玩转Python发送新春祝福给指定好友](http://liyangbit.com/comprehensive/wechat-msg-sent/)|[请点击链接](https://github.com/liyangbit/PyDataRoad/tree/master/comprehensive/wechat-msg-send)|
27 | |20190121|[轻松用 Seaborn 进行数据可视化](http://liyangbit.com/pythonvisualization/Data-Visualization-with-Seaborn/)|[请点击链接](https://github.com/liyangbit/PyDataRoad/tree/master/comprehensive/Seaborn-data-visualization)|
28 | |20181224|[Matplotlib 必须掌握的 50 个可视化图表(附完整 Python 源代码)](http://liyangbit.com/pythonvisualization/matplotlib-top-50-visualizations/)|[请点击链接](https://github.com/liyangbit/PyDataRoad/tree/master/projects/matplotlib-top-50-visualizations)|
29 | |20180625|[第二波分析:德国是2018世界杯夺冠最大热门? Python数据分析来揭开神秘面纱…](http://liyangbit.com/projects/projects-world-cup-predict-2nd-post/)|[请点击链接](https://github.com/liyangbit/PyDataRoad/tree/master/projects/football-world-cup)|
30 | |20180619|[Matplotlib小册子:饼图概览](http://mp.weixin.qq.com/s?__biz=MzI2NjY5NzI0NA==&mid=2247484694&idx=1&sn=c48c2013e1035153e9bba98b8db9ee51&chksm=ea8b6a65ddfce37399d293d2730899da3167d0ab0aba33e078bef4ecbbcf75735728f1de1fb8#rd)|[请点击链接](https://github.com/liyangbit/PyDataRoad/tree/master/comprehensive/matplotlib-pie)|
31 | |20180611|[世界杯:用Python分析热门夺冠球队](http://liyangbit.com/projects/projects-world-cup-top3-predict/)|[请点击链接](https://github.com/liyangbit/PyDataRoad/tree/master/projects/football-world-cup)|
32 | |20180603|[Pandas:日期数据处理](http://mp.weixin.qq.com/s?__biz=MzI2NjY5NzI0NA==&mid=2247484626&idx=1&sn=35ab4f1a120d66170f564b7547c481da&chksm=ea8b6ba1ddfce2b7e401aeff2b66d2e79f4b89c47d08d14d6d501594178adf0b25cb0d6d9317&scene=21#wechat_redirect)|[数据文件("date.csv")请点击链接](https://github.com/liyangbit/PyDataRoad/tree/master/01data)|
33 | |20170921|[Cheat sheet for Jupyter notebook](http://mp.weixin.qq.com/s?__biz=MzI2NjY5NzI0NA==&mid=2247484189&idx=1&sn=0d7f064d6c48dad3d78b571735849fe7&chksm=ea8b6c6eddfce578a0429dda924f28ea57a38de3ab3b16565144bd6981fc7a39b292de1f7723&scene=21#wechat_redirect)|[请点击链接](https://github.com/liyangbit/PyDataRoad/tree/master/comprehensive/cheat-sheet)|
34 | |20170717|[数据集资源分享!!!](http://mp.weixin.qq.com/s?__biz=MzI2NjY5NzI0NA==&mid=2247483972&idx=1&sn=6f59757fba7fd64df759f1cc4d63691d&chksm=ea8b6d37ddfce4215417691c6cd299b1bf4dcc8f2e3c22a6b608ff3f462655307d3a378007dd&scene=21#wechat_redirect)|[请点击链接](https://github.com/liyangbit/PyDataRoad/tree/master/comprehensive/dataset)|
35 | |20170710| **Python数据分析项目实战之福布斯系列**
(1) 20170719 [福布斯系列之数据分析思路篇](http://mp.weixin.qq.com/s?__biz=MzI2NjY5NzI0NA==&mid=2247483983&idx=1&sn=949d01b3917605084e4aed47737b3260&chksm=ea8b6d3cddfce42aa3a5b9b4bfd7c5b71b04ee9f4cc43dab0ebb1dead18897920901d17180c5&scene=21#wechat_redirect)
(2) 20170721 [福布斯系列之数据采集](http://mp.weixin.qq.com/s?__biz=MzI2NjY5NzI0NA==&mid=2247483984&idx=1&sn=7ab4e0cfa75bb6fea553b9c4837d7283&chksm=ea8b6d23ddfce435f65b9a3a808d43bdeee3a1343a00ae6f70f98335a3604db02a60e40af72f&scene=21#wechat_redirect)
(3) 20170802 [福布斯系列之数据完整性检查 - Python数据分析项目实战](http://mp.weixin.qq.com/s?__biz=MzI2NjY5NzI0NA==&mid=2247484019&idx=1&sn=b75fa8c5378c90f20ee68f6439ef88b7&chksm=ea8b6d00ddfce41668c74233eb14e273b4310371a3755141773f397ec26ded4ffebb65026b1d&scene=21#wechat_redirect)
(4) 20170809 [福布斯系列之补充数据收集 - Python数据分析项目实战](http://mp.weixin.qq.com/s?__biz=MzI2NjY5NzI0NA==&mid=2247484031&idx=1&sn=20374dc68a4d038cf878c6184d3fd1dd&chksm=ea8b6d0cddfce41a8a19fd16abfd1d1c8f102089b3021d337b6d0eb49abe938a4a26943fe102&scene=21#wechat_redirect)
(5) 20170814 [福布斯系列之数据清洗(1) - Python数据分析项目实战](http://mp.weixin.qq.com/s?__biz=MzI2NjY5NzI0NA==&mid=2247484067&idx=1&sn=955df45c829b6f9d8092fda5234b5566&chksm=ea8b6dd0ddfce4c66bf1ec45122493f2a719aef4eafdede2ed34ca29d9565534bda7bd4a53ad&scene=21#wechat_redirect)
(6) 20170825 [福布斯系列之数据清洗(2) - Python数据分析项目实战](http://mp.weixin.qq.com/s?__biz=MzI2NjY5NzI0NA==&mid=2247484080&idx=1&sn=6a61e4e57236a2ee96c494473cf87e36&chksm=ea8b6dc3ddfce4d5654421e7a501bf65dc131dcce33c4a7336d9e4928770725e79ef9e764954&scene=21#wechat_redirect)
(7) 20170904 [福布斯系列之数据清洗(3) - Python数据分析项目实战](http://mp.weixin.qq.com/s?__biz=MzI2NjY5NzI0NA==&mid=2247484104&idx=1&sn=0fcc6923f50f95f8d16be50bd933f87c&chksm=ea8b6dbbddfce4ad91b394818e20a8ae9a92ed8b0c8b9d14da84cc0b76f228aa7415adde8209&scene=21#wechat_redirect)
(8) 20170710 [Pandas数据处理实战:福布斯全球上市企业排行榜数据整理](http://mp.weixin.qq.com/s?__biz=MzI2NjY5NzI0NA==&mid=2247483960&idx=1&sn=4f3bc2b8f7dcbe7883c1493440c6daa4&chksm=ea8b6d4bddfce45d2c0d2de3561a7728b3b39b5914c2752ac9d255bbef95c4b995dd45892c97&scene=21#wechat_redirect)
(9) 20170918 [福布斯系列之数据清洗(5) - Python数据分析项目实战](http://mp.weixin.qq.com/s?__biz=MzI2NjY5NzI0NA==&mid=2247484170&idx=1&sn=9865ff152cb7d990cd8fbb1dff6cbc88&chksm=ea8b6c79ddfce56f10e5b60b653c3693f3a806df7112bafe709b62e18db76504792818ae3f09&scene=21#wechat_redirect) | [请点击链接](https://github.com/liyangbit/forbes_global2000)|
36 | |20170618|[Python:一篇文章掌握Numpy的基本用法](http://mp.weixin.qq.com/s?__biz=MzI2NjY5NzI0NA==&mid=2247483867&idx=1&sn=6cafddd7868d4bfd6d2fbc2426cdae9a&chksm=ea8b6ea8ddfce7be7fe108fcc18ad945742f64657007a85805fe8b9ffcb660ae5ab3e3b2f147&scene=21#wechat_redirect)|[请点击链接](https://github.com/liyangbit/PyDataRoad/tree/master/comprehensive/numpy_basic)|
37 | |20170613|[Python:Pandas的DataFrame如何按指定list排序](http://mp.weixin.qq.com/s?__biz=MzI2NjY5NzI0NA==&mid=2247483844&idx=1&sn=f28c73669806a0a21b04bfbbe9eda8a6&chksm=ea8b6eb7ddfce7a155a2528e518891c4b88e80887e681c962d6bd7ce67a3172e8b85aa7585d2&scene=21#wechat_redirect)|[请点击链接](https://github.com/liyangbit/PyDataRoad/tree/master/comprehensive/pandas_df_sortby_custom_list)|
38 | |20170611|[Pycon 2017: Python可视化库大全](http://mp.weixin.qq.com/s?__biz=MzI2NjY5NzI0NA==&mid=2247483838&idx=1&sn=975a7aeb05bde37aca473fd8f6c457b1&chksm=ea8b6ecdddfce7dbc2fb6c66e23f57366f1b0ae7fbf749e5c40be3f7142709b6f15d76cd74e6&scene=21#wechat_redirect)|链接:http://pan.baidu.com/s/1eRDfR7G 密码:uaf3|
39 | |20170605|[50年高考作文题,记录时代变迁](http://mp.weixin.qq.com/s?__biz=MzI2NjY5NzI0NA==&mid=2247483805&idx=1&sn=a368eb3528b2c2bd3f7ebceaec467d42&chksm=ea8b6eeeddfce7f832280c26b6cb08dc2daef0059a024276b7807b8e3d8e24af5cf0f72269b4&scene=21#wechat_redirect)|[请点击链接](https://github.com/liyangbit/PyDataRoad/tree/master/projects/gaokaozw)|
40 | |20170523|[python求职Top10城市,来看看是否有你所在的城市](http://mp.weixin.qq.com/s?__biz=MzI2NjY5NzI0NA==&mid=2247483767&idx=1&sn=26f1e8c43084f9e4859031d54148fe33&chksm=ea8b6e04ddfce7125d2463732557e1f4f4655271f745c83149adcf2feb0fbdecd9eb2566a110&scene=21#wechat_redirect)|[请点击链接](https://github.com/liyangbit/PyDataRoad/tree/master/projects/zhilian_analysis)|
41 | |20170513|[UFO长啥样?](https://mp.weixin.qq.com/s/SsK5Te6oKhgGF98Z8n3gsg)|[请点击链接](https://github.com/liyangbit/PyDataRoad/tree/master/projects/ufo)|
42 |
43 | ## 延伸阅读
44 |
45 | [](https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzI2NjY5NzI0NA==&action=getalbum&album_id=1370549534602133504&scene=21#wechat_redirect)
46 |
47 | [](https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzI2NjY5NzI0NA==&action=getalbum&album_id=2293754972943122444#wechat_redirect)
48 |
--------------------------------------------------------------------------------
/comprehensive/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liyangbit/PyDataLab/78ceb8d03ce93490f1613d65b9505fb609b34bd8/comprehensive/.DS_Store
--------------------------------------------------------------------------------
/comprehensive/Bokeh-data-visualization/README.md:
--------------------------------------------------------------------------------
1 |
2 | # 运行 Bokeh 服务器
3 |
4 | 在制作绘图所需的所有设置和代码编写完成之后,在本地运行 Bokeh 服务器非常简单。 我们打开一个命令行界面(我更喜欢 Git Bash, 但任何一个都可以工作),切换到包含 `bokeh_app` 的目录并运行 `bokeh serve --show bokeh_app` 。 假设一切都正确,应用程序将在我们的浏览器中自动打开地址 `http:// localhost:5006 / bokeh_app` 。 然后我们可以访问该应用程序并浏览我们的仪表板,效果如下:
5 |
6 | 
7 |
8 | # 源代码
9 |
10 | [请点击链接](https://github.com/WillKoehrsen/Bokeh-Python-Visualization)
11 |
12 | 欢迎关注个人微信公众号“**Python数据之道**”(ID:PyDataLab)
13 |
14 |
15 |

16 |
17 |
--------------------------------------------------------------------------------
/comprehensive/Plotly-Express-Introducing/README.md:
--------------------------------------------------------------------------------
1 |
2 | # 源代码
3 |
4 | 『Python数据之道』已将代码整合到 jupyter notebook 文件中,请保存上面的 “Plotly-Express-Introducing.ipynb” 文件即可。
5 |
6 | 欢迎关注个人微信公众号“Python数据之道”(ID:PyDataLab)
7 |
8 |
9 |

10 |
--------------------------------------------------------------------------------
/comprehensive/Tushare/README.md:
--------------------------------------------------------------------------------
1 | # Tushare
2 |
3 | ## Tushare 介绍思维导图
4 |
5 | **下载链接1:**
6 |
7 | https://306t.com/f/23159928-480532191-74dc10
8 | (访问密码:2021)
9 |
10 | **下载链接2:**
11 |
12 | 链接: https://pan.baidu.com/s/1HscFei0MJGoE7BFgJTSlfQ
13 | 密码: dr6h
14 |
15 |
16 | 欢迎关注个人微信公众号“**Python数据之道**”(ID:PyDataLab)
17 |
18 |
19 |

20 |
21 |
--------------------------------------------------------------------------------
/comprehensive/cheat-sheet/Jupyter_Notebook_Cheat_Sheet.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liyangbit/PyDataLab/78ceb8d03ce93490f1613d65b9505fb609b34bd8/comprehensive/cheat-sheet/Jupyter_Notebook_Cheat_Sheet.pdf
--------------------------------------------------------------------------------
/comprehensive/dataset/README.md:
--------------------------------------------------------------------------------
1 | # dataset
2 | datasets collection
3 |
4 | 欢迎关注个人微信公众号“**Python数据之道**”(ID:PyDataLab)
5 |
6 |
7 |

8 |
9 |
10 |
13 |
14 | ## UCI Datasets
15 | [http://archive.ics.uci.edu/ml/index.php](http://archive.ics.uci.edu/ml/index.php)
16 |
17 | ## Where can I find large datasets open to the public?
18 |
19 | Main Page:
20 | [Where can I find large datasets open to the public](https://www.quora.com/Data/Where-can-I-find-large-datasets-open-to-the-public)
21 |
22 | **Cross-disciplinary data repositories, data collections and data search engines:**
23 |
24 | 1. [http://datasource.kapsarc.org](http://datasource.kapsarc.org/)
25 | 2. [https://www.kaggle.com/datasets](https://kaggle.com/datasets)
26 | 3. [http://www.assetmacro.com](http://www.assetmacro.com/)
27 | 4. [http://usgovxml.com](http://usgovxml.com/)
28 | 5. [http://aws.amazon.com/datasets](http://aws.amazon.com/datasets)
29 | 6. [http://databib.org](http://databib.org/)
30 | 7. [http://datacite.org](http://datacite.org/)
31 | 8. [http://figshare.com](http://figshare.com/)
32 | 9. [http://linkeddata.org](http://linkeddata.org/)
33 | 10. [http://reddit.com/r/datasets](http://reddit.com/r/datasets)
34 | 11. [http://thewebminer.com](http://thewebminer.com/)/
35 | 12. [http://thedatahub.org](http://thedatahub.org/) alias [http://ckan.net](http://ckan.net/)
36 | 13. [http://quandl.com](http://quandl.com/)
37 | 14. [Social Network Analysis Interactive Dataset Library](http://www.growmeme.com/overview) (Social Network Datasets)
38 | 15. [Datasets for Data Mining](http://www.kdnuggets.com/datasets/index.html)
39 | 16. [http://enigma.io](http://enigma.io/)
40 | 17. [*http://www.ufindthem.com/*](http://www.ufindthem.com/)
41 | 18. [http://NetworkRepository.com - The First Interactive Network Data Repository](https://www.quora.com/Data/www.networkrepository.com)
42 | 19. [http://MLvis.com](http://www.mlvis.com/)
43 | 20. [Open Data Inception - A Comprehensive List of 2500+ Open Data Portals in the World](http://opendatainception.io/)
44 | 21. [http://data.opendatasoft.com](http://data.opendatasoft.com/page/home/) OpenDataSoft catalog
45 |
46 | **Single datasets and data repositories**
47 |
48 | 1. [http://archive.ics.uci.edu/ml/](http://archive.ics.uci.edu/ml/)
49 | 2. [http://crawdad.org/](http://crawdad.org/)
50 | 3. [http://data.austintexas.gov](http://data.austintexas.gov/)
51 | 4. [http://data.cityofchicago.org](http://data.cityofchicago.org/)
52 | 5. [http://data.govloop.com](http://data.govloop.com/)
53 | 6. [http://data.gov.uk/](http://data.gov.uk/)
54 | 7. [data.gov.in](http://data.gov.in/)
55 | 8. [http://data.medicare.gov](http://data.medicare.gov/)
56 | 9. [http://data.seattle.gov](http://data.seattle.gov/)
57 | 10. [http://data.sfgov.org](http://data.sfgov.org/)
58 | 11. [http://data.sunlightlabs.com](http://data.sunlightlabs.com/)
59 | 12. [https://datamarket.azure.com/](https://datamarket.azure.com/)
60 | 13. [http://developer.yahoo.com/geo/g...](http://developer.yahoo.com/geo/geoplanet/data/)
61 | 14. [http://econ.worldbank.org/datasets](http://econ.worldbank.org/datasets)
62 | 15. [http://en.wikipedia.org/wiki/Wik...](http://en.wikipedia.org/wiki/Wikipedia:Database_download)
63 | 16. [http://factfinder.census.gov/ser...](http://factfinder.census.gov/servlet/DatasetMainPageServlet)
64 | 17. [http://ftp.ncbi.nih.gov/](http://ftp.ncbi.nih.gov/)
65 | 18. [http://gettingpastgo.socrata.com](http://gettingpastgo.socrata.com/)
66 | 19. [http://googleresearch.blogspot.c...](http://googleresearch.blogspot.com/2006/08/all-our-n-gram-are-belong-to-you.html)
67 | 20. [http://books.google.com/ngrams/](http://books.google.com/ngrams/)
68 | 21. [http://medihal.archives-ouvertes.fr](http://medihal.archives-ouvertes.fr/)
69 | 22. [http://public.resource.org/](http://public.resource.org/)
70 | 23. [http://rechercheisidore.fr](http://rechercheisidore.fr/)
71 | 24. [http://snap.stanford.edu/data/in...](http://snap.stanford.edu/data/index.html)
72 | 25. [http://timetric.com/public-data/](http://timetric.com/public-data/)
73 | 26. [https://wist.echo.nasa.gov/~wist...](https://wist.echo.nasa.gov/~wist/api/imswelcome/)
74 | 27. [http://www2.jpl.nasa.gov/srtm](http://www2.jpl.nasa.gov/srtm)
75 | 28. [http://www.archives.gov/research...](http://www.archives.gov/research/alic/tools/online-databases.html)
76 | 29. [http://www.bls.gov/](http://www.bls.gov/)
77 | 30. [http://www.crunchbase.com/](http://www.crunchbase.com/)
78 | 31. [http://www.dartmouthatlas.org/](http://www.dartmouthatlas.org/)
79 | 32. [http://www.data.gov/](http://www.data.gov/)
80 | 33. [http://www.datakc.org](http://www.datakc.org/)
81 | 34. [http://dbpedia.org](http://dbpedia.org/)
82 | 35. [http://www.delicious.com/jbaldwi...](http://www.delicious.com/jbaldwinconnect/DataSets)
83 | 36. [http://www.faa.gov/data_research/](http://www.faa.gov/data_research/)
84 | 37. [http://www.factual.com/](http://www.factual.com/)
85 | 38. [http://research.stlouisfed.org/f...](http://research.stlouisfed.org/fred2/)
86 | 39. [http://www.freebase.com/](http://www.freebase.com/)
87 | 40. [http://www.google.com/publicdata...](http://www.google.com/publicdata/directory)
88 | 41. [http://www.guardian.co.uk/news/d...](http://www.guardian.co.uk/news/datablog)
89 | 42. [http://www.infochimps.com](http://www.infochimps.com/)
90 | 43. [http://www.kaggle.com/](http://www.kaggle.com/)
91 | 44. [http://build.kiva.org/](http://build.kiva.org/)
92 | 45. [http://www.nationalarchives.gov....](http://www.nationalarchives.gov.uk/doc/open-government-licence/open-government-licence.htm)
93 | 46. [http://www.nyc.gov/html/datamine...](http://www.nyc.gov/html/datamine/html/home/home.shtml)
94 | 47. [http://www.ordnancesurvey.co.uk/...](http://www.ordnancesurvey.co.uk/oswebsite/opendata/)
95 | 48. [http://www.philwhln.com/how-to-g...](http://www.philwhln.com/how-to-get-experience-working-with-large-datasets)
96 | 49. [http://www.imdb.com/interfaces](http://www.imdb.com/interfaces)
97 | 50. [http://imat-relpred.yandex.ru/en...](http://imat-relpred.yandex.ru/en/datasets)
98 | 51. [http://www.dados.gov.pt/pt/catal...](http://www.dados.gov.pt/pt/catalogodados/catalogodados.aspx)
99 | 52. [http://knoema.com](http://knoema.com/)
100 | 53. [http://daten.berlin.de/](http://daten.berlin.de/)
101 | 54. [http://www.qunb.com](http://www.qunb.com/)
102 | 55. [http://databib.org/](http://databib.org/)
103 | 56. [http://datacite.org/](http://datacite.org/)
104 | 57. [http://data.reegle.info/](http://data.reegle.info/)
105 | 58. [http://data.wien.gv.at/](http://data.wien.gv.at/)
106 | 59. [http://data.gov.bc.ca](http://data.gov.bc.ca/)
107 | 60. [https://pslcdatashop.web.cmu.edu/](https://pslcdatashop.web.cmu.edu/) (interaction data in learning environments)
108 | 61. [http://www.icpsr.umich.edu/icpsrweb/CPES/ - ](http://www.icpsr.umich.edu/icpsrweb/CPES/)Collaborative Psychiatric Epidemiology Surveys: (A collection of three national surveys focused on each of the major ethnic groups to study psychiatric illnesses and health services use)
109 | 62. [http://www.dati.gov.it](http://www.dati.gov.it/)
110 | 63. [http://dati.trentino.it](http://dati.trentino.it/)
111 | 64. [http://www.databagg.com/](http://www.databagg.com/)
112 | 65. [http://networkrepository.com](http://networkrepository.com/) - Network/ML data repository w/ visual interactive analytics
113 | 66. [Home](http://www.grid.unep.ch/index.php?lang=en) (United Nations Environment Programme Grid Genava a lot of GIS datasets
114 |
115 |
--------------------------------------------------------------------------------
/comprehensive/numpy_basic/README.md:
--------------------------------------------------------------------------------
1 | # np_basic
2 | Python: 一篇文章掌握Numpy的基本用法
3 |
4 | 欢迎关注个人微信公众号“Python数据之道”(ID:PyDataLab)
5 |
6 |
7 |

8 |
9 |
--------------------------------------------------------------------------------
/comprehensive/numpy_basic/numpy_notes_01.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {
6 | "toc": "true"
7 | },
8 | "source": [
9 | "# Table of Contents\n",
10 | " "
11 | ]
12 | },
13 | {
14 | "cell_type": "markdown",
15 | "metadata": {},
16 | "source": [
17 | "* ** 作者:Lemon**\n",
18 | "* **个人微信公众号:“Python数据之道”(ID:PyDataRoad)**"
19 | ]
20 | },
21 | {
22 | "cell_type": "markdown",
23 | "metadata": {},
24 | "source": [
25 | "# Numpy数组对象"
26 | ]
27 | },
28 | {
29 | "cell_type": "markdown",
30 | "metadata": {},
31 | "source": [
32 | "Numpy中的多维数组称为ndarray,这是Numpy中最常见的数组对象。ndarray对象通常包含两个部分:\n",
33 | "\n",
34 | "* ndarray数据本身\n",
35 | "* 描述数据的元数据\n",
36 | "\n",
37 | "Numpy数组的优势\n",
38 | "\n",
39 | "* Numpy数组通常是由相同种类的元素组成的,即数组中的数据项的类型一致。这样有一个好处,由于知道数组元素的类型相同,所以能快速确定存储数据所需空间的大小。\n",
40 | "* Numpy数组能够运用向量化运算来处理整个数组,速度较快;而Python的列表则通常需要借助循环语句遍历列表,运行效率相对来说要差。\n",
41 | "* Numpy使用了优化过的C API,运算速度较快"
42 | ]
43 | },
44 | {
45 | "cell_type": "markdown",
46 | "metadata": {},
47 | "source": [
48 | "**关于向量化和标量化运算**,对比下面的参考例子就可以看出差异"
49 | ]
50 | },
51 | {
52 | "cell_type": "markdown",
53 | "metadata": {},
54 | "source": [
55 | "* 使用python的list进行运算"
56 | ]
57 | },
58 | {
59 | "cell_type": "code",
60 | "execution_count": 2,
61 | "metadata": {
62 | "collapsed": true
63 | },
64 | "outputs": [],
65 | "source": [
66 | "def pySum():\n",
67 | " a = list(range(10000))\n",
68 | " b = list(range(10000))\n",
69 | " c = []\n",
70 | " for i in range(len(a)):\n",
71 | " c.append(a[i]**2 + b[i]**2)\n",
72 | "\n",
73 | " return c\n"
74 | ]
75 | },
76 | {
77 | "cell_type": "code",
78 | "execution_count": 3,
79 | "metadata": {
80 | "collapsed": false
81 | },
82 | "outputs": [
83 | {
84 | "name": "stdout",
85 | "output_type": "stream",
86 | "text": [
87 | "10 loops, best of 3: 49.4 ms per loop\n"
88 | ]
89 | }
90 | ],
91 | "source": [
92 | "%timeit pySum()"
93 | ]
94 | },
95 | {
96 | "cell_type": "code",
97 | "execution_count": 4,
98 | "metadata": {
99 | "collapsed": true
100 | },
101 | "outputs": [],
102 | "source": [
103 | "import numpy as np\n",
104 | "def npSum():\n",
105 | " a = np.arange(10000)\n",
106 | " b = np.arange(10000)\n",
107 | " c = a**2 + b**2\n",
108 | " return c"
109 | ]
110 | },
111 | {
112 | "cell_type": "code",
113 | "execution_count": 5,
114 | "metadata": {
115 | "collapsed": false
116 | },
117 | "outputs": [
118 | {
119 | "name": "stdout",
120 | "output_type": "stream",
121 | "text": [
122 | "The slowest run took 262.56 times longer than the fastest. This could mean that an intermediate result is being cached.\n",
123 | "1000 loops, best of 3: 128 µs per loop\n"
124 | ]
125 | }
126 | ],
127 | "source": [
128 | "%timeit npSum()"
129 | ]
130 | },
131 | {
132 | "cell_type": "markdown",
133 | "metadata": {},
134 | "source": [
135 | "从上面的运行结果可以看出,**numpy的向量化运算的效率要远远高于python的循环遍历运算(效率相差好几百倍)**。\n",
136 | "(1ms=1000µs)"
137 | ]
138 | },
139 | {
140 | "cell_type": "markdown",
141 | "metadata": {},
142 | "source": [
143 | "# 创建ndarray数组"
144 | ]
145 | },
146 | {
147 | "cell_type": "markdown",
148 | "metadata": {},
149 | "source": [
150 | "首先需要导入numpy库,在导入numpy库时通常使用“np”作为简写,这也是Numpy官方倡导的写法。\n",
151 | "\n",
152 | "当然,你也可以选择其他简写的方式或者直接写numpy,但还是建议用“np”,这样你的程序能和大都数人的程序保持一致。"
153 | ]
154 | },
155 | {
156 | "cell_type": "code",
157 | "execution_count": 6,
158 | "metadata": {
159 | "collapsed": true
160 | },
161 | "outputs": [],
162 | "source": [
163 | "import numpy as np"
164 | ]
165 | },
166 | {
167 | "cell_type": "markdown",
168 | "metadata": {},
169 | "source": [
170 | "创建ndarray数组的方式有很多种,这里介绍我使用的较多的几种:"
171 | ]
172 | },
173 | {
174 | "cell_type": "markdown",
175 | "metadata": {},
176 | "source": [
177 | "**Method 1: 基于list或tuple**"
178 | ]
179 | },
180 | {
181 | "cell_type": "code",
182 | "execution_count": 7,
183 | "metadata": {
184 | "collapsed": false
185 | },
186 | "outputs": [
187 | {
188 | "name": "stdout",
189 | "output_type": "stream",
190 | "text": [
191 | "[1 2 3 4]\n",
192 | "[1 2 3 4]\n"
193 | ]
194 | },
195 | {
196 | "data": {
197 | "text/plain": [
198 | "array([[1, 2, 4],\n",
199 | " [3, 4, 5]])"
200 | ]
201 | },
202 | "execution_count": 7,
203 | "metadata": {},
204 | "output_type": "execute_result"
205 | }
206 | ],
207 | "source": [
208 | "# 一维数组\n",
209 | "\n",
210 | "# 基于list\n",
211 | "arr1 = np.array([1,2,3,4])\n",
212 | "print(arr1)\n",
213 | "\n",
214 | "# 基于tuple\n",
215 | "arr_tuple = np.array((1,2,3,4))\n",
216 | "print(arr_tuple)\n",
217 | "\n",
218 | "# 二维数组 (2*3)\n",
219 | "arr2 = np.array([[1,2,4], [3,4,5]])\n",
220 | "arr2"
221 | ]
222 | },
223 | {
224 | "cell_type": "markdown",
225 | "metadata": {},
226 | "source": [
227 | "请注意:\n",
228 | "* 一维数组用print输出的时候为 [1 2 3 4],跟python的列表是有些差异的,没有“**,**”\n",
229 | "* 在创建二维数组时,在每个子list外面还有一个\"[]\",形式为“**[**[list1], [list2]**]**”"
230 | ]
231 | },
232 | {
233 | "cell_type": "markdown",
234 | "metadata": {},
235 | "source": [
236 | "**Method 2: 基于np.arange**"
237 | ]
238 | },
239 | {
240 | "cell_type": "code",
241 | "execution_count": 8,
242 | "metadata": {
243 | "collapsed": false
244 | },
245 | "outputs": [
246 | {
247 | "name": "stdout",
248 | "output_type": "stream",
249 | "text": [
250 | "[0 1 2 3 4]\n"
251 | ]
252 | },
253 | {
254 | "data": {
255 | "text/plain": [
256 | "array([[0, 1, 2],\n",
257 | " [0, 1, 2]])"
258 | ]
259 | },
260 | "execution_count": 8,
261 | "metadata": {},
262 | "output_type": "execute_result"
263 | }
264 | ],
265 | "source": [
266 | "# 一维数组\n",
267 | "arr1 = np.arange(5)\n",
268 | "print(arr1)\n",
269 | "\n",
270 | "# 二维数组\n",
271 | "arr2 = np.array([np.arange(3), np.arange(3)])\n",
272 | "arr2"
273 | ]
274 | },
275 | {
276 | "cell_type": "markdown",
277 | "metadata": {},
278 | "source": [
279 | "**Method 3: 基于arange以及reshape创建多维数组**"
280 | ]
281 | },
282 | {
283 | "cell_type": "code",
284 | "execution_count": 9,
285 | "metadata": {
286 | "collapsed": false
287 | },
288 | "outputs": [
289 | {
290 | "data": {
291 | "text/plain": [
292 | "array([[[ 0, 1, 2, 3],\n",
293 | " [ 4, 5, 6, 7],\n",
294 | " [ 8, 9, 10, 11]],\n",
295 | "\n",
296 | " [[12, 13, 14, 15],\n",
297 | " [16, 17, 18, 19],\n",
298 | " [20, 21, 22, 23]]])"
299 | ]
300 | },
301 | "execution_count": 9,
302 | "metadata": {},
303 | "output_type": "execute_result"
304 | }
305 | ],
306 | "source": [
307 | "# 创建三维数组\n",
308 | "arr = np.arange(24).reshape(2,3,4)\n",
309 | "arr"
310 | ]
311 | },
312 | {
313 | "cell_type": "markdown",
314 | "metadata": {},
315 | "source": [
316 | "* 请注意:arange的长度与ndarray的维度的乘积要相等,即 24 = 2X3X4"
317 | ]
318 | },
319 | {
320 | "cell_type": "markdown",
321 | "metadata": {
322 | "collapsed": true
323 | },
324 | "source": [
325 | "* **用numpy.random创建数组的方法,可以参考下面的文章**\n",
326 | "\n",
327 | "\n",
328 | "* 其他创建ndarray的方法,各位小伙伴们自己可以研究下。\n"
329 | ]
330 | },
331 | {
332 | "cell_type": "markdown",
333 | "metadata": {},
334 | "source": [
335 | "# Numpy的数值类型"
336 | ]
337 | },
338 | {
339 | "cell_type": "markdown",
340 | "metadata": {},
341 | "source": [
342 | "Numpy的数值类型如下:"
343 | ]
344 | },
345 | {
346 | "cell_type": "markdown",
347 | "metadata": {},
348 | "source": [
349 | "每一种数据类型都有相应的数据转换函数,参考示例如下:"
350 | ]
351 | },
352 | {
353 | "cell_type": "code",
354 | "execution_count": 10,
355 | "metadata": {
356 | "collapsed": false
357 | },
358 | "outputs": [
359 | {
360 | "data": {
361 | "text/plain": [
362 | "12"
363 | ]
364 | },
365 | "execution_count": 10,
366 | "metadata": {},
367 | "output_type": "execute_result"
368 | }
369 | ],
370 | "source": [
371 | "np.int8(12.334)"
372 | ]
373 | },
374 | {
375 | "cell_type": "code",
376 | "execution_count": 11,
377 | "metadata": {
378 | "collapsed": false
379 | },
380 | "outputs": [
381 | {
382 | "data": {
383 | "text/plain": [
384 | "12.0"
385 | ]
386 | },
387 | "execution_count": 11,
388 | "metadata": {},
389 | "output_type": "execute_result"
390 | }
391 | ],
392 | "source": [
393 | "np.float64(12)"
394 | ]
395 | },
396 | {
397 | "cell_type": "code",
398 | "execution_count": 12,
399 | "metadata": {
400 | "collapsed": false
401 | },
402 | "outputs": [
403 | {
404 | "data": {
405 | "text/plain": [
406 | "1.0"
407 | ]
408 | },
409 | "execution_count": 12,
410 | "metadata": {},
411 | "output_type": "execute_result"
412 | }
413 | ],
414 | "source": [
415 | "np.float(True)"
416 | ]
417 | },
418 | {
419 | "cell_type": "code",
420 | "execution_count": 13,
421 | "metadata": {
422 | "collapsed": false
423 | },
424 | "outputs": [
425 | {
426 | "data": {
427 | "text/plain": [
428 | "True"
429 | ]
430 | },
431 | "execution_count": 13,
432 | "metadata": {},
433 | "output_type": "execute_result"
434 | }
435 | ],
436 | "source": [
437 | "bool(1)"
438 | ]
439 | },
440 | {
441 | "cell_type": "markdown",
442 | "metadata": {},
443 | "source": [
444 | "在创建ndarray数组时,可以指定数值类型:"
445 | ]
446 | },
447 | {
448 | "cell_type": "code",
449 | "execution_count": 14,
450 | "metadata": {
451 | "collapsed": false
452 | },
453 | "outputs": [
454 | {
455 | "data": {
456 | "text/plain": [
457 | "array([ 0., 1., 2., 3., 4.])"
458 | ]
459 | },
460 | "execution_count": 14,
461 | "metadata": {},
462 | "output_type": "execute_result"
463 | }
464 | ],
465 | "source": [
466 | "a = np.arange(5, dtype=float)\n",
467 | "a"
468 | ]
469 | },
470 | {
471 | "cell_type": "markdown",
472 | "metadata": {},
473 | "source": [
474 | "* 请注意,复数不能转换成为整数类型或者浮点数,比如下面的代码会运行出错"
475 | ]
476 | },
477 | {
478 | "cell_type": "code",
479 | "execution_count": 15,
480 | "metadata": {
481 | "collapsed": false
482 | },
483 | "outputs": [],
484 | "source": [
485 | "# float(42 + 1j)"
486 | ]
487 | },
488 | {
489 | "cell_type": "markdown",
490 | "metadata": {
491 | "collapsed": true
492 | },
493 | "source": [
494 | "# ndarray数组的属性"
495 | ]
496 | },
497 | {
498 | "cell_type": "markdown",
499 | "metadata": {
500 | "collapsed": true
501 | },
502 | "source": [
503 | "* **dtype属性**,ndarray数组的数据类型,数据类型的种类,前面已描述。"
504 | ]
505 | },
506 | {
507 | "cell_type": "code",
508 | "execution_count": 16,
509 | "metadata": {
510 | "collapsed": false
511 | },
512 | "outputs": [
513 | {
514 | "data": {
515 | "text/plain": [
516 | "array([ 0., 1., 2., 3.])"
517 | ]
518 | },
519 | "execution_count": 16,
520 | "metadata": {},
521 | "output_type": "execute_result"
522 | }
523 | ],
524 | "source": [
525 | "np.arange(4, dtype=float)"
526 | ]
527 | },
528 | {
529 | "cell_type": "code",
530 | "execution_count": 17,
531 | "metadata": {
532 | "collapsed": false
533 | },
534 | "outputs": [
535 | {
536 | "data": {
537 | "text/plain": [
538 | "array([ 0.+0.j, 1.+0.j, 2.+0.j, 3.+0.j])"
539 | ]
540 | },
541 | "execution_count": 17,
542 | "metadata": {},
543 | "output_type": "execute_result"
544 | }
545 | ],
546 | "source": [
547 | "# 'D'表示复数类型\n",
548 | "np.arange(4, dtype='D') "
549 | ]
550 | },
551 | {
552 | "cell_type": "code",
553 | "execution_count": 18,
554 | "metadata": {
555 | "collapsed": false
556 | },
557 | "outputs": [
558 | {
559 | "data": {
560 | "text/plain": [
561 | "array([1, 3, 6], dtype=int8)"
562 | ]
563 | },
564 | "execution_count": 18,
565 | "metadata": {},
566 | "output_type": "execute_result"
567 | }
568 | ],
569 | "source": [
570 | "np.array([1.22,3.45,6.779], dtype='int8')"
571 | ]
572 | },
573 | {
574 | "cell_type": "markdown",
575 | "metadata": {},
576 | "source": [
577 | "* **ndim属性**,数组维度的数量"
578 | ]
579 | },
580 | {
581 | "cell_type": "code",
582 | "execution_count": 19,
583 | "metadata": {
584 | "collapsed": false
585 | },
586 | "outputs": [
587 | {
588 | "data": {
589 | "text/plain": [
590 | "2"
591 | ]
592 | },
593 | "execution_count": 19,
594 | "metadata": {},
595 | "output_type": "execute_result"
596 | }
597 | ],
598 | "source": [
599 | "a = np.array([[1,2,3], [7,8,9]])\n",
600 | "a.ndim"
601 | ]
602 | },
603 | {
604 | "cell_type": "markdown",
605 | "metadata": {},
606 | "source": [
607 | "* **shape属性**,数组对象的尺度,对于矩阵,即n行m列,shape是一个元组(tuple)"
608 | ]
609 | },
610 | {
611 | "cell_type": "code",
612 | "execution_count": 20,
613 | "metadata": {
614 | "collapsed": false
615 | },
616 | "outputs": [
617 | {
618 | "data": {
619 | "text/plain": [
620 | "(2, 3)"
621 | ]
622 | },
623 | "execution_count": 20,
624 | "metadata": {},
625 | "output_type": "execute_result"
626 | }
627 | ],
628 | "source": [
629 | "a.shape"
630 | ]
631 | },
632 | {
633 | "cell_type": "markdown",
634 | "metadata": {},
635 | "source": [
636 | "* **size属性**用来保存元素的数量,相当于shape中nXm的值"
637 | ]
638 | },
639 | {
640 | "cell_type": "code",
641 | "execution_count": 21,
642 | "metadata": {
643 | "collapsed": false
644 | },
645 | "outputs": [
646 | {
647 | "data": {
648 | "text/plain": [
649 | "6"
650 | ]
651 | },
652 | "execution_count": 21,
653 | "metadata": {},
654 | "output_type": "execute_result"
655 | }
656 | ],
657 | "source": [
658 | "a.size"
659 | ]
660 | },
661 | {
662 | "cell_type": "markdown",
663 | "metadata": {},
664 | "source": [
665 | "* **itemsize**属性返回数组中各个元素所占用的字节数大小。"
666 | ]
667 | },
668 | {
669 | "cell_type": "code",
670 | "execution_count": 22,
671 | "metadata": {
672 | "collapsed": false
673 | },
674 | "outputs": [
675 | {
676 | "data": {
677 | "text/plain": [
678 | "4"
679 | ]
680 | },
681 | "execution_count": 22,
682 | "metadata": {},
683 | "output_type": "execute_result"
684 | }
685 | ],
686 | "source": [
687 | "a.itemsize"
688 | ]
689 | },
690 | {
691 | "cell_type": "markdown",
692 | "metadata": {},
693 | "source": [
694 | "* **nbytes属性**,如果想知道整个数组所需的字节数量,可以使用nbytes属性。其值等于数组的size属性值乘以itemsize属性值。"
695 | ]
696 | },
697 | {
698 | "cell_type": "code",
699 | "execution_count": 23,
700 | "metadata": {
701 | "collapsed": false
702 | },
703 | "outputs": [
704 | {
705 | "data": {
706 | "text/plain": [
707 | "24"
708 | ]
709 | },
710 | "execution_count": 23,
711 | "metadata": {},
712 | "output_type": "execute_result"
713 | }
714 | ],
715 | "source": [
716 | "a.nbytes"
717 | ]
718 | },
719 | {
720 | "cell_type": "code",
721 | "execution_count": 24,
722 | "metadata": {
723 | "collapsed": false
724 | },
725 | "outputs": [
726 | {
727 | "data": {
728 | "text/plain": [
729 | "24"
730 | ]
731 | },
732 | "execution_count": 24,
733 | "metadata": {},
734 | "output_type": "execute_result"
735 | }
736 | ],
737 | "source": [
738 | "a.size*a.itemsize"
739 | ]
740 | },
741 | {
742 | "cell_type": "markdown",
743 | "metadata": {},
744 | "source": [
745 | "* **T属性**,数组转置"
746 | ]
747 | },
748 | {
749 | "cell_type": "code",
750 | "execution_count": 25,
751 | "metadata": {
752 | "collapsed": false
753 | },
754 | "outputs": [
755 | {
756 | "data": {
757 | "text/plain": [
758 | "array([[ 0, 1, 2, 3, 4, 5],\n",
759 | " [ 6, 7, 8, 9, 10, 11],\n",
760 | " [12, 13, 14, 15, 16, 17],\n",
761 | " [18, 19, 20, 21, 22, 23]])"
762 | ]
763 | },
764 | "execution_count": 25,
765 | "metadata": {},
766 | "output_type": "execute_result"
767 | }
768 | ],
769 | "source": [
770 | "b = np.arange(24).reshape(4,6)\n",
771 | "b"
772 | ]
773 | },
774 | {
775 | "cell_type": "code",
776 | "execution_count": 26,
777 | "metadata": {
778 | "collapsed": false
779 | },
780 | "outputs": [
781 | {
782 | "data": {
783 | "text/plain": [
784 | "array([[ 0, 6, 12, 18],\n",
785 | " [ 1, 7, 13, 19],\n",
786 | " [ 2, 8, 14, 20],\n",
787 | " [ 3, 9, 15, 21],\n",
788 | " [ 4, 10, 16, 22],\n",
789 | " [ 5, 11, 17, 23]])"
790 | ]
791 | },
792 | "execution_count": 26,
793 | "metadata": {},
794 | "output_type": "execute_result"
795 | }
796 | ],
797 | "source": [
798 | "b.T"
799 | ]
800 | },
801 | {
802 | "cell_type": "markdown",
803 | "metadata": {},
804 | "source": [
805 | "* **复数的实部和虚部属性,real和imag属性**"
806 | ]
807 | },
808 | {
809 | "cell_type": "code",
810 | "execution_count": 27,
811 | "metadata": {
812 | "collapsed": false
813 | },
814 | "outputs": [
815 | {
816 | "data": {
817 | "text/plain": [
818 | "array([ 1.2+2.j, 2.0+3.j])"
819 | ]
820 | },
821 | "execution_count": 27,
822 | "metadata": {},
823 | "output_type": "execute_result"
824 | }
825 | ],
826 | "source": [
827 | "d = np.array([1.2+2j, 2+3j])\n",
828 | "d"
829 | ]
830 | },
831 | {
832 | "cell_type": "markdown",
833 | "metadata": {},
834 | "source": [
835 | "real属性返回数组的实部"
836 | ]
837 | },
838 | {
839 | "cell_type": "code",
840 | "execution_count": 28,
841 | "metadata": {
842 | "collapsed": false,
843 | "scrolled": true
844 | },
845 | "outputs": [
846 | {
847 | "data": {
848 | "text/plain": [
849 | "array([ 1.2, 2. ])"
850 | ]
851 | },
852 | "execution_count": 28,
853 | "metadata": {},
854 | "output_type": "execute_result"
855 | }
856 | ],
857 | "source": [
858 | "d.real"
859 | ]
860 | },
861 | {
862 | "cell_type": "markdown",
863 | "metadata": {},
864 | "source": [
865 | "imag属性返回数组的虚部"
866 | ]
867 | },
868 | {
869 | "cell_type": "code",
870 | "execution_count": 29,
871 | "metadata": {
872 | "collapsed": false
873 | },
874 | "outputs": [
875 | {
876 | "data": {
877 | "text/plain": [
878 | "array([ 2., 3.])"
879 | ]
880 | },
881 | "execution_count": 29,
882 | "metadata": {},
883 | "output_type": "execute_result"
884 | }
885 | ],
886 | "source": [
887 | "d.imag"
888 | ]
889 | },
890 | {
891 | "cell_type": "markdown",
892 | "metadata": {},
893 | "source": [
894 | "* **flat属性**,返回一个numpy.flatiter对象,即可迭代的对象。"
895 | ]
896 | },
897 | {
898 | "cell_type": "code",
899 | "execution_count": 30,
900 | "metadata": {
901 | "collapsed": false
902 | },
903 | "outputs": [
904 | {
905 | "data": {
906 | "text/plain": [
907 | "array([[0, 1, 2],\n",
908 | " [3, 4, 5]])"
909 | ]
910 | },
911 | "execution_count": 30,
912 | "metadata": {},
913 | "output_type": "execute_result"
914 | }
915 | ],
916 | "source": [
917 | "e = np.arange(6).reshape(2,3)\n",
918 | "e"
919 | ]
920 | },
921 | {
922 | "cell_type": "code",
923 | "execution_count": 31,
924 | "metadata": {
925 | "collapsed": false
926 | },
927 | "outputs": [
928 | {
929 | "data": {
930 | "text/plain": [
931 | ""
932 | ]
933 | },
934 | "execution_count": 31,
935 | "metadata": {},
936 | "output_type": "execute_result"
937 | }
938 | ],
939 | "source": [
940 | "f = e.flat\n",
941 | "f"
942 | ]
943 | },
944 | {
945 | "cell_type": "code",
946 | "execution_count": 32,
947 | "metadata": {
948 | "collapsed": false
949 | },
950 | "outputs": [
951 | {
952 | "name": "stdout",
953 | "output_type": "stream",
954 | "text": [
955 | "0\n",
956 | "1\n",
957 | "2\n",
958 | "3\n",
959 | "4\n",
960 | "5\n"
961 | ]
962 | }
963 | ],
964 | "source": [
965 | "for item in f:\n",
966 | " print(item)"
967 | ]
968 | },
969 | {
970 | "cell_type": "markdown",
971 | "metadata": {},
972 | "source": [
973 | "可通过位置进行索引,如下:"
974 | ]
975 | },
976 | {
977 | "cell_type": "code",
978 | "execution_count": 33,
979 | "metadata": {
980 | "collapsed": false
981 | },
982 | "outputs": [
983 | {
984 | "data": {
985 | "text/plain": [
986 | "2"
987 | ]
988 | },
989 | "execution_count": 33,
990 | "metadata": {},
991 | "output_type": "execute_result"
992 | }
993 | ],
994 | "source": [
995 | "f[2]"
996 | ]
997 | },
998 | {
999 | "cell_type": "code",
1000 | "execution_count": 34,
1001 | "metadata": {
1002 | "collapsed": false
1003 | },
1004 | "outputs": [
1005 | {
1006 | "data": {
1007 | "text/plain": [
1008 | "array([1, 4])"
1009 | ]
1010 | },
1011 | "execution_count": 34,
1012 | "metadata": {},
1013 | "output_type": "execute_result"
1014 | }
1015 | ],
1016 | "source": [
1017 | "f[[1,4]]"
1018 | ]
1019 | },
1020 | {
1021 | "cell_type": "markdown",
1022 | "metadata": {},
1023 | "source": [
1024 | "也可以进行赋值"
1025 | ]
1026 | },
1027 | {
1028 | "cell_type": "code",
1029 | "execution_count": 35,
1030 | "metadata": {
1031 | "collapsed": false
1032 | },
1033 | "outputs": [
1034 | {
1035 | "data": {
1036 | "text/plain": [
1037 | "array([[7, 7, 7],\n",
1038 | " [7, 7, 7]])"
1039 | ]
1040 | },
1041 | "execution_count": 35,
1042 | "metadata": {},
1043 | "output_type": "execute_result"
1044 | }
1045 | ],
1046 | "source": [
1047 | "e.flat=7\n",
1048 | "e"
1049 | ]
1050 | },
1051 | {
1052 | "cell_type": "code",
1053 | "execution_count": 36,
1054 | "metadata": {
1055 | "collapsed": false
1056 | },
1057 | "outputs": [
1058 | {
1059 | "data": {
1060 | "text/plain": [
1061 | "array([[7, 1, 7],\n",
1062 | " [7, 1, 7]])"
1063 | ]
1064 | },
1065 | "execution_count": 36,
1066 | "metadata": {},
1067 | "output_type": "execute_result"
1068 | }
1069 | ],
1070 | "source": [
1071 | "e.flat[[1,4]]=1\n",
1072 | "e"
1073 | ]
1074 | },
1075 | {
1076 | "cell_type": "markdown",
1077 | "metadata": {},
1078 | "source": [
1079 | "**下图是对ndarray各种属性的一个小结**"
1080 | ]
1081 | },
1082 | {
1083 | "cell_type": "markdown",
1084 | "metadata": {},
1085 | "source": [
1086 | "# ndarray数组的切片和索引"
1087 | ]
1088 | },
1089 | {
1090 | "cell_type": "markdown",
1091 | "metadata": {},
1092 | "source": [
1093 | "* **一维数组**\n",
1094 | "\n",
1095 | "一维数组的切片和索引与python的list索引类似。"
1096 | ]
1097 | },
1098 | {
1099 | "cell_type": "code",
1100 | "execution_count": 37,
1101 | "metadata": {
1102 | "collapsed": false
1103 | },
1104 | "outputs": [
1105 | {
1106 | "data": {
1107 | "text/plain": [
1108 | "array([0, 1, 2, 3, 4, 5, 6])"
1109 | ]
1110 | },
1111 | "execution_count": 37,
1112 | "metadata": {},
1113 | "output_type": "execute_result"
1114 | }
1115 | ],
1116 | "source": [
1117 | "a = np.arange(7)\n",
1118 | "a"
1119 | ]
1120 | },
1121 | {
1122 | "cell_type": "code",
1123 | "execution_count": 38,
1124 | "metadata": {
1125 | "collapsed": false
1126 | },
1127 | "outputs": [
1128 | {
1129 | "data": {
1130 | "text/plain": [
1131 | "array([1, 2, 3])"
1132 | ]
1133 | },
1134 | "execution_count": 38,
1135 | "metadata": {},
1136 | "output_type": "execute_result"
1137 | }
1138 | ],
1139 | "source": [
1140 | "a[1:4]"
1141 | ]
1142 | },
1143 | {
1144 | "cell_type": "code",
1145 | "execution_count": 39,
1146 | "metadata": {
1147 | "collapsed": false
1148 | },
1149 | "outputs": [
1150 | {
1151 | "data": {
1152 | "text/plain": [
1153 | "array([0, 2, 4])"
1154 | ]
1155 | },
1156 | "execution_count": 39,
1157 | "metadata": {},
1158 | "output_type": "execute_result"
1159 | }
1160 | ],
1161 | "source": [
1162 | "# 每间隔2个取一个数\n",
1163 | "a[ : 6: 2]"
1164 | ]
1165 | },
1166 | {
1167 | "cell_type": "markdown",
1168 | "metadata": {},
1169 | "source": [
1170 | "* **二维数组的切片和索引**,如下所示:"
1171 | ]
1172 | },
1173 | {
1174 | "cell_type": "code",
1175 | "execution_count": 40,
1176 | "metadata": {
1177 | "collapsed": false
1178 | },
1179 | "outputs": [
1180 | {
1181 | "data": {
1182 | "text/plain": [
1183 | "array([[ 0, 1, 2, 3],\n",
1184 | " [ 4, 5, 6, 7],\n",
1185 | " [ 8, 9, 10, 11]])"
1186 | ]
1187 | },
1188 | "execution_count": 40,
1189 | "metadata": {},
1190 | "output_type": "execute_result"
1191 | }
1192 | ],
1193 | "source": [
1194 | "b = np.arange(12).reshape(3,4)\n",
1195 | "b"
1196 | ]
1197 | },
1198 | {
1199 | "cell_type": "code",
1200 | "execution_count": 41,
1201 | "metadata": {
1202 | "collapsed": false
1203 | },
1204 | "outputs": [
1205 | {
1206 | "data": {
1207 | "text/plain": [
1208 | "array([[0, 1],\n",
1209 | " [4, 5],\n",
1210 | " [8, 9]])"
1211 | ]
1212 | },
1213 | "execution_count": 41,
1214 | "metadata": {},
1215 | "output_type": "execute_result"
1216 | }
1217 | ],
1218 | "source": [
1219 | "b[0:3,0:2]"
1220 | ]
1221 | },
1222 | {
1223 | "cell_type": "markdown",
1224 | "metadata": {},
1225 | "source": [
1226 | "# 处理数组形状"
1227 | ]
1228 | },
1229 | {
1230 | "cell_type": "markdown",
1231 | "metadata": {},
1232 | "source": [
1233 | "## 形状转换"
1234 | ]
1235 | },
1236 | {
1237 | "cell_type": "markdown",
1238 | "metadata": {},
1239 | "source": [
1240 | "* **reshape()和resize()**"
1241 | ]
1242 | },
1243 | {
1244 | "cell_type": "code",
1245 | "execution_count": 45,
1246 | "metadata": {
1247 | "collapsed": false
1248 | },
1249 | "outputs": [
1250 | {
1251 | "data": {
1252 | "text/plain": [
1253 | "array([[ 0, 1, 2],\n",
1254 | " [ 3, 4, 5],\n",
1255 | " [ 6, 7, 8],\n",
1256 | " [ 9, 10, 11]])"
1257 | ]
1258 | },
1259 | "execution_count": 45,
1260 | "metadata": {},
1261 | "output_type": "execute_result"
1262 | }
1263 | ],
1264 | "source": [
1265 | "b.reshape(4,3)"
1266 | ]
1267 | },
1268 | {
1269 | "cell_type": "code",
1270 | "execution_count": 46,
1271 | "metadata": {
1272 | "collapsed": false
1273 | },
1274 | "outputs": [
1275 | {
1276 | "data": {
1277 | "text/plain": [
1278 | "array([[ 0, 1, 2, 3],\n",
1279 | " [ 4, 5, 6, 7],\n",
1280 | " [ 8, 9, 10, 11]])"
1281 | ]
1282 | },
1283 | "execution_count": 46,
1284 | "metadata": {},
1285 | "output_type": "execute_result"
1286 | }
1287 | ],
1288 | "source": [
1289 | "b"
1290 | ]
1291 | },
1292 | {
1293 | "cell_type": "code",
1294 | "execution_count": 47,
1295 | "metadata": {
1296 | "collapsed": false
1297 | },
1298 | "outputs": [
1299 | {
1300 | "data": {
1301 | "text/plain": [
1302 | "array([[ 0, 1, 2],\n",
1303 | " [ 3, 4, 5],\n",
1304 | " [ 6, 7, 8],\n",
1305 | " [ 9, 10, 11]])"
1306 | ]
1307 | },
1308 | "execution_count": 47,
1309 | "metadata": {},
1310 | "output_type": "execute_result"
1311 | }
1312 | ],
1313 | "source": [
1314 | "b.resize(4,3)\n",
1315 | "b"
1316 | ]
1317 | },
1318 | {
1319 | "cell_type": "markdown",
1320 | "metadata": {},
1321 | "source": [
1322 | "**函数resize()的作用跟reshape()类似,但是会改变所作用的数组,相当于有inplace=True的效果**"
1323 | ]
1324 | },
1325 | {
1326 | "cell_type": "markdown",
1327 | "metadata": {
1328 | "collapsed": true
1329 | },
1330 | "source": [
1331 | "* **ravel()和flatten()**,将多维数组转换成一维数组,如下:"
1332 | ]
1333 | },
1334 | {
1335 | "cell_type": "code",
1336 | "execution_count": 48,
1337 | "metadata": {
1338 | "collapsed": false
1339 | },
1340 | "outputs": [
1341 | {
1342 | "data": {
1343 | "text/plain": [
1344 | "array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])"
1345 | ]
1346 | },
1347 | "execution_count": 48,
1348 | "metadata": {},
1349 | "output_type": "execute_result"
1350 | }
1351 | ],
1352 | "source": [
1353 | "b.ravel()"
1354 | ]
1355 | },
1356 | {
1357 | "cell_type": "code",
1358 | "execution_count": 49,
1359 | "metadata": {
1360 | "collapsed": false
1361 | },
1362 | "outputs": [
1363 | {
1364 | "data": {
1365 | "text/plain": [
1366 | "array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])"
1367 | ]
1368 | },
1369 | "execution_count": 49,
1370 | "metadata": {},
1371 | "output_type": "execute_result"
1372 | }
1373 | ],
1374 | "source": [
1375 | "b.flatten()"
1376 | ]
1377 | },
1378 | {
1379 | "cell_type": "code",
1380 | "execution_count": 52,
1381 | "metadata": {
1382 | "collapsed": false
1383 | },
1384 | "outputs": [
1385 | {
1386 | "data": {
1387 | "text/plain": [
1388 | "array([[ 0, 1, 2],\n",
1389 | " [ 3, 4, 5],\n",
1390 | " [ 6, 7, 8],\n",
1391 | " [ 9, 10, 11]])"
1392 | ]
1393 | },
1394 | "execution_count": 52,
1395 | "metadata": {},
1396 | "output_type": "execute_result"
1397 | }
1398 | ],
1399 | "source": [
1400 | "b"
1401 | ]
1402 | },
1403 | {
1404 | "cell_type": "markdown",
1405 | "metadata": {},
1406 | "source": [
1407 | "**两者的区别在于返回拷贝(copy)还是返回视图(view)**,flatten()返回一份拷贝,需要分配新的内存空间,对拷贝所做的修改不会影响原始矩阵,而ravel()返回的是视图(view),会影响原始矩阵。\n",
1408 | "\n",
1409 | "参考如下代码:"
1410 | ]
1411 | },
1412 | {
1413 | "cell_type": "code",
1414 | "execution_count": 53,
1415 | "metadata": {
1416 | "collapsed": false
1417 | },
1418 | "outputs": [
1419 | {
1420 | "data": {
1421 | "text/plain": [
1422 | "array([[ 0, 1, 2],\n",
1423 | " [ 3, 4, 5],\n",
1424 | " [ 6, 7, 8],\n",
1425 | " [ 9, 10, 11]])"
1426 | ]
1427 | },
1428 | "execution_count": 53,
1429 | "metadata": {},
1430 | "output_type": "execute_result"
1431 | }
1432 | ],
1433 | "source": [
1434 | "# flatten()返回的是拷贝,不影响原始数组\n",
1435 | "# 即数组“b”没有发生变化\n",
1436 | "b.flatten()[2]=20\n",
1437 | "b"
1438 | ]
1439 | },
1440 | {
1441 | "cell_type": "code",
1442 | "execution_count": 54,
1443 | "metadata": {
1444 | "collapsed": false
1445 | },
1446 | "outputs": [
1447 | {
1448 | "data": {
1449 | "text/plain": [
1450 | "array([[ 0, 1, 20],\n",
1451 | " [ 3, 4, 5],\n",
1452 | " [ 6, 7, 8],\n",
1453 | " [ 9, 10, 11]])"
1454 | ]
1455 | },
1456 | "execution_count": 54,
1457 | "metadata": {},
1458 | "output_type": "execute_result"
1459 | }
1460 | ],
1461 | "source": [
1462 | "# ravel()返回的是视图,会影响原始数组\n",
1463 | "# 即数组“b”会发生变化\n",
1464 | "b.ravel()[2]=20\n",
1465 | "b"
1466 | ]
1467 | },
1468 | {
1469 | "cell_type": "markdown",
1470 | "metadata": {},
1471 | "source": [
1472 | "* **用tuple指定数组的形状**,如下:"
1473 | ]
1474 | },
1475 | {
1476 | "cell_type": "code",
1477 | "execution_count": 55,
1478 | "metadata": {
1479 | "collapsed": false
1480 | },
1481 | "outputs": [
1482 | {
1483 | "data": {
1484 | "text/plain": [
1485 | "array([[ 0, 1, 20, 3, 4, 5],\n",
1486 | " [ 6, 7, 8, 9, 10, 11]])"
1487 | ]
1488 | },
1489 | "execution_count": 55,
1490 | "metadata": {},
1491 | "output_type": "execute_result"
1492 | }
1493 | ],
1494 | "source": [
1495 | "b.shape=(2,6)\n",
1496 | "b"
1497 | ]
1498 | },
1499 | {
1500 | "cell_type": "markdown",
1501 | "metadata": {},
1502 | "source": [
1503 | "* **转置**\n",
1504 | "\n",
1505 | "前面描述了数组转置的属性(T),也可以通过transpose()函数来实现"
1506 | ]
1507 | },
1508 | {
1509 | "cell_type": "code",
1510 | "execution_count": 56,
1511 | "metadata": {
1512 | "collapsed": false
1513 | },
1514 | "outputs": [
1515 | {
1516 | "data": {
1517 | "text/plain": [
1518 | "array([[ 0, 6],\n",
1519 | " [ 1, 7],\n",
1520 | " [20, 8],\n",
1521 | " [ 3, 9],\n",
1522 | " [ 4, 10],\n",
1523 | " [ 5, 11]])"
1524 | ]
1525 | },
1526 | "execution_count": 56,
1527 | "metadata": {},
1528 | "output_type": "execute_result"
1529 | }
1530 | ],
1531 | "source": [
1532 | "b.transpose()"
1533 | ]
1534 | },
1535 | {
1536 | "cell_type": "markdown",
1537 | "metadata": {},
1538 | "source": [
1539 | "## 堆叠数组"
1540 | ]
1541 | },
1542 | {
1543 | "cell_type": "code",
1544 | "execution_count": 57,
1545 | "metadata": {
1546 | "collapsed": false
1547 | },
1548 | "outputs": [
1549 | {
1550 | "data": {
1551 | "text/plain": [
1552 | "array([[ 0, 1, 20, 3, 4, 5],\n",
1553 | " [ 6, 7, 8, 9, 10, 11]])"
1554 | ]
1555 | },
1556 | "execution_count": 57,
1557 | "metadata": {},
1558 | "output_type": "execute_result"
1559 | }
1560 | ],
1561 | "source": [
1562 | "b"
1563 | ]
1564 | },
1565 | {
1566 | "cell_type": "code",
1567 | "execution_count": 58,
1568 | "metadata": {
1569 | "collapsed": false
1570 | },
1571 | "outputs": [
1572 | {
1573 | "data": {
1574 | "text/plain": [
1575 | "array([[ 0, 2, 40, 6, 8, 10],\n",
1576 | " [12, 14, 16, 18, 20, 22]])"
1577 | ]
1578 | },
1579 | "execution_count": 58,
1580 | "metadata": {},
1581 | "output_type": "execute_result"
1582 | }
1583 | ],
1584 | "source": [
1585 | "c = b*2\n",
1586 | "c"
1587 | ]
1588 | },
1589 | {
1590 | "cell_type": "markdown",
1591 | "metadata": {},
1592 | "source": [
1593 | "* **水平叠加**\n",
1594 | "\n",
1595 | "hstack()"
1596 | ]
1597 | },
1598 | {
1599 | "cell_type": "code",
1600 | "execution_count": 60,
1601 | "metadata": {
1602 | "collapsed": false
1603 | },
1604 | "outputs": [
1605 | {
1606 | "data": {
1607 | "text/plain": [
1608 | "array([[ 0, 1, 20, 3, 4, 5, 0, 2, 40, 6, 8, 10],\n",
1609 | " [ 6, 7, 8, 9, 10, 11, 12, 14, 16, 18, 20, 22]])"
1610 | ]
1611 | },
1612 | "execution_count": 60,
1613 | "metadata": {},
1614 | "output_type": "execute_result"
1615 | }
1616 | ],
1617 | "source": [
1618 | "np.hstack((b,c))"
1619 | ]
1620 | },
1621 | {
1622 | "cell_type": "markdown",
1623 | "metadata": {},
1624 | "source": [
1625 | "column_stack()函数以列方式对数组进行叠加,功能类似hstack()"
1626 | ]
1627 | },
1628 | {
1629 | "cell_type": "code",
1630 | "execution_count": 68,
1631 | "metadata": {
1632 | "collapsed": false
1633 | },
1634 | "outputs": [
1635 | {
1636 | "data": {
1637 | "text/plain": [
1638 | "array([[ 0, 1, 20, 3, 4, 5, 0, 2, 40, 6, 8, 10],\n",
1639 | " [ 6, 7, 8, 9, 10, 11, 12, 14, 16, 18, 20, 22]])"
1640 | ]
1641 | },
1642 | "execution_count": 68,
1643 | "metadata": {},
1644 | "output_type": "execute_result"
1645 | }
1646 | ],
1647 | "source": [
1648 | "np.column_stack((b,c))"
1649 | ]
1650 | },
1651 | {
1652 | "cell_type": "markdown",
1653 | "metadata": {},
1654 | "source": [
1655 | "* **垂直叠加**\n",
1656 | "\n",
1657 | "vstack()"
1658 | ]
1659 | },
1660 | {
1661 | "cell_type": "code",
1662 | "execution_count": 62,
1663 | "metadata": {
1664 | "collapsed": false
1665 | },
1666 | "outputs": [
1667 | {
1668 | "data": {
1669 | "text/plain": [
1670 | "array([[ 0, 1, 20, 3, 4, 5],\n",
1671 | " [ 6, 7, 8, 9, 10, 11],\n",
1672 | " [ 0, 2, 40, 6, 8, 10],\n",
1673 | " [12, 14, 16, 18, 20, 22]])"
1674 | ]
1675 | },
1676 | "execution_count": 62,
1677 | "metadata": {},
1678 | "output_type": "execute_result"
1679 | }
1680 | ],
1681 | "source": [
1682 | "np.vstack((b,c))"
1683 | ]
1684 | },
1685 | {
1686 | "cell_type": "markdown",
1687 | "metadata": {},
1688 | "source": [
1689 | "row_stack()函数以行方式对数组进行叠加,功能类似vstack()"
1690 | ]
1691 | },
1692 | {
1693 | "cell_type": "code",
1694 | "execution_count": 69,
1695 | "metadata": {
1696 | "collapsed": false
1697 | },
1698 | "outputs": [
1699 | {
1700 | "data": {
1701 | "text/plain": [
1702 | "array([[ 0, 1, 20, 3, 4, 5],\n",
1703 | " [ 6, 7, 8, 9, 10, 11],\n",
1704 | " [ 0, 2, 40, 6, 8, 10],\n",
1705 | " [12, 14, 16, 18, 20, 22]])"
1706 | ]
1707 | },
1708 | "execution_count": 69,
1709 | "metadata": {},
1710 | "output_type": "execute_result"
1711 | }
1712 | ],
1713 | "source": [
1714 | "np.row_stack((b,c))"
1715 | ]
1716 | },
1717 | {
1718 | "cell_type": "markdown",
1719 | "metadata": {},
1720 | "source": [
1721 | "* **concatenate()方法,通过设置axis的值来设置叠加方向**\n",
1722 | "\n",
1723 | "axis=1时,沿水平方向叠加\n",
1724 | "\n",
1725 | "axis=0时,沿垂直方向叠加\n"
1726 | ]
1727 | },
1728 | {
1729 | "cell_type": "code",
1730 | "execution_count": 61,
1731 | "metadata": {
1732 | "collapsed": false
1733 | },
1734 | "outputs": [
1735 | {
1736 | "data": {
1737 | "text/plain": [
1738 | "array([[ 0, 1, 20, 3, 4, 5, 0, 2, 40, 6, 8, 10],\n",
1739 | " [ 6, 7, 8, 9, 10, 11, 12, 14, 16, 18, 20, 22]])"
1740 | ]
1741 | },
1742 | "execution_count": 61,
1743 | "metadata": {},
1744 | "output_type": "execute_result"
1745 | }
1746 | ],
1747 | "source": [
1748 | "np.concatenate((b,c),axis=1)"
1749 | ]
1750 | },
1751 | {
1752 | "cell_type": "code",
1753 | "execution_count": 63,
1754 | "metadata": {
1755 | "collapsed": false
1756 | },
1757 | "outputs": [
1758 | {
1759 | "data": {
1760 | "text/plain": [
1761 | "array([[ 0, 1, 20, 3, 4, 5],\n",
1762 | " [ 6, 7, 8, 9, 10, 11],\n",
1763 | " [ 0, 2, 40, 6, 8, 10],\n",
1764 | " [12, 14, 16, 18, 20, 22]])"
1765 | ]
1766 | },
1767 | "execution_count": 63,
1768 | "metadata": {},
1769 | "output_type": "execute_result"
1770 | }
1771 | ],
1772 | "source": [
1773 | "np.concatenate((b,c),axis=0)"
1774 | ]
1775 | },
1776 | {
1777 | "cell_type": "markdown",
1778 | "metadata": {},
1779 | "source": [
1780 | "由于针对数组的轴为0或1的方向经常会混淆,通过示意图,或许可以更好的理解。\n",
1781 | "\n",
1782 | "关于数组的轴方向示意图,以及叠加的示意图,如下:"
1783 | ]
1784 | },
1785 | {
1786 | "cell_type": "markdown",
1787 | "metadata": {},
1788 | "source": [
1789 | "**深度叠加**\n",
1790 | "\n",
1791 | "这个有点烧脑,举个例子如下,自己可以体会下:"
1792 | ]
1793 | },
1794 | {
1795 | "cell_type": "code",
1796 | "execution_count": 67,
1797 | "metadata": {
1798 | "collapsed": false
1799 | },
1800 | "outputs": [
1801 | {
1802 | "name": "stdout",
1803 | "output_type": "stream",
1804 | "text": [
1805 | "(2, 6, 2)\n"
1806 | ]
1807 | },
1808 | {
1809 | "data": {
1810 | "text/plain": [
1811 | "array([[[ 0, 0],\n",
1812 | " [ 1, 2],\n",
1813 | " [20, 40],\n",
1814 | " [ 3, 6],\n",
1815 | " [ 4, 8],\n",
1816 | " [ 5, 10]],\n",
1817 | "\n",
1818 | " [[ 6, 12],\n",
1819 | " [ 7, 14],\n",
1820 | " [ 8, 16],\n",
1821 | " [ 9, 18],\n",
1822 | " [10, 20],\n",
1823 | " [11, 22]]])"
1824 | ]
1825 | },
1826 | "execution_count": 67,
1827 | "metadata": {},
1828 | "output_type": "execute_result"
1829 | }
1830 | ],
1831 | "source": [
1832 | "arr_dstack = np.dstack((b,c))\n",
1833 | "print(arr_dstack.shape)\n",
1834 | "arr_dstack"
1835 | ]
1836 | },
1837 | {
1838 | "cell_type": "markdown",
1839 | "metadata": {},
1840 | "source": [
1841 | "叠加前,b和c均是shape为(2,6)的二维数组,叠加后,arr_dstack是shape为(2,6,2)的三维数组。\n",
1842 | "\n",
1843 | "**深度叠加的示意图如下:**"
1844 | ]
1845 | },
1846 | {
1847 | "cell_type": "code",
1848 | "execution_count": null,
1849 | "metadata": {
1850 | "collapsed": true
1851 | },
1852 | "outputs": [],
1853 | "source": []
1854 | },
1855 | {
1856 | "cell_type": "markdown",
1857 | "metadata": {},
1858 | "source": [
1859 | "## 数组的拆分"
1860 | ]
1861 | },
1862 | {
1863 | "cell_type": "markdown",
1864 | "metadata": {},
1865 | "source": [
1866 | "跟数组的叠加类似,数组的拆分可以分为横向拆分、纵向拆分以及深度拆分。\n",
1867 | "\n",
1868 | "涉及的函数为 hsplit()、vsplit()、dsplit() 以及split()"
1869 | ]
1870 | },
1871 | {
1872 | "cell_type": "code",
1873 | "execution_count": 70,
1874 | "metadata": {
1875 | "collapsed": false
1876 | },
1877 | "outputs": [
1878 | {
1879 | "data": {
1880 | "text/plain": [
1881 | "array([[ 0, 1, 20, 3, 4, 5],\n",
1882 | " [ 6, 7, 8, 9, 10, 11]])"
1883 | ]
1884 | },
1885 | "execution_count": 70,
1886 | "metadata": {},
1887 | "output_type": "execute_result"
1888 | }
1889 | ],
1890 | "source": [
1891 | "b"
1892 | ]
1893 | },
1894 | {
1895 | "cell_type": "markdown",
1896 | "metadata": {},
1897 | "source": [
1898 | "* **沿横向轴拆分(axis=1)**"
1899 | ]
1900 | },
1901 | {
1902 | "cell_type": "code",
1903 | "execution_count": 71,
1904 | "metadata": {
1905 | "collapsed": false
1906 | },
1907 | "outputs": [
1908 | {
1909 | "data": {
1910 | "text/plain": [
1911 | "[array([[ 0, 1, 20],\n",
1912 | " [ 6, 7, 8]]), array([[ 3, 4, 5],\n",
1913 | " [ 9, 10, 11]])]"
1914 | ]
1915 | },
1916 | "execution_count": 71,
1917 | "metadata": {},
1918 | "output_type": "execute_result"
1919 | }
1920 | ],
1921 | "source": [
1922 | "np.hsplit(b, 2)"
1923 | ]
1924 | },
1925 | {
1926 | "cell_type": "code",
1927 | "execution_count": 73,
1928 | "metadata": {
1929 | "collapsed": false
1930 | },
1931 | "outputs": [
1932 | {
1933 | "data": {
1934 | "text/plain": [
1935 | "[array([[ 0, 1, 20],\n",
1936 | " [ 6, 7, 8]]), array([[ 3, 4, 5],\n",
1937 | " [ 9, 10, 11]])]"
1938 | ]
1939 | },
1940 | "execution_count": 73,
1941 | "metadata": {},
1942 | "output_type": "execute_result"
1943 | }
1944 | ],
1945 | "source": [
1946 | "np.split(b,2, axis=1)"
1947 | ]
1948 | },
1949 | {
1950 | "cell_type": "code",
1951 | "execution_count": null,
1952 | "metadata": {
1953 | "collapsed": true
1954 | },
1955 | "outputs": [],
1956 | "source": []
1957 | },
1958 | {
1959 | "cell_type": "markdown",
1960 | "metadata": {},
1961 | "source": [
1962 | "* **沿纵向轴拆分(axis=0)**"
1963 | ]
1964 | },
1965 | {
1966 | "cell_type": "code",
1967 | "execution_count": 72,
1968 | "metadata": {
1969 | "collapsed": false
1970 | },
1971 | "outputs": [
1972 | {
1973 | "data": {
1974 | "text/plain": [
1975 | "[array([[ 0, 1, 20, 3, 4, 5]]), array([[ 6, 7, 8, 9, 10, 11]])]"
1976 | ]
1977 | },
1978 | "execution_count": 72,
1979 | "metadata": {},
1980 | "output_type": "execute_result"
1981 | }
1982 | ],
1983 | "source": [
1984 | "np.vsplit(b, 2)"
1985 | ]
1986 | },
1987 | {
1988 | "cell_type": "code",
1989 | "execution_count": 74,
1990 | "metadata": {
1991 | "collapsed": false
1992 | },
1993 | "outputs": [
1994 | {
1995 | "data": {
1996 | "text/plain": [
1997 | "[array([[ 0, 1, 20, 3, 4, 5]]), array([[ 6, 7, 8, 9, 10, 11]])]"
1998 | ]
1999 | },
2000 | "execution_count": 74,
2001 | "metadata": {},
2002 | "output_type": "execute_result"
2003 | }
2004 | ],
2005 | "source": [
2006 | "np.split(b,2,axis=0)"
2007 | ]
2008 | },
2009 | {
2010 | "cell_type": "markdown",
2011 | "metadata": {},
2012 | "source": [
2013 | "* **深度拆分**"
2014 | ]
2015 | },
2016 | {
2017 | "cell_type": "code",
2018 | "execution_count": 75,
2019 | "metadata": {
2020 | "collapsed": false
2021 | },
2022 | "outputs": [
2023 | {
2024 | "data": {
2025 | "text/plain": [
2026 | "array([[[ 0, 0],\n",
2027 | " [ 1, 2],\n",
2028 | " [20, 40],\n",
2029 | " [ 3, 6],\n",
2030 | " [ 4, 8],\n",
2031 | " [ 5, 10]],\n",
2032 | "\n",
2033 | " [[ 6, 12],\n",
2034 | " [ 7, 14],\n",
2035 | " [ 8, 16],\n",
2036 | " [ 9, 18],\n",
2037 | " [10, 20],\n",
2038 | " [11, 22]]])"
2039 | ]
2040 | },
2041 | "execution_count": 75,
2042 | "metadata": {},
2043 | "output_type": "execute_result"
2044 | }
2045 | ],
2046 | "source": [
2047 | "arr_dstack"
2048 | ]
2049 | },
2050 | {
2051 | "cell_type": "code",
2052 | "execution_count": 77,
2053 | "metadata": {
2054 | "collapsed": false
2055 | },
2056 | "outputs": [
2057 | {
2058 | "data": {
2059 | "text/plain": [
2060 | "[array([[[ 0],\n",
2061 | " [ 1],\n",
2062 | " [20],\n",
2063 | " [ 3],\n",
2064 | " [ 4],\n",
2065 | " [ 5]],\n",
2066 | " \n",
2067 | " [[ 6],\n",
2068 | " [ 7],\n",
2069 | " [ 8],\n",
2070 | " [ 9],\n",
2071 | " [10],\n",
2072 | " [11]]]), array([[[ 0],\n",
2073 | " [ 2],\n",
2074 | " [40],\n",
2075 | " [ 6],\n",
2076 | " [ 8],\n",
2077 | " [10]],\n",
2078 | " \n",
2079 | " [[12],\n",
2080 | " [14],\n",
2081 | " [16],\n",
2082 | " [18],\n",
2083 | " [20],\n",
2084 | " [22]]])]"
2085 | ]
2086 | },
2087 | "execution_count": 77,
2088 | "metadata": {},
2089 | "output_type": "execute_result"
2090 | }
2091 | ],
2092 | "source": [
2093 | "np.dsplit(arr_dstack,2)"
2094 | ]
2095 | },
2096 | {
2097 | "cell_type": "markdown",
2098 | "metadata": {},
2099 | "source": [
2100 | "拆分的结果是原来的三维数组拆分成为两个二维数组。\n",
2101 | "\n",
2102 | "这个烧脑的拆分过程可以自行分析下~~"
2103 | ]
2104 | },
2105 | {
2106 | "cell_type": "markdown",
2107 | "metadata": {},
2108 | "source": [
2109 | "# 数组的类型转换"
2110 | ]
2111 | },
2112 | {
2113 | "cell_type": "markdown",
2114 | "metadata": {},
2115 | "source": [
2116 | "* **数组转换成list,使用tolist()**"
2117 | ]
2118 | },
2119 | {
2120 | "cell_type": "code",
2121 | "execution_count": 91,
2122 | "metadata": {
2123 | "collapsed": false
2124 | },
2125 | "outputs": [
2126 | {
2127 | "data": {
2128 | "text/plain": [
2129 | "array([[ 0, 1, 20, 3, 4, 5],\n",
2130 | " [ 6, 7, 8, 9, 10, 11]])"
2131 | ]
2132 | },
2133 | "execution_count": 91,
2134 | "metadata": {},
2135 | "output_type": "execute_result"
2136 | }
2137 | ],
2138 | "source": [
2139 | "b"
2140 | ]
2141 | },
2142 | {
2143 | "cell_type": "code",
2144 | "execution_count": 92,
2145 | "metadata": {
2146 | "collapsed": false
2147 | },
2148 | "outputs": [
2149 | {
2150 | "data": {
2151 | "text/plain": [
2152 | "[[0, 1, 20, 3, 4, 5], [6, 7, 8, 9, 10, 11]]"
2153 | ]
2154 | },
2155 | "execution_count": 92,
2156 | "metadata": {},
2157 | "output_type": "execute_result"
2158 | }
2159 | ],
2160 | "source": [
2161 | "b.tolist()"
2162 | ]
2163 | },
2164 | {
2165 | "cell_type": "markdown",
2166 | "metadata": {},
2167 | "source": [
2168 | "* **转换成指定类型,astype()函数**"
2169 | ]
2170 | },
2171 | {
2172 | "cell_type": "code",
2173 | "execution_count": 93,
2174 | "metadata": {
2175 | "collapsed": false
2176 | },
2177 | "outputs": [
2178 | {
2179 | "data": {
2180 | "text/plain": [
2181 | "array([[ 0., 1., 20., 3., 4., 5.],\n",
2182 | " [ 6., 7., 8., 9., 10., 11.]])"
2183 | ]
2184 | },
2185 | "execution_count": 93,
2186 | "metadata": {},
2187 | "output_type": "execute_result"
2188 | }
2189 | ],
2190 | "source": [
2191 | "b.astype(float)"
2192 | ]
2193 | },
2194 | {
2195 | "cell_type": "code",
2196 | "execution_count": null,
2197 | "metadata": {
2198 | "collapsed": true
2199 | },
2200 | "outputs": [],
2201 | "source": []
2202 | },
2203 | {
2204 | "cell_type": "markdown",
2205 | "metadata": {
2206 | "collapsed": true
2207 | },
2208 | "source": [
2209 | "# numpy常用统计函数"
2210 | ]
2211 | },
2212 | {
2213 | "cell_type": "markdown",
2214 | "metadata": {},
2215 | "source": [
2216 | "常用的函数如下:\n",
2217 | "\n",
2218 | "请注意函数在使用时需要指定axis轴的方向,若不指定,默认统计整个数组。\n",
2219 | "\n",
2220 | "* np.sum(),返回求和\n",
2221 | "* np.mean(),返回均值\n",
2222 | "* np.max(),返回最大值\n",
2223 | "* np.min(),返回最小值\n",
2224 | "* np.ptp(),数组沿指定轴返回最大值减去最小值,即(max-min)\n",
2225 | "* np.std(),返回标准偏差(standard deviation)\n",
2226 | "* np.var(),返回方差(variance)\n",
2227 | "* np.cumsum(),返回累加值\n",
2228 | "* np.cumprod(),返回累乘积值"
2229 | ]
2230 | },
2231 | {
2232 | "cell_type": "code",
2233 | "execution_count": 94,
2234 | "metadata": {
2235 | "collapsed": false
2236 | },
2237 | "outputs": [
2238 | {
2239 | "data": {
2240 | "text/plain": [
2241 | "array([[ 0, 1, 20, 3, 4, 5],\n",
2242 | " [ 6, 7, 8, 9, 10, 11]])"
2243 | ]
2244 | },
2245 | "execution_count": 94,
2246 | "metadata": {},
2247 | "output_type": "execute_result"
2248 | }
2249 | ],
2250 | "source": [
2251 | "b"
2252 | ]
2253 | },
2254 | {
2255 | "cell_type": "code",
2256 | "execution_count": 97,
2257 | "metadata": {
2258 | "collapsed": false
2259 | },
2260 | "outputs": [
2261 | {
2262 | "data": {
2263 | "text/plain": [
2264 | "20"
2265 | ]
2266 | },
2267 | "execution_count": 97,
2268 | "metadata": {},
2269 | "output_type": "execute_result"
2270 | }
2271 | ],
2272 | "source": [
2273 | "np.max(b)"
2274 | ]
2275 | },
2276 | {
2277 | "cell_type": "code",
2278 | "execution_count": 98,
2279 | "metadata": {
2280 | "collapsed": false
2281 | },
2282 | "outputs": [
2283 | {
2284 | "data": {
2285 | "text/plain": [
2286 | "array([20, 11])"
2287 | ]
2288 | },
2289 | "execution_count": 98,
2290 | "metadata": {},
2291 | "output_type": "execute_result"
2292 | }
2293 | ],
2294 | "source": [
2295 | "# 沿axis=1轴方向统计\n",
2296 | "np.max(b,axis=1)"
2297 | ]
2298 | },
2299 | {
2300 | "cell_type": "code",
2301 | "execution_count": 99,
2302 | "metadata": {
2303 | "collapsed": false
2304 | },
2305 | "outputs": [
2306 | {
2307 | "data": {
2308 | "text/plain": [
2309 | "array([ 6, 7, 20, 9, 10, 11])"
2310 | ]
2311 | },
2312 | "execution_count": 99,
2313 | "metadata": {},
2314 | "output_type": "execute_result"
2315 | }
2316 | ],
2317 | "source": [
2318 | "# 沿axis=0轴方向统计\n",
2319 | "np.max(b,axis=0)"
2320 | ]
2321 | },
2322 | {
2323 | "cell_type": "code",
2324 | "execution_count": 105,
2325 | "metadata": {
2326 | "collapsed": false
2327 | },
2328 | "outputs": [
2329 | {
2330 | "data": {
2331 | "text/plain": [
2332 | "0"
2333 | ]
2334 | },
2335 | "execution_count": 105,
2336 | "metadata": {},
2337 | "output_type": "execute_result"
2338 | }
2339 | ],
2340 | "source": [
2341 | "np.min(b)"
2342 | ]
2343 | },
2344 | {
2345 | "cell_type": "markdown",
2346 | "metadata": {},
2347 | "source": [
2348 | "* **np.ptp()**,返回整个数组的最大值减去最小值,如下:"
2349 | ]
2350 | },
2351 | {
2352 | "cell_type": "code",
2353 | "execution_count": 104,
2354 | "metadata": {
2355 | "collapsed": false
2356 | },
2357 | "outputs": [
2358 | {
2359 | "data": {
2360 | "text/plain": [
2361 | "20"
2362 | ]
2363 | },
2364 | "execution_count": 104,
2365 | "metadata": {},
2366 | "output_type": "execute_result"
2367 | }
2368 | ],
2369 | "source": [
2370 | "np.ptp(b)"
2371 | ]
2372 | },
2373 | {
2374 | "cell_type": "code",
2375 | "execution_count": 102,
2376 | "metadata": {
2377 | "collapsed": false
2378 | },
2379 | "outputs": [
2380 | {
2381 | "data": {
2382 | "text/plain": [
2383 | "array([ 6, 6, 12, 6, 6, 6])"
2384 | ]
2385 | },
2386 | "execution_count": 102,
2387 | "metadata": {},
2388 | "output_type": "execute_result"
2389 | }
2390 | ],
2391 | "source": [
2392 | "# 沿axis=0轴方向\n",
2393 | "np.ptp(b, axis=0)"
2394 | ]
2395 | },
2396 | {
2397 | "cell_type": "code",
2398 | "execution_count": 103,
2399 | "metadata": {
2400 | "collapsed": false
2401 | },
2402 | "outputs": [
2403 | {
2404 | "data": {
2405 | "text/plain": [
2406 | "array([20, 5])"
2407 | ]
2408 | },
2409 | "execution_count": 103,
2410 | "metadata": {},
2411 | "output_type": "execute_result"
2412 | }
2413 | ],
2414 | "source": [
2415 | "# 沿axis=1轴方向\n",
2416 | "np.ptp(b, axis=1)"
2417 | ]
2418 | },
2419 | {
2420 | "cell_type": "markdown",
2421 | "metadata": {},
2422 | "source": [
2423 | "* **np.cumsum()**,沿指定轴方向进行累加"
2424 | ]
2425 | },
2426 | {
2427 | "cell_type": "code",
2428 | "execution_count": 114,
2429 | "metadata": {
2430 | "collapsed": false
2431 | },
2432 | "outputs": [
2433 | {
2434 | "data": {
2435 | "text/plain": [
2436 | "array([[ 0, 1, 20],\n",
2437 | " [ 3, 4, 5],\n",
2438 | " [ 6, 7, 8],\n",
2439 | " [ 9, 10, 11]])"
2440 | ]
2441 | },
2442 | "execution_count": 114,
2443 | "metadata": {},
2444 | "output_type": "execute_result"
2445 | }
2446 | ],
2447 | "source": [
2448 | "b.resize(4,3)\n",
2449 | "b"
2450 | ]
2451 | },
2452 | {
2453 | "cell_type": "code",
2454 | "execution_count": 115,
2455 | "metadata": {
2456 | "collapsed": false
2457 | },
2458 | "outputs": [
2459 | {
2460 | "data": {
2461 | "text/plain": [
2462 | "array([[ 0, 1, 21],\n",
2463 | " [ 3, 7, 12],\n",
2464 | " [ 6, 13, 21],\n",
2465 | " [ 9, 19, 30]], dtype=int32)"
2466 | ]
2467 | },
2468 | "execution_count": 115,
2469 | "metadata": {},
2470 | "output_type": "execute_result"
2471 | }
2472 | ],
2473 | "source": [
2474 | "np.cumsum(b, axis=1)"
2475 | ]
2476 | },
2477 | {
2478 | "cell_type": "code",
2479 | "execution_count": 116,
2480 | "metadata": {
2481 | "collapsed": false
2482 | },
2483 | "outputs": [
2484 | {
2485 | "data": {
2486 | "text/plain": [
2487 | "array([[ 0, 1, 20],\n",
2488 | " [ 3, 5, 25],\n",
2489 | " [ 9, 12, 33],\n",
2490 | " [18, 22, 44]], dtype=int32)"
2491 | ]
2492 | },
2493 | "execution_count": 116,
2494 | "metadata": {},
2495 | "output_type": "execute_result"
2496 | }
2497 | ],
2498 | "source": [
2499 | "np.cumsum(b, axis=0)"
2500 | ]
2501 | },
2502 | {
2503 | "cell_type": "markdown",
2504 | "metadata": {},
2505 | "source": [
2506 | "* **np.cumprod()**,沿指定轴方向进行累乘积 (Return the cumulative product of the elements along the given axis)"
2507 | ]
2508 | },
2509 | {
2510 | "cell_type": "code",
2511 | "execution_count": 117,
2512 | "metadata": {
2513 | "collapsed": false
2514 | },
2515 | "outputs": [
2516 | {
2517 | "data": {
2518 | "text/plain": [
2519 | "array([[ 0, 0, 0],\n",
2520 | " [ 3, 12, 60],\n",
2521 | " [ 6, 42, 336],\n",
2522 | " [ 9, 90, 990]], dtype=int32)"
2523 | ]
2524 | },
2525 | "execution_count": 117,
2526 | "metadata": {},
2527 | "output_type": "execute_result"
2528 | }
2529 | ],
2530 | "source": [
2531 | "np.cumprod(b,axis=1)"
2532 | ]
2533 | },
2534 | {
2535 | "cell_type": "code",
2536 | "execution_count": 118,
2537 | "metadata": {
2538 | "collapsed": false
2539 | },
2540 | "outputs": [
2541 | {
2542 | "data": {
2543 | "text/plain": [
2544 | "array([[ 0, 1, 20],\n",
2545 | " [ 0, 4, 100],\n",
2546 | " [ 0, 28, 800],\n",
2547 | " [ 0, 280, 8800]], dtype=int32)"
2548 | ]
2549 | },
2550 | "execution_count": 118,
2551 | "metadata": {},
2552 | "output_type": "execute_result"
2553 | }
2554 | ],
2555 | "source": [
2556 | "np.cumprod(b,axis=0)"
2557 | ]
2558 | },
2559 | {
2560 | "cell_type": "markdown",
2561 | "metadata": {},
2562 | "source": [
2563 | "# 数组的广播"
2564 | ]
2565 | },
2566 | {
2567 | "cell_type": "markdown",
2568 | "metadata": {
2569 | "collapsed": true
2570 | },
2571 | "source": [
2572 | "当数组跟一个标量进行数学运算时,标量需要根据数组的形状进行扩展,然后执行运算。\n",
2573 | "\n",
2574 | "这个扩展的过程称为“广播(broadcasting)”"
2575 | ]
2576 | },
2577 | {
2578 | "cell_type": "code",
2579 | "execution_count": 119,
2580 | "metadata": {
2581 | "collapsed": false
2582 | },
2583 | "outputs": [
2584 | {
2585 | "data": {
2586 | "text/plain": [
2587 | "array([[ 0, 1, 20],\n",
2588 | " [ 3, 4, 5],\n",
2589 | " [ 6, 7, 8],\n",
2590 | " [ 9, 10, 11]])"
2591 | ]
2592 | },
2593 | "execution_count": 119,
2594 | "metadata": {},
2595 | "output_type": "execute_result"
2596 | }
2597 | ],
2598 | "source": [
2599 | "b"
2600 | ]
2601 | },
2602 | {
2603 | "cell_type": "code",
2604 | "execution_count": 120,
2605 | "metadata": {
2606 | "collapsed": false
2607 | },
2608 | "outputs": [
2609 | {
2610 | "data": {
2611 | "text/plain": [
2612 | "array([[ 2, 3, 22],\n",
2613 | " [ 5, 6, 7],\n",
2614 | " [ 8, 9, 10],\n",
2615 | " [11, 12, 13]])"
2616 | ]
2617 | },
2618 | "execution_count": 120,
2619 | "metadata": {},
2620 | "output_type": "execute_result"
2621 | }
2622 | ],
2623 | "source": [
2624 | "d = b + 2\n",
2625 | "d"
2626 | ]
2627 | },
2628 | {
2629 | "cell_type": "code",
2630 | "execution_count": null,
2631 | "metadata": {
2632 | "collapsed": true
2633 | },
2634 | "outputs": [],
2635 | "source": []
2636 | }
2637 | ],
2638 | "metadata": {
2639 | "anaconda-cloud": {},
2640 | "kernelspec": {
2641 | "display_name": "Python [conda root]",
2642 | "language": "python",
2643 | "name": "conda-root-py"
2644 | },
2645 | "language_info": {
2646 | "codemirror_mode": {
2647 | "name": "ipython",
2648 | "version": 3
2649 | },
2650 | "file_extension": ".py",
2651 | "mimetype": "text/x-python",
2652 | "name": "python",
2653 | "nbconvert_exporter": "python",
2654 | "pygments_lexer": "ipython3",
2655 | "version": "3.5.2"
2656 | },
2657 | "toc": {
2658 | "colors": {
2659 | "hover_highlight": "#DAA520",
2660 | "navigate_num": "#000000",
2661 | "navigate_text": "#333333",
2662 | "running_highlight": "#FF0000",
2663 | "selected_highlight": "#FFD700",
2664 | "sidebar_border": "#EEEEEE",
2665 | "wrapper_background": "#FFFFFF"
2666 | },
2667 | "moveMenuLeft": true,
2668 | "nav_menu": {
2669 | "height": "66px",
2670 | "width": "252px"
2671 | },
2672 | "navigate_menu": true,
2673 | "number_sections": true,
2674 | "sideBar": true,
2675 | "threshold": 4,
2676 | "toc_cell": true,
2677 | "toc_section_display": "block",
2678 | "toc_window_display": true,
2679 | "widenNotebook": false
2680 | }
2681 | },
2682 | "nbformat": 4,
2683 | "nbformat_minor": 1
2684 | }
2685 |
--------------------------------------------------------------------------------
/comprehensive/pandas_df_sortby_custom_list/Pandas_sorting_by_a_custom_list.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {
6 | "toc": "true"
7 | },
8 | "source": [
9 | "# Table of Contents\n",
10 | " "
11 | ]
12 | },
13 | {
14 | "cell_type": "markdown",
15 | "metadata": {
16 | "collapsed": true
17 | },
18 | "source": [
19 | "* 引入pandas库"
20 | ]
21 | },
22 | {
23 | "cell_type": "code",
24 | "execution_count": 135,
25 | "metadata": {
26 | "collapsed": true
27 | },
28 | "outputs": [],
29 | "source": [
30 | "import pandas as pd"
31 | ]
32 | },
33 | {
34 | "cell_type": "markdown",
35 | "metadata": {},
36 | "source": [
37 | "* 构造Series数据"
38 | ]
39 | },
40 | {
41 | "cell_type": "code",
42 | "execution_count": 136,
43 | "metadata": {
44 | "collapsed": false
45 | },
46 | "outputs": [
47 | {
48 | "data": {
49 | "text/plain": [
50 | "a 1\n",
51 | "b 2\n",
52 | "c 3\n",
53 | "dtype: int64"
54 | ]
55 | },
56 | "execution_count": 136,
57 | "metadata": {},
58 | "output_type": "execute_result"
59 | }
60 | ],
61 | "source": [
62 | "s = pd.Series({'a':1,'b':2,'c':3})\n",
63 | "s"
64 | ]
65 | },
66 | {
67 | "cell_type": "code",
68 | "execution_count": 137,
69 | "metadata": {
70 | "collapsed": false
71 | },
72 | "outputs": [
73 | {
74 | "data": {
75 | "text/plain": [
76 | "Index(['a', 'b', 'c'], dtype='object')"
77 | ]
78 | },
79 | "execution_count": 137,
80 | "metadata": {},
81 | "output_type": "execute_result"
82 | }
83 | ],
84 | "source": [
85 | "s.index"
86 | ]
87 | },
88 | {
89 | "cell_type": "markdown",
90 | "metadata": {},
91 | "source": [
92 | "* 指定的list,后续按指定list的元素顺序进行排序"
93 | ]
94 | },
95 | {
96 | "cell_type": "code",
97 | "execution_count": 138,
98 | "metadata": {
99 | "collapsed": false
100 | },
101 | "outputs": [
102 | {
103 | "data": {
104 | "text/plain": [
105 | "['b', 'a', 'c']"
106 | ]
107 | },
108 | "execution_count": 138,
109 | "metadata": {},
110 | "output_type": "execute_result"
111 | }
112 | ],
113 | "source": [
114 | "list_custom = ['b', 'a', 'c']\n",
115 | "list_custom"
116 | ]
117 | },
118 | {
119 | "cell_type": "code",
120 | "execution_count": 139,
121 | "metadata": {
122 | "collapsed": false
123 | },
124 | "outputs": [
125 | {
126 | "data": {
127 | "text/html": [
128 | "
\n",
129 | "
\n",
130 | " \n",
131 | " \n",
132 | " | \n",
133 | " words | \n",
134 | " number | \n",
135 | "
\n",
136 | " \n",
137 | " \n",
138 | " \n",
139 | " 0 | \n",
140 | " a | \n",
141 | " 1 | \n",
142 | "
\n",
143 | " \n",
144 | " 1 | \n",
145 | " b | \n",
146 | " 2 | \n",
147 | "
\n",
148 | " \n",
149 | " 2 | \n",
150 | " c | \n",
151 | " 3 | \n",
152 | "
\n",
153 | " \n",
154 | "
\n",
155 | "
"
156 | ],
157 | "text/plain": [
158 | " words number\n",
159 | "0 a 1\n",
160 | "1 b 2\n",
161 | "2 c 3"
162 | ]
163 | },
164 | "execution_count": 139,
165 | "metadata": {},
166 | "output_type": "execute_result"
167 | }
168 | ],
169 | "source": [
170 | "df = pd.DataFrame(s)\n",
171 | "df = df.reset_index()\n",
172 | "df.columns = ['words', 'number']\n",
173 | "df"
174 | ]
175 | },
176 | {
177 | "cell_type": "markdown",
178 | "metadata": {},
179 | "source": [
180 | "**设置成“category”数据类型**"
181 | ]
182 | },
183 | {
184 | "cell_type": "code",
185 | "execution_count": 140,
186 | "metadata": {
187 | "collapsed": true
188 | },
189 | "outputs": [],
190 | "source": [
191 | "# 设置成“category”数据类型\n",
192 | "df['words'] = df['words'].astype('category')"
193 | ]
194 | },
195 | {
196 | "cell_type": "code",
197 | "execution_count": 141,
198 | "metadata": {
199 | "collapsed": false
200 | },
201 | "outputs": [
202 | {
203 | "data": {
204 | "text/html": [
205 | "\n",
206 | "
\n",
207 | " \n",
208 | " \n",
209 | " | \n",
210 | " words | \n",
211 | " number | \n",
212 | "
\n",
213 | " \n",
214 | " \n",
215 | " \n",
216 | " 1 | \n",
217 | " b | \n",
218 | " 2 | \n",
219 | "
\n",
220 | " \n",
221 | " 0 | \n",
222 | " a | \n",
223 | " 1 | \n",
224 | "
\n",
225 | " \n",
226 | " 2 | \n",
227 | " c | \n",
228 | " 3 | \n",
229 | "
\n",
230 | " \n",
231 | "
\n",
232 | "
"
233 | ],
234 | "text/plain": [
235 | " words number\n",
236 | "1 b 2\n",
237 | "0 a 1\n",
238 | "2 c 3"
239 | ]
240 | },
241 | "execution_count": 141,
242 | "metadata": {},
243 | "output_type": "execute_result"
244 | }
245 | ],
246 | "source": [
247 | "# inplace = True,使 recorder_categories生效\n",
248 | "df['words'].cat.reorder_categories(list_custom, inplace=True)\n",
249 | "\n",
250 | "# inplace = True,使 df生效\n",
251 | "df.sort_values('words', inplace=True)\n",
252 | "df"
253 | ]
254 | },
255 | {
256 | "cell_type": "markdown",
257 | "metadata": {},
258 | "source": [
259 | "**指定list元素多的情况:**\n",
260 | "\n",
261 | "若指定的list所包含元素比Dataframe中需要排序的列的元素**多**,怎么办?\n",
262 | "\n",
263 | "* reorder_catgories()方法不能继续使用,因为该方法使用时要求新的categories和dataframe中的categories的元素个数和内容必须一致,只是顺序不同。\n",
264 | "* 这种情况下,可以使用 set_categories()方法来实现。新的list可以比dataframe中元素多。"
265 | ]
266 | },
267 | {
268 | "cell_type": "code",
269 | "execution_count": 155,
270 | "metadata": {
271 | "collapsed": false
272 | },
273 | "outputs": [
274 | {
275 | "name": "stdout",
276 | "output_type": "stream",
277 | "text": [
278 | "['d', 'c', 'b', 'a', 'e']\n"
279 | ]
280 | },
281 | {
282 | "data": {
283 | "text/html": [
284 | "\n",
285 | "
\n",
286 | " \n",
287 | " \n",
288 | " | \n",
289 | " words | \n",
290 | " value | \n",
291 | "
\n",
292 | " \n",
293 | " \n",
294 | " \n",
295 | " 0 | \n",
296 | " b | \n",
297 | " 2 | \n",
298 | "
\n",
299 | " \n",
300 | " 1 | \n",
301 | " c | \n",
302 | " 3 | \n",
303 | "
\n",
304 | " \n",
305 | " 2 | \n",
306 | " e | \n",
307 | " 1 | \n",
308 | "
\n",
309 | " \n",
310 | "
\n",
311 | "
"
312 | ],
313 | "text/plain": [
314 | " words value\n",
315 | "0 b 2\n",
316 | "1 c 3\n",
317 | "2 e 1"
318 | ]
319 | },
320 | "execution_count": 155,
321 | "metadata": {},
322 | "output_type": "execute_result"
323 | }
324 | ],
325 | "source": [
326 | "list_custom_new = ['d', 'c', 'b','a','e']\n",
327 | "dict_new = {'e':1, 'b':2, 'c':3}\n",
328 | "df_new = pd.DataFrame(list(dict_new.items()), columns=['words', 'value'])\n",
329 | "print(list_custom_new)\n",
330 | "df_new.sort_values('words', inplace=True)\n",
331 | "df_new"
332 | ]
333 | },
334 | {
335 | "cell_type": "code",
336 | "execution_count": 156,
337 | "metadata": {
338 | "collapsed": false
339 | },
340 | "outputs": [
341 | {
342 | "data": {
343 | "text/html": [
344 | "\n",
345 | "
\n",
346 | " \n",
347 | " \n",
348 | " | \n",
349 | " words | \n",
350 | " value | \n",
351 | "
\n",
352 | " \n",
353 | " \n",
354 | " \n",
355 | " 1 | \n",
356 | " c | \n",
357 | " 3 | \n",
358 | "
\n",
359 | " \n",
360 | " 0 | \n",
361 | " b | \n",
362 | " 2 | \n",
363 | "
\n",
364 | " \n",
365 | " 2 | \n",
366 | " e | \n",
367 | " 1 | \n",
368 | "
\n",
369 | " \n",
370 | "
\n",
371 | "
"
372 | ],
373 | "text/plain": [
374 | " words value\n",
375 | "1 c 3\n",
376 | "0 b 2\n",
377 | "2 e 1"
378 | ]
379 | },
380 | "execution_count": 156,
381 | "metadata": {},
382 | "output_type": "execute_result"
383 | }
384 | ],
385 | "source": [
386 | "df_new['words'] = df_new['words'].astype('category')\n",
387 | "\n",
388 | "# inplace = True,使 set_categories生效\n",
389 | "df_new['words'].cat.set_categories(list_custom_new, inplace=True)\n",
390 | "\n",
391 | "df_new.sort_values('words', ascending=True)"
392 | ]
393 | },
394 | {
395 | "cell_type": "markdown",
396 | "metadata": {},
397 | "source": [
398 | "**指定list元素少的情况:**\n",
399 | "\n",
400 | "若指定的list所包含元素比Dataframe中需要排序的列的元素**少**,怎么办?\n",
401 | "* 这种情况下,set_categories()方法还是可以使用的,只是没有的元素会议NaN表示"
402 | ]
403 | },
404 | {
405 | "cell_type": "markdown",
406 | "metadata": {},
407 | "source": [
408 | "注意下面的list中没有元素“b”"
409 | ]
410 | },
411 | {
412 | "cell_type": "code",
413 | "execution_count": 158,
414 | "metadata": {
415 | "collapsed": false
416 | },
417 | "outputs": [
418 | {
419 | "name": "stdout",
420 | "output_type": "stream",
421 | "text": [
422 | "['d', 'c', 'a', 'e']\n"
423 | ]
424 | },
425 | {
426 | "data": {
427 | "text/html": [
428 | "\n",
429 | "
\n",
430 | " \n",
431 | " \n",
432 | " | \n",
433 | " words | \n",
434 | " value | \n",
435 | "
\n",
436 | " \n",
437 | " \n",
438 | " \n",
439 | " 0 | \n",
440 | " b | \n",
441 | " 2 | \n",
442 | "
\n",
443 | " \n",
444 | " 1 | \n",
445 | " c | \n",
446 | " 3 | \n",
447 | "
\n",
448 | " \n",
449 | " 2 | \n",
450 | " e | \n",
451 | " 1 | \n",
452 | "
\n",
453 | " \n",
454 | "
\n",
455 | "
"
456 | ],
457 | "text/plain": [
458 | " words value\n",
459 | "0 b 2\n",
460 | "1 c 3\n",
461 | "2 e 1"
462 | ]
463 | },
464 | "execution_count": 158,
465 | "metadata": {},
466 | "output_type": "execute_result"
467 | }
468 | ],
469 | "source": [
470 | "list_custom_new = ['d', 'c','a','e']\n",
471 | "dict_new = {'e':1, 'b':2, 'c':3}\n",
472 | "df_new = pd.DataFrame(list(dict_new.items()), columns=['words', 'value'])\n",
473 | "print(list_custom_new)\n",
474 | "df_new.sort_values('words', inplace=True)\n",
475 | "df_new"
476 | ]
477 | },
478 | {
479 | "cell_type": "code",
480 | "execution_count": 159,
481 | "metadata": {
482 | "collapsed": false
483 | },
484 | "outputs": [
485 | {
486 | "data": {
487 | "text/html": [
488 | "\n",
489 | "
\n",
490 | " \n",
491 | " \n",
492 | " | \n",
493 | " words | \n",
494 | " value | \n",
495 | "
\n",
496 | " \n",
497 | " \n",
498 | " \n",
499 | " 0 | \n",
500 | " NaN | \n",
501 | " 2 | \n",
502 | "
\n",
503 | " \n",
504 | " 1 | \n",
505 | " c | \n",
506 | " 3 | \n",
507 | "
\n",
508 | " \n",
509 | " 2 | \n",
510 | " e | \n",
511 | " 1 | \n",
512 | "
\n",
513 | " \n",
514 | "
\n",
515 | "
"
516 | ],
517 | "text/plain": [
518 | " words value\n",
519 | "0 NaN 2\n",
520 | "1 c 3\n",
521 | "2 e 1"
522 | ]
523 | },
524 | "execution_count": 159,
525 | "metadata": {},
526 | "output_type": "execute_result"
527 | }
528 | ],
529 | "source": [
530 | "df_new['words'] = df_new['words'].astype('category')\n",
531 | "\n",
532 | "# inplace = True,使 set_categories生效\n",
533 | "df_new['words'].cat.set_categories(list_custom_new, inplace=True)\n",
534 | "\n",
535 | "df_new.sort_values('words', ascending=True)"
536 | ]
537 | },
538 | {
539 | "cell_type": "code",
540 | "execution_count": null,
541 | "metadata": {
542 | "collapsed": true
543 | },
544 | "outputs": [],
545 | "source": []
546 | }
547 | ],
548 | "metadata": {
549 | "anaconda-cloud": {},
550 | "kernelspec": {
551 | "display_name": "Python [conda root]",
552 | "language": "python",
553 | "name": "conda-root-py"
554 | },
555 | "language_info": {
556 | "codemirror_mode": {
557 | "name": "ipython",
558 | "version": 3
559 | },
560 | "file_extension": ".py",
561 | "mimetype": "text/x-python",
562 | "name": "python",
563 | "nbconvert_exporter": "python",
564 | "pygments_lexer": "ipython3",
565 | "version": "3.5.2"
566 | },
567 | "toc": {
568 | "colors": {
569 | "hover_highlight": "#DAA520",
570 | "running_highlight": "#FF0000",
571 | "selected_highlight": "#FFD700"
572 | },
573 | "moveMenuLeft": true,
574 | "nav_menu": {
575 | "height": "12px",
576 | "width": "252px"
577 | },
578 | "navigate_menu": true,
579 | "number_sections": true,
580 | "sideBar": true,
581 | "threshold": 4,
582 | "toc_cell": true,
583 | "toc_section_display": "block",
584 | "toc_window_display": true
585 | }
586 | },
587 | "nbformat": 4,
588 | "nbformat_minor": 1
589 | }
590 |
--------------------------------------------------------------------------------
/comprehensive/pandas_df_sortby_custom_list/README.md:
--------------------------------------------------------------------------------
1 | # df_sortby_custom_list
2 | pandas: dataframe sort by a custom list
3 |
4 | Pandas: DataFrame按指定list排序
5 |
6 | 欢迎关注个人微信公众号“Python数据之道”(ID:PyDataLab)
7 |
8 |
9 |

10 |
11 |
--------------------------------------------------------------------------------
/comprehensive/wechat-msg-send/wechat-message-send.py:
--------------------------------------------------------------------------------
1 | #coding=utf8
2 | import itchat, time
3 | import pandas as pd
4 |
5 | itchat.auto_login(True)
6 |
7 | friendList = itchat.get_friends(update=True)[1:]
8 |
9 | # --------------------------start------------------------------
10 | # step 1: 获取所有的微信好友列表,在获取完毕后,需要注释掉这段代码
11 | # 从获得的好友列表里筛选你想发送消息的好友,同时可以将好友按照不同的分组进行设置
12 | # 获取所有微信好友列表,这里我获取的是好友的备注名称
13 | count_02 = 0
14 | friends_remark = []
15 | for friend in friendList:
16 | friends_remark.append(friend['RemarkName'])
17 | count_02 = count_02 + 1
18 |
19 | # df_friends = pd.Series(friends_remark)
20 | # df_friends.to_csv('friends.csv', encoding='utf_8_sig') # utf-8
21 | print(friends_remark)
22 | print("Total {} friends".format(count_02))
23 | # -------------------------end---------------------------------
24 |
25 |
26 |
27 | # --------------------------start------------------------------
28 | # step 2: 给指定好友按不同分组发送不同的消息
29 | # 在运行 step 1 的代码时,这里的代码需要注释
30 |
31 | # 定义要发送的好友的范围,防止自动乱发消息
32 | # 好友列表里,我用的是 备注名称
33 | friend_msg_list_01 = ["lemon-zs", "lemon-zs-01"] # 根据自己的实际情况设置好友分组
34 | friend_msg_list_02 = ["lemon-zs-02", "lemon-zs-02" ] # 根据自己的实际情况设置好友分组
35 |
36 |
37 | #设置不同好友分组需要发送的内容
38 | SINCERE_WISH = u'test, 祝%s新年快乐!' # 根据自己的实际情况设置祝福内容
39 | msg_01 = 'test01, 祝新年快乐!!!' # 根据自己的实际情况设置祝福内容
40 | msg_02 = 'test02, 祝新年快乐!!!' # 根据自己的实际情况设置祝福内容
41 |
42 |
43 | count = 0
44 | for friend in friendList:
45 | # 通过 if 条件设置,可以只针对 指定的好友发送消息
46 | # 也可以设置为几个分组,不同分组发送不同的消息
47 | # 由于我的好友一般都设置了备注名称, 即 "RemarkName",所以我是用 备注名称来作为条件判断的
48 | # 主要是为了防止别错发给一些不能随便发送信息的老板或领导或其他人士
49 | if friend['RemarkName'] in friend_msg_list_01:
50 | # itchat.send( SINCERE_WISH % (friend['DisplayName'] or friend['NickName']), friend['UserName'])
51 | itchat.send( SINCERE_WISH % (friend['DisplayName'] or friend['NickName']), friend['UserName'])
52 | time.sleep(5)
53 | count = count + 1
54 | elif friend['RemarkName'] in friend_msg_list_02:
55 | itchat.send( msg_01, friend['UserName'])
56 | time.sleep(5)
57 | count = count + 1
58 |
59 |
60 | print("Total {} messages have been sent.".format(count))
61 | print("----end----")
62 | # -------------------------end---------------------------------
--------------------------------------------------------------------------------
/projects/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liyangbit/PyDataLab/78ceb8d03ce93490f1613d65b9505fb609b34bd8/projects/.DS_Store
--------------------------------------------------------------------------------
/projects/Stock-prediction-with-Python/README.md:
--------------------------------------------------------------------------------
1 | # Stock Prediction with Python
2 |
3 | ".ipynb" 文件为代码文件
4 |
5 | 欢迎关注个人微信公众号“Python数据之道”(ID:PyDataLab)
6 |
7 |
8 |
9 |
10 |

11 |
12 |
13 |
--------------------------------------------------------------------------------
/projects/football-world-cup/README.md:
--------------------------------------------------------------------------------
1 | ## 个人官网
2 |
3 | 欢迎访问个人官网: [http://liyangbit.com](http://liyangbit.com)
4 |
5 | ## 微信公众号
6 |
7 | 欢迎关注个人微信公众号“**Python数据之道**”(公号ID:**PyDataLab** )。
8 |
9 |
10 |

11 |
12 |
13 |
14 | ## 世界杯项目实战
15 |
16 |
17 | |发文日期|文章名称|代码 / 数据文件|
18 | |-------|-------|---------|
19 | | 2018-06-11 | [世界杯:用Python分析热门夺冠球队](http://liyangbit.com/projects/projects-world-cup-top3-predict/)|代码:football-world-cup-top3-predict.ipynb
数据文件:results.csv|
20 | |2018-06-25|[第二波分析:德国是2018世界杯夺冠最大热门? Python数据分析来揭开神秘面纱…](http://liyangbit.com/projects/projects-world-cup-predict-2nd-post/)|代码:football-world-cup-predict-2nd-post.ipynb
数据文件:results.csv|
21 |
22 |
23 |
28 |
--------------------------------------------------------------------------------
/projects/gaokaozw/1952-1965.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liyangbit/PyDataLab/78ceb8d03ce93490f1613d65b9505fb609b34bd8/projects/gaokaozw/1952-1965.txt
--------------------------------------------------------------------------------
/projects/gaokaozw/1977-1986.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liyangbit/PyDataLab/78ceb8d03ce93490f1613d65b9505fb609b34bd8/projects/gaokaozw/1977-1986.txt
--------------------------------------------------------------------------------
/projects/gaokaozw/1987-1996.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liyangbit/PyDataLab/78ceb8d03ce93490f1613d65b9505fb609b34bd8/projects/gaokaozw/1987-1996.txt
--------------------------------------------------------------------------------
/projects/gaokaozw/1997-2006.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liyangbit/PyDataLab/78ceb8d03ce93490f1613d65b9505fb609b34bd8/projects/gaokaozw/1997-2006.txt
--------------------------------------------------------------------------------
/projects/gaokaozw/2007-2016.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liyangbit/PyDataLab/78ceb8d03ce93490f1613d65b9505fb609b34bd8/projects/gaokaozw/2007-2016.txt
--------------------------------------------------------------------------------
/projects/gaokaozw/README.md:
--------------------------------------------------------------------------------
1 | # 50年高考作文题,记录时代的变迁
2 |
3 | 从1952年到2016年,已经历了50多年的高考(1966-1976年中断了11年),通过观察每年的高考作文题目,可以从某些方面看出时代变迁的一些情况。
4 |
5 | 本文以10年为一个阶段(1966年前为一个阶段),通过词云图分析的方式来展现不同时期的主题方向,记录哪些曾经令人兴奋或激动的时刻。
6 |
7 |
8 |
9 | 欢迎关注个人微信公众号“Python数据之道”(ID:PyDataLab)
10 |
11 |
12 |
13 |
14 |

15 |
--------------------------------------------------------------------------------
/projects/gaokaozw/colors.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liyangbit/PyDataLab/78ceb8d03ce93490f1613d65b9505fb609b34bd8/projects/gaokaozw/colors.png
--------------------------------------------------------------------------------
/projects/gaokaozw/gaokao.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 | """
3 | @author: lemonbit
4 | @出品:Python数据之道
5 | """
6 |
7 | import jieba
8 | from wordcloud import WordCloud, ImageColorGenerator, STOPWORDS
9 | import matplotlib.pyplot as plt
10 | import os
11 | import PIL.Image as Image
12 | import numpy as np
13 |
14 | # import matplotlib.font_manager
15 | #
16 | # a = sorted([f.name for f in matplotlib.font_manager.fontManager.ttflist])
17 | #
18 | # for i in a:
19 | # print(i)
20 | #
21 | # from matplotlib.font_manager import _rebuild
22 | #
23 | # _rebuild()
24 | #
25 | # # plt.rcParams['font.sans-serif'] = ['STFangsong']
26 | # # plt.rcParams['axes.unicode_minus'] = False
27 |
28 | # 解决matplotlib显示中文问题
29 | plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体
30 | # plt.rcParams['font.sans-serif'] = ['AlibabaPuHuiTi-Light'] # 指定默认字体
31 | plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
32 |
33 | # 读取文本内容
34 |
35 | with open('gaokao.txt', 'rb') as f:
36 | text = f.read()
37 | f.close()
38 |
39 | # 加载自定义词典
40 | # jieba.load_userdict(r"C:\Users\Administrator\AppData\Roaming\Python\Python35\site-packages\jieba\userdict.txt")
41 |
42 |
43 | # 首先使用 jieba 中文分词工具进行分词
44 | wordlist = jieba.cut(text, cut_all=False)
45 | # cut_all, True为全模式,False为精确模式
46 |
47 | wordlist_space_split = ' '.join(wordlist)
48 |
49 | d = os.path.dirname(__file__)
50 | alice_coloring = np.array(Image.open(os.path.join(d, 'orange.jpg')))
51 | # my_wordcloud = WordCloud(background_color='#000000', max_words=300, mask=alice_coloring,
52 | # max_font_size=300, random_state=42).generate(wordlist_space_split)
53 |
54 |
55 | # 加载常用停用词
56 | stopwords1 = [line.rstrip() for line in open('./中文停用词库.txt', 'r', encoding='utf-8')]
57 | stopwords2 = [line.rstrip() for line in open('./哈工大停用词表.txt', 'r', encoding='utf-8')]
58 | stopwords3 = [line.rstrip() for line in open('./四川大学机器智能实验室停用词库.txt', 'r', encoding='utf-8')]
59 |
60 | # 添加自定义停用词
61 | # stopwords_user1 = set([x.strip() for x in open(
62 | # os.path.join(os.path.dirname(__file__), 'stopwords_user')).read().split('\n')])
63 |
64 | # stopwords_user = set(stopwords1) | set(stopwords2) | set(stopwords3) | set(stopwords_user1)
65 | stopwords_user = set(stopwords1) | set(stopwords2) | set(stopwords3)
66 |
67 | font = r'/Users/lemon/Library/Fonts/Alibaba-PuHuiTi-Light.ttf'
68 | # 对分词后的文本生成词云
69 | my_wordcloud = WordCloud(background_color='#000000',
70 | max_words=100,
71 | font_step=1,
72 | mask=alice_coloring,
73 | random_state=30, # 设置有多少种随机生成状态,即有多少种配色方案
74 | max_font_size=300,
75 | stopwords=stopwords_user, # 停用词的类型为set
76 | font_path=font,
77 | )
78 |
79 | # Generate word cloud
80 | my_wordcloud.generate(wordlist_space_split)
81 |
82 | image_colors = ImageColorGenerator(alice_coloring)
83 |
84 | # plt.show(my_wordcloud.recolor(color_func=image_colors))
85 | plt.imshow(my_wordcloud) # 以图片的形式显示词云
86 | plt.axis('off') # 关闭坐标轴
87 | plt.show()
88 |
89 | # my_wordcloud.to_file(os.path.join(d, 'gaokao_1977_1986_colors_cloud.jpg'))
90 | # my_wordcloud.to_file(os.path.join(d, 'gaokao_1987_1996_colors_cloud.jpg'))
91 | # my_wordcloud.to_file(os.path.join(d, 'gaokao_1997_2006_colors_cloud.jpg'))
92 | my_wordcloud.to_file(os.path.join(d, 'gaokao_orange_cloud.jpg'))
--------------------------------------------------------------------------------
/projects/gaokaozw/gaokao.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liyangbit/PyDataLab/78ceb8d03ce93490f1613d65b9505fb609b34bd8/projects/gaokaozw/gaokao.txt
--------------------------------------------------------------------------------
/projects/gaokaozw/gaokao_orange_cloud.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liyangbit/PyDataLab/78ceb8d03ce93490f1613d65b9505fb609b34bd8/projects/gaokaozw/gaokao_orange_cloud.jpg
--------------------------------------------------------------------------------
/projects/gaokaozw/orange.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liyangbit/PyDataLab/78ceb8d03ce93490f1613d65b9505fb609b34bd8/projects/gaokaozw/orange.jpg
--------------------------------------------------------------------------------
/projects/gaokaozw/stopwords_user:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liyangbit/PyDataLab/78ceb8d03ce93490f1613d65b9505fb609b34bd8/projects/gaokaozw/stopwords_user
--------------------------------------------------------------------------------
/projects/gaokaozw/中文停用词库.txt:
--------------------------------------------------------------------------------
1 | $
2 | 0
3 | 1
4 | 2
5 | 3
6 | 4
7 | 5
8 | 6
9 | 7
10 | 8
11 | 9
12 | ?
13 | _
14 | “
15 | ”
16 | 、
17 | 。
18 | 《
19 | 》
20 | 一
21 | 一些
22 | 一何
23 | 一切
24 | 一则
25 | 一方面
26 | 一旦
27 | 一来
28 | 一样
29 | 一般
30 | 一转眼
31 | 万一
32 | 上
33 | 上下
34 | 下
35 | 不
36 | 不仅
37 | 不但
38 | 不光
39 | 不单
40 | 不只
41 | 不外乎
42 | 不如
43 | 不妨
44 | 不尽
45 | 不尽然
46 | 不得
47 | 不怕
48 | 不惟
49 | 不成
50 | 不拘
51 | 不料
52 | 不是
53 | 不比
54 | 不然
55 | 不特
56 | 不独
57 | 不管
58 | 不至于
59 | 不若
60 | 不论
61 | 不过
62 | 不问
63 | 与
64 | 与其
65 | 与其说
66 | 与否
67 | 与此同时
68 | 且
69 | 且不说
70 | 且说
71 | 两者
72 | 个
73 | 个别
74 | 临
75 | 为
76 | 为了
77 | 为什么
78 | 为何
79 | 为止
80 | 为此
81 | 为着
82 | 乃
83 | 乃至
84 | 乃至于
85 | 么
86 | 之
87 | 之一
88 | 之所以
89 | 之类
90 | 乌乎
91 | 乎
92 | 乘
93 | 也
94 | 也好
95 | 也罢
96 | 了
97 | 二来
98 | 于
99 | 于是
100 | 于是乎
101 | 云云
102 | 云尔
103 | 些
104 | 亦
105 | 人
106 | 人们
107 | 人家
108 | 什么
109 | 什么样
110 | 今
111 | 介于
112 | 仍
113 | 仍旧
114 | 从
115 | 从此
116 | 从而
117 | 他
118 | 他人
119 | 他们
120 | 以
121 | 以上
122 | 以为
123 | 以便
124 | 以免
125 | 以及
126 | 以故
127 | 以期
128 | 以来
129 | 以至
130 | 以至于
131 | 以致
132 | 们
133 | 任
134 | 任何
135 | 任凭
136 | 似的
137 | 但
138 | 但凡
139 | 但是
140 | 何
141 | 何以
142 | 何况
143 | 何处
144 | 何时
145 | 余外
146 | 作为
147 | 你
148 | 你们
149 | 使
150 | 使得
151 | 例如
152 | 依
153 | 依据
154 | 依照
155 | 便于
156 | 俺
157 | 俺们
158 | 倘
159 | 倘使
160 | 倘或
161 | 倘然
162 | 倘若
163 | 借
164 | 假使
165 | 假如
166 | 假若
167 | 傥然
168 | 像
169 | 儿
170 | 先不先
171 | 光是
172 | 全体
173 | 全部
174 | 兮
175 | 关于
176 | 其
177 | 其一
178 | 其中
179 | 其二
180 | 其他
181 | 其余
182 | 其它
183 | 其次
184 | 具体地说
185 | 具体说来
186 | 兼之
187 | 内
188 | 再
189 | 再其次
190 | 再则
191 | 再有
192 | 再者
193 | 再者说
194 | 再说
195 | 冒
196 | 冲
197 | 况且
198 | 几
199 | 几时
200 | 凡
201 | 凡是
202 | 凭
203 | 凭借
204 | 出于
205 | 出来
206 | 分别
207 | 则
208 | 则甚
209 | 别
210 | 别人
211 | 别处
212 | 别是
213 | 别的
214 | 别管
215 | 别说
216 | 到
217 | 前后
218 | 前此
219 | 前者
220 | 加之
221 | 加以
222 | 即
223 | 即令
224 | 即使
225 | 即便
226 | 即如
227 | 即或
228 | 即若
229 | 却
230 | 去
231 | 又
232 | 又及
233 | 及
234 | 及其
235 | 及至
236 | 反之
237 | 反而
238 | 反过来
239 | 反过来说
240 | 受到
241 | 另
242 | 另一方面
243 | 另外
244 | 另悉
245 | 只
246 | 只当
247 | 只怕
248 | 只是
249 | 只有
250 | 只消
251 | 只要
252 | 只限
253 | 叫
254 | 叮咚
255 | 可
256 | 可以
257 | 可是
258 | 可见
259 | 各
260 | 各个
261 | 各位
262 | 各种
263 | 各自
264 | 同
265 | 同时
266 | 后
267 | 后者
268 | 向
269 | 向使
270 | 向着
271 | 吓
272 | 吗
273 | 否则
274 | 吧
275 | 吧哒
276 | 吱
277 | 呀
278 | 呃
279 | 呕
280 | 呗
281 | 呜
282 | 呜呼
283 | 呢
284 | 呵
285 | 呵呵
286 | 呸
287 | 呼哧
288 | 咋
289 | 和
290 | 咚
291 | 咦
292 | 咧
293 | 咱
294 | 咱们
295 | 咳
296 | 哇
297 | 哈
298 | 哈哈
299 | 哉
300 | 哎
301 | 哎呀
302 | 哎哟
303 | 哗
304 | 哟
305 | 哦
306 | 哩
307 | 哪
308 | 哪个
309 | 哪些
310 | 哪儿
311 | 哪天
312 | 哪年
313 | 哪怕
314 | 哪样
315 | 哪边
316 | 哪里
317 | 哼
318 | 哼唷
319 | 唉
320 | 唯有
321 | 啊
322 | 啐
323 | 啥
324 | 啦
325 | 啪达
326 | 啷当
327 | 喂
328 | 喏
329 | 喔唷
330 | 喽
331 | 嗡
332 | 嗡嗡
333 | 嗬
334 | 嗯
335 | 嗳
336 | 嘎
337 | 嘎登
338 | 嘘
339 | 嘛
340 | 嘻
341 | 嘿
342 | 嘿嘿
343 | 因
344 | 因为
345 | 因了
346 | 因此
347 | 因着
348 | 因而
349 | 固然
350 | 在
351 | 在下
352 | 在于
353 | 地
354 | 基于
355 | 处在
356 | 多
357 | 多么
358 | 多少
359 | 大
360 | 大家
361 | 她
362 | 她们
363 | 好
364 | 如
365 | 如上
366 | 如上所述
367 | 如下
368 | 如何
369 | 如其
370 | 如同
371 | 如是
372 | 如果
373 | 如此
374 | 如若
375 | 始而
376 | 孰料
377 | 孰知
378 | 宁
379 | 宁可
380 | 宁愿
381 | 宁肯
382 | 它
383 | 它们
384 | 对
385 | 对于
386 | 对待
387 | 对方
388 | 对比
389 | 将
390 | 小
391 | 尔
392 | 尔后
393 | 尔尔
394 | 尚且
395 | 就
396 | 就是
397 | 就是了
398 | 就是说
399 | 就算
400 | 就要
401 | 尽
402 | 尽管
403 | 尽管如此
404 | 岂但
405 | 己
406 | 已
407 | 已矣
408 | 巴
409 | 巴巴
410 | 并
411 | 并且
412 | 并非
413 | 庶乎
414 | 庶几
415 | 开外
416 | 开始
417 | 归
418 | 归齐
419 | 当
420 | 当地
421 | 当然
422 | 当着
423 | 彼
424 | 彼时
425 | 彼此
426 | 往
427 | 待
428 | 很
429 | 得
430 | 得了
431 | 怎
432 | 怎么
433 | 怎么办
434 | 怎么样
435 | 怎奈
436 | 怎样
437 | 总之
438 | 总的来看
439 | 总的来说
440 | 总的说来
441 | 总而言之
442 | 恰恰相反
443 | 您
444 | 惟其
445 | 慢说
446 | 我
447 | 我们
448 | 或
449 | 或则
450 | 或是
451 | 或曰
452 | 或者
453 | 截至
454 | 所
455 | 所以
456 | 所在
457 | 所幸
458 | 所有
459 | 才
460 | 才能
461 | 打
462 | 打从
463 | 把
464 | 抑或
465 | 拿
466 | 按
467 | 按照
468 | 换句话说
469 | 换言之
470 | 据
471 | 据此
472 | 接着
473 | 故
474 | 故此
475 | 故而
476 | 旁人
477 | 无
478 | 无宁
479 | 无论
480 | 既
481 | 既往
482 | 既是
483 | 既然
484 | 时候
485 | 是
486 | 是以
487 | 是的
488 | 曾
489 | 替
490 | 替代
491 | 最
492 | 有
493 | 有些
494 | 有关
495 | 有及
496 | 有时
497 | 有的
498 | 望
499 | 朝
500 | 朝着
501 | 本
502 | 本人
503 | 本地
504 | 本着
505 | 本身
506 | 来
507 | 来着
508 | 来自
509 | 来说
510 | 极了
511 | 果然
512 | 果真
513 | 某
514 | 某个
515 | 某些
516 | 某某
517 | 根据
518 | 欤
519 | 正值
520 | 正如
521 | 正巧
522 | 正是
523 | 此
524 | 此地
525 | 此处
526 | 此外
527 | 此时
528 | 此次
529 | 此间
530 | 毋宁
531 | 每
532 | 每当
533 | 比
534 | 比及
535 | 比如
536 | 比方
537 | 没奈何
538 | 沿
539 | 沿着
540 | 漫说
541 | 焉
542 | 然则
543 | 然后
544 | 然而
545 | 照
546 | 照着
547 | 犹且
548 | 犹自
549 | 甚且
550 | 甚么
551 | 甚或
552 | 甚而
553 | 甚至
554 | 甚至于
555 | 用
556 | 用来
557 | 由
558 | 由于
559 | 由是
560 | 由此
561 | 由此可见
562 | 的
563 | 的确
564 | 的话
565 | 直到
566 | 相对而言
567 | 省得
568 | 看
569 | 眨眼
570 | 着
571 | 着呢
572 | 矣
573 | 矣乎
574 | 矣哉
575 | 离
576 | 竟而
577 | 第
578 | 等
579 | 等到
580 | 等等
581 | 简言之
582 | 管
583 | 类如
584 | 紧接着
585 | 纵
586 | 纵令
587 | 纵使
588 | 纵然
589 | 经
590 | 经过
591 | 结果
592 | 给
593 | 继之
594 | 继后
595 | 继而
596 | 综上所述
597 | 罢了
598 | 者
599 | 而
600 | 而且
601 | 而况
602 | 而后
603 | 而外
604 | 而已
605 | 而是
606 | 而言
607 | 能
608 | 能否
609 | 腾
610 | 自
611 | 自个儿
612 | 自从
613 | 自各儿
614 | 自后
615 | 自家
616 | 自己
617 | 自打
618 | 自身
619 | 至
620 | 至于
621 | 至今
622 | 至若
623 | 致
624 | 般的
625 | 若
626 | 若夫
627 | 若是
628 | 若果
629 | 若非
630 | 莫不然
631 | 莫如
632 | 莫若
633 | 虽
634 | 虽则
635 | 虽然
636 | 虽说
637 | 被
638 | 要
639 | 要不
640 | 要不是
641 | 要不然
642 | 要么
643 | 要是
644 | 譬喻
645 | 譬如
646 | 让
647 | 许多
648 | 论
649 | 设使
650 | 设或
651 | 设若
652 | 诚如
653 | 诚然
654 | 该
655 | 说来
656 | 诸
657 | 诸位
658 | 诸如
659 | 谁
660 | 谁人
661 | 谁料
662 | 谁知
663 | 贼死
664 | 赖以
665 | 赶
666 | 起
667 | 起见
668 | 趁
669 | 趁着
670 | 越是
671 | 距
672 | 跟
673 | 较
674 | 较之
675 | 边
676 | 过
677 | 还
678 | 还是
679 | 还有
680 | 还要
681 | 这
682 | 这一来
683 | 这个
684 | 这么
685 | 这么些
686 | 这么样
687 | 这么点儿
688 | 这些
689 | 这会儿
690 | 这儿
691 | 这就是说
692 | 这时
693 | 这样
694 | 这次
695 | 这般
696 | 这边
697 | 这里
698 | 进而
699 | 连
700 | 连同
701 | 逐步
702 | 通过
703 | 遵循
704 | 遵照
705 | 那
706 | 那个
707 | 那么
708 | 那么些
709 | 那么样
710 | 那些
711 | 那会儿
712 | 那儿
713 | 那时
714 | 那样
715 | 那般
716 | 那边
717 | 那里
718 | 都
719 | 鄙人
720 | 鉴于
721 | 针对
722 | 阿
723 | 除
724 | 除了
725 | 除外
726 | 除开
727 | 除此之外
728 | 除非
729 | 随
730 | 随后
731 | 随时
732 | 随着
733 | 难道说
734 | 非但
735 | 非徒
736 | 非特
737 | 非独
738 | 靠
739 | 顺
740 | 顺着
741 | 首先
742 | !
743 | ,
744 | :
745 | ;
746 | ?
747 |
--------------------------------------------------------------------------------
/projects/gaokaozw/哈工大停用词表.txt:
--------------------------------------------------------------------------------
1 | ———
2 | 》),
3 | )÷(1-
4 | ”,
5 | )、
6 | =(
7 | :
8 | →
9 | ℃
10 | &
11 | *
12 | 一一
13 | ~~~~
14 | ’
15 | .
16 | 『
17 | .一
18 | ./
19 | --
20 | 』
21 | =″
22 | 【
23 | [*]
24 | }>
25 | [⑤]]
26 | [①D]
27 | c]
28 | ng昉
29 | *
30 | //
31 | [
32 | ]
33 | [②e]
34 | [②g]
35 | ={
36 | }
37 | ,也
38 | ‘
39 | A
40 | [①⑥]
41 | [②B]
42 | [①a]
43 | [④a]
44 | [①③]
45 | [③h]
46 | ③]
47 | 1.
48 | --
49 | [②b]
50 | ’‘
51 | ×××
52 | [①⑧]
53 | 0:2
54 | =[
55 | [⑤b]
56 | [②c]
57 | [④b]
58 | [②③]
59 | [③a]
60 | [④c]
61 | [①⑤]
62 | [①⑦]
63 | [①g]
64 | ∈[
65 | [①⑨]
66 | [①④]
67 | [①c]
68 | [②f]
69 | [②⑧]
70 | [②①]
71 | [①C]
72 | [③c]
73 | [③g]
74 | [②⑤]
75 | [②②]
76 | 一.
77 | [①h]
78 | .数
79 | []
80 | [①B]
81 | 数/
82 | [①i]
83 | [③e]
84 | [①①]
85 | [④d]
86 | [④e]
87 | [③b]
88 | [⑤a]
89 | [①A]
90 | [②⑧]
91 | [②⑦]
92 | [①d]
93 | [②j]
94 | 〕〔
95 | ][
96 | ://
97 | ′∈
98 | [②④
99 | [⑤e]
100 | 12%
101 | b]
102 | ...
103 | ...................
104 | …………………………………………………③
105 | ZXFITL
106 | [③F]
107 | 」
108 | [①o]
109 | ]∧′=[
110 | ∪φ∈
111 | ′|
112 | {-
113 | ②c
114 | }
115 | [③①]
116 | R.L.
117 | [①E]
118 | Ψ
119 | -[*]-
120 | ↑
121 | .日
122 | [②d]
123 | [②
124 | [②⑦]
125 | [②②]
126 | [③e]
127 | [①i]
128 | [①B]
129 | [①h]
130 | [①d]
131 | [①g]
132 | [①②]
133 | [②a]
134 | f]
135 | [⑩]
136 | a]
137 | [①e]
138 | [②h]
139 | [②⑥]
140 | [③d]
141 | [②⑩]
142 | e]
143 | 〉
144 | 】
145 | 元/吨
146 | [②⑩]
147 | 2.3%
148 | 5:0
149 | [①]
150 | ::
151 | [②]
152 | [③]
153 | [④]
154 | [⑤]
155 | [⑥]
156 | [⑦]
157 | [⑧]
158 | [⑨]
159 | ……
160 | ——
161 | ?
162 | 、
163 | 。
164 | “
165 | ”
166 | 《
167 | 》
168 | !
169 | ,
170 | :
171 | ;
172 | ?
173 | .
174 | ,
175 | .
176 | '
177 | ?
178 | ·
179 | ———
180 | ──
181 | ?
182 | —
183 | <
184 | >
185 | (
186 | )
187 | 〔
188 | 〕
189 | [
190 | ]
191 | (
192 | )
193 | -
194 | +
195 | ~
196 | ×
197 | /
198 | /
199 | ①
200 | ②
201 | ③
202 | ④
203 | ⑤
204 | ⑥
205 | ⑦
206 | ⑧
207 | ⑨
208 | ⑩
209 | Ⅲ
210 | В
211 | "
212 | ;
213 | #
214 | @
215 | γ
216 | μ
217 | φ
218 | φ.
219 | ×
220 | Δ
221 | ■
222 | ▲
223 | sub
224 | exp
225 | sup
226 | sub
227 | Lex
228 | #
229 | %
230 | &
231 | '
232 | +
233 | +ξ
234 | ++
235 | -
236 | -β
237 | <
238 | <±
239 | <Δ
240 | <λ
241 | <φ
242 | <<
243 | =
244 | =
245 | =☆
246 | =-
247 | >
248 | >λ
249 | _
250 | ~±
251 | ~+
252 | [⑤f]
253 | [⑤d]
254 | [②i]
255 | ≈
256 | [②G]
257 | [①f]
258 | LI
259 | ㈧
260 | [-
261 | ......
262 | 〉
263 | [③⑩]
264 | 第二
265 | 一番
266 | 一直
267 | 一个
268 | 一些
269 | 许多
270 | 种
271 | 有的是
272 | 也就是说
273 | 末##末
274 | 啊
275 | 阿
276 | 哎
277 | 哎呀
278 | 哎哟
279 | 唉
280 | 俺
281 | 俺们
282 | 按
283 | 按照
284 | 吧
285 | 吧哒
286 | 把
287 | 罢了
288 | 被
289 | 本
290 | 本着
291 | 比
292 | 比方
293 | 比如
294 | 鄙人
295 | 彼
296 | 彼此
297 | 边
298 | 别
299 | 别的
300 | 别说
301 | 并
302 | 并且
303 | 不比
304 | 不成
305 | 不单
306 | 不但
307 | 不独
308 | 不管
309 | 不光
310 | 不过
311 | 不仅
312 | 不拘
313 | 不论
314 | 不怕
315 | 不然
316 | 不如
317 | 不特
318 | 不惟
319 | 不问
320 | 不只
321 | 朝
322 | 朝着
323 | 趁
324 | 趁着
325 | 乘
326 | 冲
327 | 除
328 | 除此之外
329 | 除非
330 | 除了
331 | 此
332 | 此间
333 | 此外
334 | 从
335 | 从而
336 | 打
337 | 待
338 | 但
339 | 但是
340 | 当
341 | 当着
342 | 到
343 | 得
344 | 的
345 | 的话
346 | 等
347 | 等等
348 | 地
349 | 第
350 | 叮咚
351 | 对
352 | 对于
353 | 多
354 | 多少
355 | 而
356 | 而况
357 | 而且
358 | 而是
359 | 而外
360 | 而言
361 | 而已
362 | 尔后
363 | 反过来
364 | 反过来说
365 | 反之
366 | 非但
367 | 非徒
368 | 否则
369 | 嘎
370 | 嘎登
371 | 该
372 | 赶
373 | 个
374 | 各
375 | 各个
376 | 各位
377 | 各种
378 | 各自
379 | 给
380 | 根据
381 | 跟
382 | 故
383 | 故此
384 | 固然
385 | 关于
386 | 管
387 | 归
388 | 果然
389 | 果真
390 | 过
391 | 哈
392 | 哈哈
393 | 呵
394 | 和
395 | 何
396 | 何处
397 | 何况
398 | 何时
399 | 嘿
400 | 哼
401 | 哼唷
402 | 呼哧
403 | 乎
404 | 哗
405 | 还是
406 | 还有
407 | 换句话说
408 | 换言之
409 | 或
410 | 或是
411 | 或者
412 | 极了
413 | 及
414 | 及其
415 | 及至
416 | 即
417 | 即便
418 | 即或
419 | 即令
420 | 即若
421 | 即使
422 | 几
423 | 几时
424 | 己
425 | 既
426 | 既然
427 | 既是
428 | 继而
429 | 加之
430 | 假如
431 | 假若
432 | 假使
433 | 鉴于
434 | 将
435 | 较
436 | 较之
437 | 叫
438 | 接着
439 | 结果
440 | 借
441 | 紧接着
442 | 进而
443 | 尽
444 | 尽管
445 | 经
446 | 经过
447 | 就
448 | 就是
449 | 就是说
450 | 据
451 | 具体地说
452 | 具体说来
453 | 开始
454 | 开外
455 | 靠
456 | 咳
457 | 可
458 | 可见
459 | 可是
460 | 可以
461 | 况且
462 | 啦
463 | 来
464 | 来着
465 | 离
466 | 例如
467 | 哩
468 | 连
469 | 连同
470 | 两者
471 | 了
472 | 临
473 | 另
474 | 另外
475 | 另一方面
476 | 论
477 | 嘛
478 | 吗
479 | 慢说
480 | 漫说
481 | 冒
482 | 么
483 | 每
484 | 每当
485 | 们
486 | 莫若
487 | 某
488 | 某个
489 | 某些
490 | 拿
491 | 哪
492 | 哪边
493 | 哪儿
494 | 哪个
495 | 哪里
496 | 哪年
497 | 哪怕
498 | 哪天
499 | 哪些
500 | 哪样
501 | 那
502 | 那边
503 | 那儿
504 | 那个
505 | 那会儿
506 | 那里
507 | 那么
508 | 那么些
509 | 那么样
510 | 那时
511 | 那些
512 | 那样
513 | 乃
514 | 乃至
515 | 呢
516 | 能
517 | 你
518 | 你们
519 | 您
520 | 宁
521 | 宁可
522 | 宁肯
523 | 宁愿
524 | 哦
525 | 呕
526 | 啪达
527 | 旁人
528 | 呸
529 | 凭
530 | 凭借
531 | 其
532 | 其次
533 | 其二
534 | 其他
535 | 其它
536 | 其一
537 | 其余
538 | 其中
539 | 起
540 | 起见
541 | 起见
542 | 岂但
543 | 恰恰相反
544 | 前后
545 | 前者
546 | 且
547 | 然而
548 | 然后
549 | 然则
550 | 让
551 | 人家
552 | 任
553 | 任何
554 | 任凭
555 | 如
556 | 如此
557 | 如果
558 | 如何
559 | 如其
560 | 如若
561 | 如上所述
562 | 若
563 | 若非
564 | 若是
565 | 啥
566 | 上下
567 | 尚且
568 | 设若
569 | 设使
570 | 甚而
571 | 甚么
572 | 甚至
573 | 省得
574 | 时候
575 | 什么
576 | 什么样
577 | 使得
578 | 是
579 | 是的
580 | 首先
581 | 谁
582 | 谁知
583 | 顺
584 | 顺着
585 | 似的
586 | 虽
587 | 虽然
588 | 虽说
589 | 虽则
590 | 随
591 | 随着
592 | 所
593 | 所以
594 | 他
595 | 他们
596 | 他人
597 | 它
598 | 它们
599 | 她
600 | 她们
601 | 倘
602 | 倘或
603 | 倘然
604 | 倘若
605 | 倘使
606 | 腾
607 | 替
608 | 通过
609 | 同
610 | 同时
611 | 哇
612 | 万一
613 | 往
614 | 望
615 | 为
616 | 为何
617 | 为了
618 | 为什么
619 | 为着
620 | 喂
621 | 嗡嗡
622 | 我
623 | 我们
624 | 呜
625 | 呜呼
626 | 乌乎
627 | 无论
628 | 无宁
629 | 毋宁
630 | 嘻
631 | 吓
632 | 相对而言
633 | 像
634 | 向
635 | 向着
636 | 嘘
637 | 呀
638 | 焉
639 | 沿
640 | 沿着
641 | 要
642 | 要不
643 | 要不然
644 | 要不是
645 | 要么
646 | 要是
647 | 也
648 | 也罢
649 | 也好
650 | 一
651 | 一般
652 | 一旦
653 | 一方面
654 | 一来
655 | 一切
656 | 一样
657 | 一则
658 | 依
659 | 依照
660 | 矣
661 | 以
662 | 以便
663 | 以及
664 | 以免
665 | 以至
666 | 以至于
667 | 以致
668 | 抑或
669 | 因
670 | 因此
671 | 因而
672 | 因为
673 | 哟
674 | 用
675 | 由
676 | 由此可见
677 | 由于
678 | 有
679 | 有的
680 | 有关
681 | 有些
682 | 又
683 | 于
684 | 于是
685 | 于是乎
686 | 与
687 | 与此同时
688 | 与否
689 | 与其
690 | 越是
691 | 云云
692 | 哉
693 | 再说
694 | 再者
695 | 在
696 | 在下
697 | 咱
698 | 咱们
699 | 则
700 | 怎
701 | 怎么
702 | 怎么办
703 | 怎么样
704 | 怎样
705 | 咋
706 | 照
707 | 照着
708 | 者
709 | 这
710 | 这边
711 | 这儿
712 | 这个
713 | 这会儿
714 | 这就是说
715 | 这里
716 | 这么
717 | 这么点儿
718 | 这么些
719 | 这么样
720 | 这时
721 | 这些
722 | 这样
723 | 正如
724 | 吱
725 | 之
726 | 之类
727 | 之所以
728 | 之一
729 | 只是
730 | 只限
731 | 只要
732 | 只有
733 | 至
734 | 至于
735 | 诸位
736 | 着
737 | 着呢
738 | 自
739 | 自从
740 | 自个儿
741 | 自各儿
742 | 自己
743 | 自家
744 | 自身
745 | 综上所述
746 | 总的来看
747 | 总的来说
748 | 总的说来
749 | 总而言之
750 | 总之
751 | 纵
752 | 纵令
753 | 纵然
754 | 纵使
755 | 遵照
756 | 作为
757 | 兮
758 | 呃
759 | 呗
760 | 咚
761 | 咦
762 | 喏
763 | 啐
764 | 喔唷
765 | 嗬
766 | 嗯
767 | 嗳
--------------------------------------------------------------------------------
/projects/gaokaozw/四川大学机器智能实验室停用词库.txt:
--------------------------------------------------------------------------------
1 | 打开天窗说亮话
2 | 到目前为止
3 | 赶早不赶晚
4 | 常言说得好
5 | 何乐而不为
6 | 毫无保留地
7 | 由此可见
8 | 这就是说
9 | 这么点儿
10 | 综上所述
11 | 总的来看
12 | 总的来说
13 | 总的说来
14 | 总而言之
15 | 相对而言
16 | 除此之外
17 | 反过来说
18 | 恰恰相反
19 | 如上所述
20 | 换句话说
21 | 具体地说
22 | 具体说来
23 | 另一方面
24 | 与此同时
25 | 一则通过
26 | 毫无例外
27 | 不然的话
28 | 从此以后
29 | 从古到今
30 | 从古至今
31 | 从今以后
32 | 大张旗鼓
33 | 从无到有
34 | 从早到晚
35 | 弹指之间
36 | 不亦乐乎
37 | 不知不觉
38 | 不止一次
39 | 不择手段
40 | 不可开交
41 | 不可抗拒
42 | 不仅仅是
43 | 不管怎样
44 | 挨家挨户
45 | 长此下去
46 | 长话短说
47 | 除此而外
48 | 除此以外
49 | 除此之外
50 | 得天独厚
51 | 川流不息
52 | 长期以来
53 | 挨门挨户
54 | 挨门逐户
55 | 多多少少
56 | 多多益善
57 | 二话不说
58 | 更进一步
59 | 二话没说
60 | 分期分批
61 | 风雨无阻
62 | 归根到底
63 | 归根结底
64 | 反之亦然
65 | 大面儿上
66 | 倒不如说
67 | 成年累月
68 | 换句话说
69 | 或多或少
70 | 简而言之
71 | 接连不断
72 | 尽如人意
73 | 尽心竭力
74 | 尽心尽力
75 | 尽管如此
76 | 据我所知
77 | 具体地说
78 | 具体来说
79 | 具体说来
80 | 近几年来
81 | 每时每刻
82 | 屡次三番
83 | 三番两次
84 | 三番五次
85 | 三天两头
86 | 另一方面
87 | 老老实实
88 | 年复一年
89 | 恰恰相反
90 | 顷刻之间
91 | 穷年累月
92 | 千万千万
93 | 日复一日
94 | 如此等等
95 | 如前所述
96 | 如上所述
97 | 一方面
98 | 切不可
99 | 顷刻间
100 | 全身心
101 | 另方面
102 | 另一个
103 | 猛然间
104 | 默默地
105 | 就是说
106 | 近年来
107 | 尽可能
108 | 接下来
109 | 简言之
110 | 急匆匆
111 | 即是说
112 | 基本上
113 | 换言之
114 | 充其极
115 | 充其量
116 | 暗地里
117 | 反之则
118 | 比如说
119 | 背地里
120 | 背靠背
121 | 并没有
122 | 不得不
123 | 不得了
124 | 不得已
125 | 不仅仅
126 | 不经意
127 | 不能不
128 | 不外乎
129 | 不由得
130 | 不怎么
131 | 不至于
132 | 策略地
133 | 差不多
134 | 常言道
135 | 常言说
136 | 多年来
137 | 多年前
138 | 差一点
139 | 敞开儿
140 | 抽冷子
141 | 大不了
142 | 反倒是
143 | 反过来
144 | 大体上
145 | 当口儿
146 | 倒不如
147 | 怪不得
148 | 动不动
149 | 看起来
150 | 看上去
151 | 看样子
152 | 够瞧的
153 | 到了儿
154 | 呆呆地
155 | 来不及
156 | 来得及
157 | 到头来
158 | 连日来
159 | 于是乎
160 | 为什么
161 | 这会儿
162 | 换言之
163 | 那会儿
164 | 那么些
165 | 那么样
166 | 什么样
167 | 反过来
168 | 紧接着
169 | 就是说
170 | 要不然
171 | 要不是
172 | 一方面
173 | 以至于
174 | 自个儿
175 | 自各儿
176 | 之所以
177 | 这么些
178 | 这么样
179 | 怎么办
180 | 怎么样
181 | 谁知
182 | 顺着
183 | 似的
184 | 虽然
185 | 虽说
186 | 虽则
187 | 随着
188 | 所以
189 | 他们
190 | 他人
191 | 它们
192 | 她们
193 | 倘或
194 | 倘然
195 | 倘若
196 | 倘使
197 | 要么
198 | 要是
199 | 也罢
200 | 也好
201 | 以便
202 | 依照
203 | 以及
204 | 以免
205 | 以至
206 | 以致
207 | 抑或
208 | 因此
209 | 因而
210 | 因为
211 | 由于
212 | 有的
213 | 有关
214 | 有些
215 | 于是
216 | 与否
217 | 与其
218 | 越是
219 | 云云
220 | 一般
221 | 一旦
222 | 一来
223 | 一切
224 | 一样
225 | 同时
226 | 万一
227 | 为何
228 | 为了
229 | 为着
230 | 嗡嗡
231 | 我们
232 | 呜呼
233 | 乌乎
234 | 无论
235 | 无宁
236 | 沿着
237 | 毋宁
238 | 向着
239 | 照着
240 | 怎么
241 | 咱们
242 | 在下
243 | 再说
244 | 再者
245 | 怎样
246 | 这边
247 | 这儿
248 | 这个
249 | 这里
250 | 这么
251 | 这时
252 | 这些
253 | 这样
254 | 正如
255 | 之类
256 | 之一
257 | 只是
258 | 只限
259 | 只要
260 | 只有
261 | 至于
262 | 诸位
263 | 着呢
264 | 纵令
265 | 纵然
266 | 纵使
267 | 遵照
268 | 作为
269 | 喔唷
270 | 自从
271 | 自己
272 | 自家
273 | 自身
274 | 总之
275 | 要不
276 | 哎呀
277 | 哎哟
278 | 俺们
279 | 按照
280 | 吧哒
281 | 罢了
282 | 本着
283 | 比方
284 | 比如
285 | 鄙人
286 | 彼此
287 | 别的
288 | 别说
289 | 并且
290 | 不比
291 | 不成
292 | 不单
293 | 不但
294 | 不独
295 | 不管
296 | 不光
297 | 不过
298 | 不仅
299 | 不拘
300 | 不论
301 | 不怕
302 | 不然
303 | 不如
304 | 不特
305 | 不惟
306 | 不问
307 | 不只
308 | 朝着
309 | 趁着
310 | 除非
311 | 除了
312 | 此间
313 | 此外
314 | 从而
315 | 但是
316 | 当着
317 | 的话
318 | 等等
319 | 叮咚
320 | 对于
321 | 多少
322 | 而况
323 | 而且
324 | 而是
325 | 而外
326 | 而言
327 | 而已
328 | 尔后
329 | 反之
330 | 非但
331 | 非徒
332 | 否则
333 | 嘎登
334 | 各个
335 | 各位
336 | 各种
337 | 各自
338 | 根据
339 | 故此
340 | 固然
341 | 关于
342 | 果然
343 | 果真
344 | 哈哈
345 | 何处
346 | 何况
347 | 何时
348 | 哼唷
349 | 呼哧
350 | 还是
351 | 还有
352 | 或是
353 | 或者
354 | 极了
355 | 及其
356 | 及至
357 | 即便
358 | 即或
359 | 即令
360 | 即若
361 | 即使
362 | 既然
363 | 既是
364 | 继而
365 | 加之
366 | 假如
367 | 假若
368 | 假使
369 | 鉴于
370 | 几时
371 | 较之
372 | 接着
373 | 结果
374 | 进而
375 | 尽管
376 | 经过
377 | 就是
378 | 可见
379 | 可是
380 | 可以
381 | 况且
382 | 开始
383 | 开外
384 | 来着
385 | 例如
386 | 连同
387 | 两者
388 | 另外
389 | 慢说
390 | 漫说
391 | 每当
392 | 莫若
393 | 某个
394 | 某些
395 | 哪边
396 | 哪儿
397 | 哪个
398 | 哪里
399 | 哪年
400 | 哪怕
401 | 哪天
402 | 哪些
403 | 哪样
404 | 那边
405 | 那儿
406 | 那个
407 | 那里
408 | 那么
409 | 那时
410 | 那些
411 | 那样
412 | 乃至
413 | 宁可
414 | 宁肯
415 | 宁愿
416 | 你们
417 | 啪达
418 | 旁人
419 | 凭借
420 | 其次
421 | 其二
422 | 其他
423 | 其它
424 | 其一
425 | 其余
426 | 其中
427 | 起见
428 | 起见
429 | 岂但
430 | 前后
431 | 前者
432 | 然而
433 | 然后
434 | 然则
435 | 人家
436 | 任何
437 | 任凭
438 | 如此
439 | 如果
440 | 如何
441 | 如其
442 | 如若
443 | 若非
444 | 若是
445 | 上下
446 | 尚且
447 | 设若
448 | 设使
449 | 甚而
450 | 甚么
451 | 甚至
452 | 省得
453 | 时候
454 | 什么
455 | 使得
456 | 是的
457 | 首先
458 | 首先
459 | 其次
460 | 再次
461 | 最后
462 | 您们
463 | 它们
464 | 她们
465 | 他们
466 | 我们
467 | 你是
468 | 您是
469 | 我是
470 | 他是
471 | 她是
472 | 它是
473 | 不是
474 | 你们
475 | 啊哈
476 | 啊呀
477 | 啊哟
478 | 挨次
479 | 挨个
480 | 挨着
481 | 哎呀
482 | 哎哟
483 | 俺们
484 | 按理
485 | 按期
486 | 默然
487 | 按时
488 | 按说
489 | 按照
490 | 暗中
491 | 暗自
492 | 昂然
493 | 八成
494 | 倍感
495 | 倍加
496 | 本人
497 | 本身
498 | 本着
499 | 并非
500 | 别人
501 | 必定
502 | 比起
503 | 比如
504 | 比照
505 | 鄙人
506 | 毕竟
507 | 必将
508 | 必须
509 | 并肩
510 | 并没
511 | 并排
512 | 并且
513 | 并无
514 | 勃然
515 | 不必
516 | 不常
517 | 不大
518 | 不单
519 | 不但
520 | 而且
521 | 不得
522 | 不迭
523 | 不定
524 | 不独
525 | 不对
526 | 不妨
527 | 不管
528 | 不光
529 | 不过
530 | 不会
531 | 不仅
532 | 不拘
533 | 不力
534 | 不了
535 | 不料
536 | 不论
537 | 不满
538 | 不免
539 | 不起
540 | 不巧
541 | 不然
542 | 不日
543 | 不少
544 | 不胜
545 | 不时
546 | 不是
547 | 不同
548 | 不能
549 | 不要
550 | 不外
551 | 不下
552 | 不限
553 | 不消
554 | 不已
555 | 不再
556 | 不曾
557 | 不止
558 | 不只
559 | 才能
560 | 彻夜
561 | 趁便
562 | 趁机
563 | 趁热
564 | 趁势
565 | 趁早
566 | 趁着
567 | 成心
568 | 乘机
569 | 乘势
570 | 乘隙
571 | 乘虚
572 | 诚然
573 | 迟早
574 | 充分
575 | 出来
576 | 出去
577 | 除此
578 | 除非
579 | 除开
580 | 除了
581 | 除去
582 | 除却
583 | 除外
584 | 处处
585 | 传说
586 | 传闻
587 | 纯粹
588 | 此后
589 | 此间
590 | 此外
591 | 此中
592 | 次第
593 | 匆匆
594 | 从不
595 | 从此
596 | 从而
597 | 从宽
598 | 从来
599 | 从轻
600 | 从速
601 | 从头
602 | 从未
603 | 从小
604 | 从新
605 | 从严
606 | 从优
607 | 从中
608 | 从重
609 | 凑巧
610 | 存心
611 | 达旦
612 | 打从
613 | 大大
614 | 大抵
615 | 大都
616 | 大多
617 | 大凡
618 | 大概
619 | 大家
620 | 大举
621 | 大略
622 | 大约
623 | 大致
624 | 待到
625 | 单纯
626 | 单单
627 | 但是
628 | 但愿
629 | 当场
630 | 当儿
631 | 当即
632 | 当然
633 | 当庭
634 | 当头
635 | 当下
636 | 当真
637 | 当中
638 | 当着
639 | 倒是
640 | 到处
641 | 到底
642 | 到头
643 | 得起
644 | 的话
645 | 的确
646 | 等到
647 | 等等
648 | 顶多
649 | 动辄
650 | 陡然
651 | 独自
652 | 断然
653 | 对于
654 | 顿时
655 | 多次
656 | 多多
657 | 多亏
658 | 而后
659 | 而论
660 | 而且
661 | 而是
662 | 而外
663 | 而言
664 | 而已
665 | 而又
666 | 尔等
667 | 反倒
668 | 反而
669 | 反手
670 | 反之
671 | 方才
672 | 方能
673 | 非常
674 | 非但
675 | 非得
676 | 分头
677 | 奋勇
678 | 愤然
679 | 更为
680 | 更加
681 | 根据
682 | 个人
683 | 各式
684 | 刚才
685 | 敢情
686 | 该当
687 | 嘎嘎
688 | 否则
689 | 赶快
690 | 敢于
691 | 刚好
692 | 刚巧
693 | 高低
694 | 格外
695 | 隔日
696 | 隔夜
697 | 公然
698 | 过于
699 | 果然
700 | 果真
701 | 光是
702 | 关于
703 | 共总
704 | 姑且
705 | 故此
706 | 故而
707 | 故意
708 | 固然
709 | 惯常
710 | 毫不
711 | 毫无
712 | 很多
713 | 何须
714 | 好在
715 | 何必
716 | 何尝
717 | 何妨
718 | 何苦
719 | 何况
720 | 何止
721 | 很少
722 | 轰然
723 | 后来
724 | 呼啦
725 | 哗啦
726 | 互相
727 | 忽地
728 | 忽然
729 | 话说
730 | 或是
731 | 伙同
732 | 豁然
733 | 恍然
734 | 还是
735 | 或许
736 | 或者
737 | 基本
738 | 基于
739 | 极大
740 | 极度
741 | 极端
742 | 极力
743 | 极其
744 | 极为
745 | 即便
746 | 即将
747 | 及其
748 | 及至
749 | 即刻
750 | 即令
751 | 即使
752 | 几度
753 | 几番
754 | 几乎
755 | 几经
756 | 既然
757 | 继而
758 | 继之
759 | 加上
760 | 加以
761 | 加之
762 | 假如
763 | 假若
764 | 假使
765 | 间或
766 | 将才
767 | 简直
768 | 鉴于
769 | 将近
770 | 将要
771 | 交口
772 | 较比
773 | 较为
774 | 较之
775 | 皆可
776 | 截然
777 | 截至
778 | 藉以
779 | 借此
780 | 借以
781 | 届时
782 | 尽快
783 | 近来
784 | 进而
785 | 进来
786 | 进去
787 | 尽管
788 | 尽量
789 | 尽然
790 | 就算
791 | 居然
792 | 就此
793 | 就地
794 | 竟然
795 | 究竟
796 | 经常
797 | 尽早
798 | 精光
799 | 经过
800 | 就是
801 | 局外
802 | 举凡
803 | 据称
804 | 据此
805 | 据实
806 | 据说
807 | 可好
808 | 看来
809 | 开外
810 | 绝不
811 | 决不
812 | 据悉
813 | 决非
814 | 绝顶
815 | 绝对
816 | 绝非
817 | 可见
818 | 可能
819 | 可是
820 | 可以
821 | 恐怕
822 | 来讲
823 | 来看
824 | 快要
825 | 况且
826 | 拦腰
827 | 牢牢
828 | 老是
829 | 累次
830 | 累年
831 | 理当
832 | 理该
833 | 理应
834 | 例如
835 | 立地
836 | 立刻
837 | 立马
838 | 立时
839 | 联袂
840 | 连连
841 | 连日
842 | 路经
843 | 临到
844 | 连声
845 | 连同
846 | 连袂
847 | 另外
848 | 另行
849 | 屡次
850 | 屡屡
851 | 缕缕
852 | 率尔
853 | 率然
854 | 略加
855 | 略微
856 | 略为
857 | 论说
858 | 马上
859 | 猛然
860 | 没有
861 | 每当
862 | 每逢
863 | 每每
864 | 莫不
865 | 莫非
866 | 莫如
867 | 莫若
868 | 哪怕
869 | 那么
870 | 那末
871 | 那些
872 | 乃至
873 | 难道
874 | 难得
875 | 难怪
876 | 难说
877 | 你们
878 | 凝神
879 | 宁可
880 | 宁肯
881 | 宁愿
882 | 偶而
883 | 偶尔
884 | 碰巧
885 | 譬如
886 | 偏偏
887 | 平素
888 | 迫于
889 | 扑通
890 | 其次
891 | 其后
892 | 其实
893 | 其它
894 | 起初
895 | 起来
896 | 起首
897 | 起头
898 | 起先
899 | 岂但
900 | 岂非
901 | 岂止
902 | 恰逢
903 | 恰好
904 | 恰恰
905 | 恰巧
906 | 恰如
907 | 恰似
908 | 前后
909 | 前者
910 | 切莫
911 | 切切
912 | 切勿
913 | 亲口
914 | 亲身
915 | 亲手
916 | 亲眼
917 | 亲自
918 | 顷刻
919 | 请勿
920 | 取道
921 | 权时
922 | 全都
923 | 全力
924 | 全年
925 | 全然
926 | 然而
927 | 然后
928 | 人家
929 | 人人
930 | 仍旧
931 | 仍然
932 | 日见
933 | 日渐
934 | 日益
935 | 日臻
936 | 如常
937 | 如次
938 | 如果
939 | 如今
940 | 如期
941 | 如若
942 | 如上
943 | 如下
944 | 上来
945 | 上去
946 | 瑟瑟
947 | 沙沙
948 | 啊
949 | 哎
950 | 唉
951 | 俺
952 | 按
953 | 吧
954 | 把
955 | 甭
956 | 别
957 | 嘿
958 | 很
959 | 乎
960 | 会
961 | 或
962 | 既
963 | 及
964 | 啦
965 | 了
966 | 们
967 | 你
968 | 您
969 | 哦
970 | 砰
971 | 啊
972 | 你
973 | 我
974 | 他
975 | 她
976 | 它
--------------------------------------------------------------------------------
/projects/matplotlib-top-50-visualizations/README.md:
--------------------------------------------------------------------------------
1 | # Matplotlib 必须掌握的 50 个可视化图表(附完整 Python 源代码)
2 |
3 | ## 获取地址一:Github
4 |
5 | https://github.com/liyangbit/PyDataRoad/tree/master/projects/matplotlib-top-50-visualizations
6 |
7 | ## 获取地址二:百度网盘
8 |
9 | 链接:https://pan.baidu.com/s/1-C2MB9jvLN5ctjg31YKzfQ
10 | 提取码:s5pc
11 |
12 | 欢迎关注个人微信公众号“Python数据之道”(ID:PyDataLab)
13 |
14 |
15 |

16 |
17 |
--------------------------------------------------------------------------------
/projects/ufo/README.md:
--------------------------------------------------------------------------------
1 |
2 | 数据文件 `nuforc_events.csv` ,下载链接,如下:
3 |
4 | https://url28.ctfile.com/f/23159928-539042616-e99b1c
5 | (访问密码:2021)
6 |
--------------------------------------------------------------------------------
/projects/zhilian_analysis/README.md:
--------------------------------------------------------------------------------
1 | # zl_analysis
2 |
3 | zhilian_data_analysis.ipynb 为主分析代码
4 |
5 | word_cloud 为词云图分析的代码
6 |
7 | 先运行主分析代码,在运行词云图分析代码
8 |
9 | 欢迎关注个人微信公众号“Python数据之道”(ID:PyDataLab)
10 |
11 |
12 |
13 |
14 |

15 |
--------------------------------------------------------------------------------
/projects/zhilian_analysis/colors.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liyangbit/PyDataLab/78ceb8d03ce93490f1613d65b9505fb609b34bd8/projects/zhilian_analysis/colors.png
--------------------------------------------------------------------------------
/projects/zhilian_analysis/word_cloud.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 | """
3 | Created on Wed May 17 2017
4 |
5 | @author: lemon
6 | """
7 |
8 | import jieba
9 | from wordcloud import WordCloud, ImageColorGenerator
10 | import matplotlib.pyplot as plt
11 | import os
12 | import PIL.Image as Image
13 | import numpy as np
14 |
15 |
16 | with open('brief_quanguo.txt', 'rb') as f: # 读取文件内容
17 | text = f.read()
18 | f.close()
19 |
20 |
21 | # 首先使用 jieba 中文分词工具进行分词
22 | wordlist = jieba.cut(text, cut_all=False)
23 | # cut_all, True为全模式,False为精确模式
24 |
25 | wordlist_space_split = ' '.join(wordlist)
26 |
27 | d = os.path.dirname(__file__)
28 | alice_coloring = np.array(Image.open(os.path.join(d,'colors.png')))
29 | my_wordcloud = WordCloud(background_color='#F0F8FF', max_words=100, mask=alice_coloring,
30 | max_font_size=300, random_state=42).generate(wordlist_space_split)
31 |
32 | image_colors = ImageColorGenerator(alice_coloring)
33 |
34 | plt.show(my_wordcloud.recolor(color_func=image_colors))
35 | plt.imshow(my_wordcloud) # 以图片的形式显示词云
36 | plt.axis('off') # 关闭坐标轴
37 | plt.show()
38 |
39 | my_wordcloud.to_file(os.path.join(d, 'brief_quanguo_colors_cloud.png'))
--------------------------------------------------------------------------------