Python语言程序设计_9

学习过程主要依照中国MOOC课程,感谢MOOC,感谢北理授课大佬。

从数据处理到人工智能

数据表示 ==> 数据清洗 ==> 数据统计 ==> 数据可视化 ==> 数据挖掘 ==> 人工智能

Python库之数据分析

Numpy:表达N维数组的最基本库;
Pandas:Python数据分析高层次应用;
SciPy:数学、科学和工程计算功能库;

Python库之数据可视化

Matpoltlib:高质量的二维数据可视化库;
Seaborn:统计类数据可视化功能库;
Mayavi:三维科学数据可视化功能库;

Python库之文本处理

PyPDF2:用来处理PDF文件的工具集;
NLTK:自然语言处理第三方库;
Python-docx:创建或更新Microsoft Word文件的第三方库;

Python库之机器学习

Scikit-learn:机器学习方法工具集;
TensorFlow:AlphaGO背后的机器学习计算框架;
MXNet:基于神经网络的深度学习计算框架;

实例:霍兰德人格分析雷达图

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
#HollandRadarDraw
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family']='SimHei'
radar_labels = np.array(['研究型(I)','艺术型(A)','社会型(S)',\
'企业型(E)','常规型(C)','现实型(R)']) #雷达标签
nAttr = 6
data = np.array([[0.40, 0.32, 0.35, 0.30, 0.30, 0.88],
[0.85, 0.35, 0.30, 0.40, 0.40, 0.30],
[0.43, 0.89, 0.30, 0.28, 0.22, 0.30],
[0.30, 0.25, 0.48, 0.85, 0.45, 0.40],
[0.20, 0.38, 0.87, 0.45, 0.32, 0.28],
[0.34, 0.31, 0.38, 0.40, 0.92, 0.28]]) #数据值
data_labels = ('艺术家', '实验员', '工程师', '推销员', '社会工作者','记事员')
angles = np.linspace(0, 2*np.pi, nAttr, endpoint=False)
data = np.concatenate((data, [data[0]]))
angles = np.concatenate((angles, [angles[0]]))
fig = plt.figure(facecolor="white")
plt.subplot(111, polar=True)
plt.plot(angles,data,'o-', linewidth=1, alpha=0.2)
plt.fill(angles,data, alpha=0.25)
plt.thetagrids(angles*180/np.pi, radar_labels,frac = 1.2)
plt.figtext(0.52, 0.95, '霍兰德人格分析', ha='center', size=20)
legend = plt.legend(data_labels, loc=(0.94, 0.80), labelspacing=0.1)
plt.setp(legend.get_texts(), fontsize='large')
plt.grid(True)
plt.savefig('holland_radar.jpg')
plt.show()

运行程序会发现,所有中文字体都变成了方框,网上找到了不少方法,在此记录自己成功的方案,总体来讲就是为系统安装需要的SimHei字体并增加到matplotlib中。

(1)下载一个ttf中文字体,并在系统中安装。可在此下载 https://github.com/dolbydu/font, 我这里下载好后放在了桌面。

(2)在 /usr/share/fonts 路径下创建存放此字体的文件夹myfonts,并下载的ttf文件复制到此文件夹中

1
2
3
4
cd /usr/share/fonts
sudo mkdir myfonts
cd myfonts/
sudo cp /home/hpf/桌面/SimHei.ttf /usr/share/fonts/myfonts/

(3)给系统安装这个字体

1
2
3
4
5
#生成字体索引信息. 会显示字体的font-family
sudo mkfontscale
sudo mkfontdir
#更新字体缓存:
fc-cache

此时在终端运行:fc-list :lang=zh,会发现系统已经安装。

(4)修改matplotlibrc文件
找到路径/home/hpf/anaconda3/lib/python3.6/site-packages/matplotlib/mpl-data/matplotlibrc

1
2
3
4
# 去掉这一行注释
font.family : sans-serif
# 去掉这一行注释,并新增我们刚下载的中文字体 
font.sans-serif : DejaVu Sans, Bitstream Vera Sans, Computer Modern Sans Serif, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif,SimHei

下面这句注释要去掉,不然中文减号也显示方块:

1
axes.unicode_minus  : False

(5)为matplotlib增加中文字体
将下载的字体文件复制一份到步骤4找到的配置文件的同级文件夹fonts/ttf中。

(6) 清除本地matplotlib中的缓存

1
rm -rf ~/.cache/matplotlib

从Web解析到网络空间

Python库之网络爬虫

Requests:最友好的网络爬虫功能库;
Scrapy:优秀的网络爬虫框架;
pyspider:强大的Web页面爬取系统;

Python库之Web信息提取

Beautiful Soup:HTML和XL的解析库;
Re:正则表达式解析和处理功能库;
Python-Goose:提取文章类型Web页面的功能库;

Python库之Web网站开发

Django:最流行的Web应用框架;
Pyramid:规模适中的Web应用框架;
Flask:Web应用开发微框架;

Python库之网络应用开发

WeRoBot:微信公众号开发框架;
aip:百度AI开放平台接口;
MyQR:二维码生成第三方库;

从人机交互到艺术设计

Python库之图形用户界面

PyQt5:Qt开发框架的Python接口;
wxPython:跨平台GUI开发框架;
PyGObject:使用GTK+开发GUI的功能库;

Python库之游戏开发

PyGame:简单的游戏开发功能库;
Panda3D:开源、跨平台的3D渲染和游戏开发库;
cocos2D:构建2D游戏和图形界面交互式应用的框架;

Python库之虚拟现实

VR Zero:在树莓派上开发VR应用的Python库;
pyvor:Oculus Rift的Python开发接口;
Vizard:基于Python的通用VR开发引擎;

Python库之图形艺术

Quads:迭代的艺术;
ascii_art:ASCII艺术库;
turtle:海龟绘图体系;

实例:玫瑰花绘制

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
#RoseDraw.py
import turtle as t
# 定义一个曲线绘制函数
def DegreeCurve(n, r, d=1):
for i in range(n):
t.left(d)
t.circle(r, abs(d))
# 初始位置设定
s = 0.2 # size
t.setup(450*5*s, 750*5*s)
t.pencolor("black")
t.fillcolor("red")
t.speed(100)
t.penup()
t.goto(0, 900*s)
t.pendown()
# 绘制花朵形状
t.begin_fill()
t.circle(200*s,30)
DegreeCurve(60, 50*s)
t.circle(200*s,30)
DegreeCurve(4, 100*s)
t.circle(200*s,50)
DegreeCurve(50, 50*s)
t.circle(350*s,65)
DegreeCurve(40, 70*s)
t.circle(150*s,50)
DegreeCurve(20, 50*s, -1)
t.circle(400*s,60)
DegreeCurve(18, 50*s)
t.fd(250*s)
t.right(150)
t.circle(-500*s,12)
t.left(140)
t.circle(550*s,110)
t.left(27)
t.circle(650*s,100)
t.left(130)
t.circle(-300*s,20)
t.right(123)
t.circle(220*s,57)
t.end_fill()
# 绘制花枝形状
t.left(120)
t.fd(280*s)
t.left(115)
t.circle(300*s,33)
t.left(180)
t.circle(-300*s,33)
DegreeCurve(70, 225*s, -1)
t.circle(350*s,104)
t.left(90)
t.circle(200*s,105)
t.circle(-500*s,63)
t.penup()
t.goto(170*s,-30*s)
t.pendown()
t.left(160)
DegreeCurve(20, 2500*s)
DegreeCurve(220, 250*s, -1)
# 绘制一个绿色叶子
t.fillcolor('green')
t.penup()
t.goto(670*s,-180*s)
t.pendown()
t.right(140)
t.begin_fill()
t.circle(300*s,120)
t.left(60)
t.circle(300*s,120)
t.end_fill()
t.penup()
t.goto(180*s,-550*s)
t.pendown()
t.right(85)
t.circle(600*s,40)
# 绘制另一个绿色叶子
t.penup()
t.goto(-150*s,-1000*s)
t.pendown()
t.begin_fill()
t.rt(120)
t.circle(300*s,115)
t.left(75)
t.circle(300*s,100)
t.end_fill()
t.penup()
t.goto(430*s,-1070*s)
t.pendown()
t.right(30)
t.circle(-600*s,35)
t.done()

以上。

:转载文章请注明出处,谢谢~