欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

第九章

程序员文章站 2022-05-30 17:45:12
...

第九章 Python计算生态概览

一、从数据处理到人工智能

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

  • 数据表示:采用合适方式用程序表达数据

  • 数据清理:数据归一化、数据转换、异常值处理

  • 数据统计:数据的概要理解,数量、分布、中位数等

  • 数据可视化:直观展示数据内涵的方式

  • 数据挖掘:从数据分析获得知识,产生数据外的价值

  • 人工智能:数据/语言/图像/视觉等方面深度分析与决策

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

#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()

三、从Web解析到网络空间

Python库之网络爬虫

1.Requests: 最友好的网络爬虫功能库

- 提供了简单易用的类HTTP协议网络爬虫功能
  • 支持连接池、SSL、Cookies、HTTP(S)代理等

  • Python最主要的页面级网络爬虫功能库

2.Scrapy: 优秀的网络爬虫框架

  • 提供了构建网络爬虫系统的框架功能,功能半成品

  • 支持批量和定时网页爬取、提供数据处理流程等

  • Python最主要且最专业的网络爬虫框架

3.pyspider: 强大的Web页面爬取系统

  • 提供了完整的网页爬取系统构建功能

  • 支持数据库后端、消息队列、优先级、分布式架构等

  • Python重要的网络爬虫类第三方库

Python库之Web信息提取

1.Beautiful Soup: HTML和XML的解析库

2.Re: 正则表达式解析和处理功能库

3.Python-Goose: 提取文章类型Web页面的功能库

Python库之Web网站开发

1.Django: 最流行的Web应用框架

2.Pyramid: 规模适中的Web应用框架

3.Flask: Web应用开发微框架

Python库之网络应用开发

1.WeRoBot: 微信公众号开发框架

2.aip: 百度AI开放平台接口

3.MyQR: 二维码生成第三方库

四、从人机交互到艺术设计

Python库之图形用户界面

1.PyQt5: Qt开发框架的Python接口

2.wxPython: 跨平台GUI开发框架

3.PyGObject: 使用GTK+开发GUI的功能库

Python库之游戏开发

1.PyGame: 简单的游戏开发功能库

2.Panda3D: 开源、跨平台的3D渲染和游戏开发库

3.cocos2d: 构建2D游戏和图形界面交互式应用的框架

Python库之虚拟现实

1.VR Zero: 在树莓派上开发VR应用的Python库

2.pyovr: Oculus Rift的Python开发接口

3.Vizard: 基于Python的通用VR开发引擎

Python库之图形艺术

1.Quads: 迭代的艺术

2.asciiart: ASCII艺术库

3.turtle: 海龟绘图体系

五、实例16: 玫瑰花绘制

#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()