├── .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 | 11 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 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 | 20 | 21 | 31 | 32 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 126 | 127 | 128 | 129 | 130 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 1563372914630 163 | 168 | 169 | 170 | 171 | 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 | 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 | 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://tva1.sinaimg.cn/large/e6c9d24egy1h0iieh8vk4j20go05kaag.jpg)](https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzI2NjY5NzI0NA==&action=getalbum&album_id=1370549534602133504&scene=21#wechat_redirect) 46 | 47 | [![](https://tva1.sinaimg.cn/large/e6c9d24egy1h0iiejjflzj20go05kdhg.jpg)](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 | ![image23-程序运行后的动态图](https://ws2.sinaimg.cn/large/007EIIJlgy1g0pccq9i7yg30m80cib29.gif) 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 | "

1  Numpy数组对象
2  创建ndarray数组
3  Numpy的数值类型
4  ndarray数组的属性
5  ndarray数组的切片和索引
6  处理数组形状
6.1  形状转换
6.2  堆叠数组
6.3  数组的拆分
7  数组的类型转换
8  numpy常用统计函数
9  数组的广播
" 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 | " \n", 134 | " \n", 135 | " \n", 136 | " \n", 137 | " \n", 138 | " \n", 139 | " \n", 140 | " \n", 141 | " \n", 142 | " \n", 143 | " \n", 144 | " \n", 145 | " \n", 146 | " \n", 147 | " \n", 148 | " \n", 149 | " \n", 150 | " \n", 151 | " \n", 152 | " \n", 153 | " \n", 154 | "
wordsnumber
0a1
1b2
2c3
\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 | " \n", 211 | " \n", 212 | " \n", 213 | " \n", 214 | " \n", 215 | " \n", 216 | " \n", 217 | " \n", 218 | " \n", 219 | " \n", 220 | " \n", 221 | " \n", 222 | " \n", 223 | " \n", 224 | " \n", 225 | " \n", 226 | " \n", 227 | " \n", 228 | " \n", 229 | " \n", 230 | " \n", 231 | "
wordsnumber
1b2
0a1
2c3
\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 | " \n", 290 | " \n", 291 | " \n", 292 | " \n", 293 | " \n", 294 | " \n", 295 | " \n", 296 | " \n", 297 | " \n", 298 | " \n", 299 | " \n", 300 | " \n", 301 | " \n", 302 | " \n", 303 | " \n", 304 | " \n", 305 | " \n", 306 | " \n", 307 | " \n", 308 | " \n", 309 | " \n", 310 | "
wordsvalue
0b2
1c3
2e1
\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 | " \n", 350 | " \n", 351 | " \n", 352 | " \n", 353 | " \n", 354 | " \n", 355 | " \n", 356 | " \n", 357 | " \n", 358 | " \n", 359 | " \n", 360 | " \n", 361 | " \n", 362 | " \n", 363 | " \n", 364 | " \n", 365 | " \n", 366 | " \n", 367 | " \n", 368 | " \n", 369 | " \n", 370 | "
wordsvalue
1c3
0b2
2e1
\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 | " \n", 434 | " \n", 435 | " \n", 436 | " \n", 437 | " \n", 438 | " \n", 439 | " \n", 440 | " \n", 441 | " \n", 442 | " \n", 443 | " \n", 444 | " \n", 445 | " \n", 446 | " \n", 447 | " \n", 448 | " \n", 449 | " \n", 450 | " \n", 451 | " \n", 452 | " \n", 453 | " \n", 454 | "
wordsvalue
0b2
1c3
2e1
\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 | " \n", 494 | " \n", 495 | " \n", 496 | " \n", 497 | " \n", 498 | " \n", 499 | " \n", 500 | " \n", 501 | " \n", 502 | " \n", 503 | " \n", 504 | " \n", 505 | " \n", 506 | " \n", 507 | " \n", 508 | " \n", 509 | " \n", 510 | " \n", 511 | " \n", 512 | " \n", 513 | " \n", 514 | "
wordsvalue
0NaN2
1c3
2e1
\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')) --------------------------------------------------------------------------------