在学习python时我们面临的最大的问题是:当程序出现异常的时候,不知道应该如何处理?错误提示看不懂!看懂也不知道怎么做!

下面是入门Python需要学习的内容,一共是四个大课程:

  1. Python系统化学习之路
    Python的学习路线
    人工智能领域中Python的应用
    Python的程序设计案例
  2. 初识Python
    认识python
    python语法之输入与输出
  3. Python基础入门
    Numpy
    Pandas
  4. Python程序设计基础学习与应用
    python命名规则
    字符串
    列表
    集合
    字典
    条件语句
    循环语句
    函数
    模块

在这里插入图片描述

Python系统化学习之路

Python的学习路线,分为【语法基础】、【能力提升】、【技术进阶】、【项目实战】四个板块

知识点大纲,涵盖了25个专题和212个知识点

Python的学习路线

在这里插入图片描述

人工智能领域中Python的应用

人工智能体系结构

在这里插入图片描述

人工智能技术矩阵

在这里插入图片描述

Python的程序设计案例

GitHub地址:
https://github.com/zhangziliang04/PythonStudy

为了方便大家下载,我fork到了码云:
https://gitee.com/zheng_bo_pu/PythonStudy

制作词云
import matplotlib.pyplot as plt
import jieba
from wordcloud import WordCloud

#1.课程名称
text = open('title.txt','r',encoding='utf-8').read()
#2.中文分词
cut_text = jieba.cut(text)
#3.空格切分
result = " ".join(cut_text)
# print(result)
# 4.生成词云l
wc = WordCloud(
    font_path='msyhbd.ttc',     #字体文件
    background_color='white',   #背景颜色
    width=1000,
    height=600,
    max_font_size=100,            #字体大小
    min_font_size=20,
    mask=plt.imread('python.jpg'),  #背景图片
    max_words=1000
)
wc.generate(result)
wc.to_file('result.png')    #图片保存

#5.显示图片
plt.figure('title')   #图片显示的名字
plt.imshow(wc)
plt.axis('off')        #关闭坐标
plt.show()

在这里插入图片描述

大家可以尝试更换title.txt文件以及python.jpg文件,当然simhei.ttf字体文件也是可以更换的

关于词云的制作细节,大家可以查看我的这篇文章:
https://blog.csdn.net/zbp_12138/article/details/104437838

实时图像采集
# 实时:视频图像采集(opencv)
import cv2
cap = cv2.VideoCapture(0)
# 从视频流循环帧
while True:
    ret, frame = cap.read()
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    cv2.imshow("Frame", frame)
    # 退出:Q
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
# 清理窗口
cv2.destroyAllWindows()

在这里插入图片描述

人脸识别

尝试运行代码:

# 实时:实时人脸检测
import cv2
import dlib

# 基于5特征点的人脸检测
detector = dlib.get_frontal_face_detector()
win = dlib.image_window()
cap = cv2.VideoCapture(0)

# 从视频流循环帧
while cap.isOpened():
    ret, frame = cap.read()
    image = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)
    # 检测灰度帧中的人脸
    dets = detector(image, 0)
    print("检测到人脸数量: {}".format(len(dets)))
    for i, d in enumerate(dets):
        print("Detection {}: Left: {} Top: {} Right: {} Bottom: {}".format(
            i, d.left(), d.top(), d.right(), d.bottom()))
    win.clear_overlay()
    win.set_image(image)
    win.add_overlay(dets)
cap.release()

发现报错了:
在这里插入图片描述
这里一定不要慌,仔细读一下就会发现是缺失了一个名为’dlib’的库,我们安装一下:
在这里插入图片描述
进度条加载完,出现successful就表示安装完成了

初识Python

在这里插入图片描述

认识python

Python的意思是蟒蛇,源于作者喜欢的一部电视剧,是龟叔在1989年圣诞节期间,为了打发无聊的圣诞节而用C语言编写的一个编程语言,Python正式诞生于1991年

Python目前有两个版本, Python2和Python3 ,我们学习使用的是Python3版本

Python官网:
https://www.python.org/

关于Python的安装方法,大家可以查看我的这篇文章:
Python入门_给小白的学习指南

python语法之输入与输出

打印语句print()
print("Hello World!")

print()方法自带换行

输入语句input()

在这里插入图片描述
input()语句输入的内容是字符串类型

Python基础入门

Numpy

Python科学计算领域,几乎所有科学计算库都依赖NumPy,它有以下基本功能:

  • 强大的N维数组对象
  • 广播功能
  • 基于C语言,速度快
  • 线性代数、傅里叶变换和随机数能力

下面来看一下具体操作:

常用函数
import numpy as np

arr = np.array([1,2,3,4,5,6,7,8,9,10])
print(arr)
print(arr.max())
print(arr.min())
print(arr.sum())

这里的四个输出,分别对应着arr数组,arr数组的最大值、最小值以及数组元素之和:
在这里插入图片描述
下面看一下怎么改变arr数组的形状:

import numpy as np

arr = np.array([1,2,3,4,5,6,7,8,9,10])
print(arr.shape)
arr = arr.reshape(2,5)
print(arr.shape)

可以看到,数组原来的形状是(10,1),经过reshape(2,5)后,形状变成了(2,5)即五列两行:
在这里插入图片描述
我们来看一下二维数组是怎么求平均数的:

import numpy as np

arr = np.array([1,2,3,4,5,6,7,8,9,10,11,12])
arr = arr.reshape(3,4)
print(np.average(arr))

得到的输出是6.5
在这里插入图片描述
一维数组的取值与列表相同,这里就不过多阐述了,下面看看二维数组是怎么取值的:

import numpy as np

arr = np.array([1,2,3,4,5,6,7,8,9,10,11,12])
arr = arr.reshape(3,4)
print(arr)
print(arr[0:2,2])

这里的"0:2"指的是取第一、二行,逗号后面的2表示的是第3个数,因为是从0开始计数的,所以取到了第一行和第二行的第三个数:
在这里插入图片描述
如果冒号前后没有指定,就会取全部行或列(左边对应行;右边对应列)

广播机制
import numpy as np

arr1 = np.array([1,2,3,4,5,6])
arr2 = 3 * arr1
arr3 = arr1 + arr2

print(arr1)
print(arr2)
print(arr3)

使用数组时,如果要同时对数组里的元素做四则运算,需要用到for循环,而numpy的广播机制免去了for循环:
在这里插入图片描述

向量化计算

基本原则:

  • 最大程度不使用for循环
  • 尽量使用NumPy自带的函数
  • 多使用广播

下面是两个矩阵相乘:

import numpy as np

arr1 = np.array([[1,2,3],[4,5,6]])
arr2 = np.array([[10,11,12,13],[14,15,16,17],[18,19,20,21]])
arr3 = np.dot(arr1,arr2)
print(arr1)
print(arr2)
print(arr3)

只有矩阵1的列数与矩阵2的行数相等时才能做矩阵乘法:
在这里插入图片描述
这样的广播机制比起使用for循环来说,计算量是大大地减少了

Pandas

Pandas为Python提供了高性能、易使用的数据计算功能

使用Pandas读取数据

方式1:

import pandas as pd

data = [{'name':'小明','age':18,'sex':'male'},
        {'name':'小王','age':20,'sex':'female'},
        {'name':'小郑','age':20,'sex':'male'}]
df = pd.DataFrame(data)
print(df)

在这里插入图片描述
方式2:

import pandas as pd

csv_data = pd.read_csv(r"C:\Users\Administrator\Downloads\results7.csv")
df = csv_data.head()
print(df)

csv文件内容:
在这里插入图片描述
读取csv文件:
在这里插入图片描述
head()方法不带参数,默认显示前5行,使用tail()可以查看后五条数据

方式3:

import pandas as pd
import sqlite3

with sqlite3.connect( 'data.db') as conn:
    new_data = pd.read_sq1_query('select * from class_4_data where age < 30;',conn)
print(new_data)
Pandas常用函数

以这段代码为基础举例:

import pandas as pd

data = [{'name':'小明','age':18,'sex':'male'},
        {'name':'小王','age':20,'sex':'female'},
        {'name':'小郑','age':20,'sex':'male'},
        {'name':'无名氏','age':30,'sex':'unknow'}]
df = pd.DataFrame(data)

选择数据:

age = df['age']

查看"age"这个字段:
在这里插入图片描述

age_even = df[df['age'] % 3 == 0]

选出年龄能被3整除的数据:
在这里插入图片描述
去重:

student = df['sex']. unique()

去掉重复的性别,返回一个数组:
在这里插入图片描述

unique_df = df.drop_duplicates('age', keep='first')

去掉第一个重复的数据:
在这里插入图片描述
如果把first改成last:

unique_df = df.drop_duplicates('name', keep='last')

在这里插入图片描述
将保留最后一个重复的数据

分组(groupby):

gender = df.groupby('sex').size()

按照性别分组:
在这里插入图片描述

Python程序设计基础学习与应用

Python是一种解释型、面向对象、动态数据类型的高级程序设计语言

python命名规则

  • 变量名只能包含字母、数字和下划线
  • 变量名可以字母或下划线开头,但不能以数字开头
  • 变量名不能包含空格,但可使用下划线来分隔其中的单词
  • 不要将Python关键字和函数名用作变量名,即不要使用Python保留用于特殊用途的单词
  • 变量名应既简短又具有描述性
  • 慎用小写字母I和大写字母0,因为他们可能被人错看成数字1和0

注意:应使用小写的Python变量名。在变量名中使用大写字母虽然不会导致错误,但还是要避免使用大写字母

字符串

字符串或串(String)是由数字、字母、下划线组成的一 串字符
字符串有多种形式,可以使用单引号(’…’),双引号("…") 来获得同样的结果
个反斜线加一个单一字符可以表示一个特殊字符,通常是不可打印的字符

在人工智能应用开发过程中,我们往往需要根据文件路径读取文件,一般文件路径的格式为:
C:Windows\temp\readme.txt

对比上表,我们需要把\换成\才可以正确读取路径,于是有: C:\Windows\temp\readme.txt

我们知道的意义是作为转义字符,跟其他不同的字母组合具有不同的含义,那么我们只要取消\的转义功能就可以获取原来的路径字符串了。于是有: r"C:\Windows\templreadme.txt"

列表

创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可
列表可以修改,可以用于切片、增、删、改、查

列表的增加需要通过对象点方法调用内置的append方法,但是每次只能增加一个元素

与不可更改的字符串不同,列表是一个可以更改的类型

集合

集合Set是一个包含无序不重复的元素的集体

创建方法:
1).使用大括号{}或者set()函数创建集合;
2).注意:创建一个空集合必须用set()而不是{},因为{}是用来创建一个空字 典的。

在使用数据集进行机器学习训练时,当图像数据必须以list的形式输入时,为了避免图像数据的重复,可以利用集合去重。

集合可以通过update方法和add方法增加元素

字典

  • 字典是一种可变的容器,可以存储任意类型的数据
  • 字典中的每个数据都是用"键"(key)进行索引,而不像其他序列可以用下标来进行索引
  • 字典中的数据没有先后顺序关系,字典的存储是无序的
  • 字典中的数据以键(key)-值(value)对形式进行映射存储
  • 字典的键不能重复,且只能用不可变类型作为字典的键
  • 键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一

条件语句

Python条件语句是通过一条或多条语句的执行结果(True或者False) 来决定执行的代码块

循环语句

Python for循环可以遍历任何序列的项目,另外一种执行循环的遍历方式是通过序列索引迭代

函数

在程序设计中,函数是组织好的,可重复使用的,用来实现单一, 或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。
在前面的学习中我们已经知道Python提供了许多内建函数,比如print()。 但我们也可以自己创建函数,这被叫做用户自定义函数。

在Python中,定义一一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。

模块

Python的强大还体现在"模块自信”上, 因为Python不仅有很强大的自有模块(或者包、库,比如为标准库),还有海量的第三方模块(或者包、库),任何人还都能自己开发模块(或者包、库),正是有了这么强大的"模块自信”,才体现了Python的优势所在。并且这种方式也正在不断被更多其它语言所借鉴。

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐