今天,大发红黑大发红黑我 们 正式开始数据分析课程的基础篇,Python 基础。

为什么是 Python 呢,在相关的开发语言调查中,使用过 Python 的开发者,大多数人都会把 Python 作为自己的主要语言。在数据分析领域,使用 Python 语言更是最多的。Python 语言语法简洁,搭建方便,而且还拥有庞大健全的第三方库供使用。比如科学计算大发红黑工具 库 Pandas 和 NumPy;深度学习大发红黑工具 Keras 和 TensorFlow;以及机器学习大发红黑工具 库 Scikit-learn 等等。

总之,如果大发红黑你 想在数据分析、机器学习等领域做深入研究的话,那么熟练掌握 Python 语言就是最好的敲门砖。

搭建语言环境

大发红黑大发红黑我 们 首先来了解下如何安装和搭建 Python 语言环境 

Python 版本的选择

当前流行的 Python 版本有两个,2.X 和 3.X,由于 2.X 即将不再维护,所以大发红黑我 建议直接使用 3.X 版本作为大发红黑你 的主要版本。

IDE 的选择

目前市面上流行着很多的 Python 编辑器,比如 Sublime,Notebook++ 等,不过大发红黑我 还是大发红黑推荐 如下两个

PyCharm:这是一个跨平台的 Python 开发大发红黑工具 ,不但拥有常规的调试、语法高亮,智能提示等功能外,还自带多个数据库连接器,使大发红黑你 在调试数据库的时候也能得心应手,不再忙于到处大发红黑下载 各种数据库客户端。

Jupyter:这个是一个 web 式的在线编辑器,每次运行一行代码,大发红黑你 都可以立即得到结果,非常方便,在代码调试阶段,用处无限。

Python 大发红黑软件 的安装

如果大发红黑你 是 Linux 或者 MacOS 操作系统,那么一般会自带 Python2.6 的版本。如果想要安装 3.X 的版本,需要自行编译安装,如果没有 Linux 操作基础的话,建议还是使用 大发红黑Win dows,以后有机会了,再学习 Linux 及相关操作。

如果是 大发红黑Win dows 操作系统,可以直接到 Python 官网大发红黑下载 .exe 安装包,一路下一步即可完成安装。

Python 基础语法

Hello World

相信大家都有这种经验,学习任何一门语言时,入门的都是输出 Hello World,下面大发红黑大发红黑我 们 就来看看如何使用 Python 来输出 Hello World

print("Hello World")
sum = 1 + 2
print("sum = %d" %sum)
>>>
Hello World
sum = 3

print 函数,用来在控制台打印输出,sum = 语法是声明变量并赋值,%d 是用来做字符串替换。

数据类型和变量

列表

list1 = ["1", "2", "test"]
print(list1)
list1.append("hello")
print(lists)
>>>
['1', '2', 'test']
['1', '2', 'test', 'hello']

list 是 Python 内置的一种数据类型,是一种有序的集合,可以随时添加和大发红黑删除 其中的元素。

元组

tuple1 = ("zhangsan", "lisi")
print(tuple1[0])
>>>
zhangsan

tuple 和 list 非常类似,但是 tuple 一旦初始化就不能修改。

字典

dict1 = {"name1": "zhangsan", "name2": "lisi", "name3": "wangwu"}
dict1["name1"]
>>>
'zhangsan'

Python 内置了字典:dict 全称 dictionary,在其他语言中也称为 map,使用键-值(key-value)存储,具有极快的查找速度。

集合

s = set([1, 2, 3])
print(s)
>>>
{1, 2, 3}

set 和 dict 类似,也是一组 key 的集合,但不存储 value。由于 key 不能重复,所以,在 set 中,没有重复的 key。

变量

变量的概念基本上和初中代数的方程变量是一致的,只是在计算机程序中,变量不仅可以是数字,还可以是任意数据类型。

a = 1
a = 3
print(a)
>>>
3

条件判断

age = 30
if age >= 18:
    print('your age is', age)
    print('good')
else:
    Print('your are not belong here')
>>>
your age is 30
good

if ... else... 是非常经典的条件判断语句,if 后面接条件表达式,如果成立,则执行下面的语句,否则执行 else 后面的语句。同时还要注意,Python 语言是采用代码缩进的方式来判断代码块的,一般是四个空格或者一个 tab,两者不要混用。

循环语句

names = {"zhangsan", "lisi", "wangwu"}
for name in names:
    print(name)
>>>
lisi
zhangsan
wangwu

names 是一个集合,为可迭代对象,使用 for 循环,name 会依次被赋值给 names 中的元素值。

sum = 0
n = 99
while n > 0:
    sum = sum + n
    n = n - 2
print(sum)
>>>
2500

在循环内部变量 n 不断自减,直到变为-1时,不再满足 while 条件,循环退出。

高级特性

切片

L = ['zhangsan', 'lisi', 'wangwu', 'zhaoliu']
print(L[1])
print(L[1:3])
>>>
lisi
['lisi', 'wangwu']

Python 中,下标都是从 0 开始的,且都是左闭右开区间

迭代

对于列表、元组和字典,都是可迭代对象,可以使用 for 来进行迭代取值

L = ['zhangsan', 'lisi', 'wangwu', 'zhaoliu']
D = {"zhangsan":1, "lisi": 2, "wangwu": 3, "zhaoliu": 4}
for l in L:
    print(l)
print('\n')
for k,v in D.items():
    print("键:", k, ",", "值", v)
>>>
zhangsan
lisi
wangwu
zhaoliu

键: zhangsan , 值 1
键: lisi , 值 2
键: wangwu , 值 3
键: zhaoliu , 值 4

对于字典,使用 items(),可是同时遍历键值对

函数

调用函数

Python 内置了很多有用的函数,大发红黑大发红黑我 们 可以直接调用

>>> abs(100)
100
>>> abs(-20)
20
>>> abs(12.34)
12.34
>>> max(1, 2)
2
>>> max(2, 3, 1, -5)
3

在调用函数时,如果传入的参数有问题,程序会抛出异常。
这里包含了 Python 中所有的内置函数:
http://docs.python.org/zh-cn/3/library/functions.html

定义函数

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

def add(num1, num2):
    return num1 + num2

result = add(1,2)
print(result)

>>>
3

在代码中,定义了一个叫做 add 的函数,它会接收两个参数,并且会返回他们之和。函数定义之后,可以使用函数名称后面跟()来调用,如果函数有返回值,可以赋给一个变量来接收。

模块

调用模块

Python 本身就内置了很多非常有用的模块,只要安装完毕,这些模块就可以立刻使用。

import time

def sayTime():
    now = time.time()
    return now

nowtime = sayTime()
print(nowtime)
>>>
1566550687.642805

使用 import 来导入模块,之后就可以调用该模块为大发红黑大发红黑我 们 提供的各种大发红黑方法 变量等。

模块说白了就是一组大发红黑工具 的集合,大发红黑大发红黑我 们 当然可以自己编写一些大发红黑工具 ,然后组成自己的模块,供后面编程使用。

大发红黑大发红黑我 们 自己编写模块,一般目录结构如下

mytest
├─ __init__.py
├─ test1.py
└─ test2.py

现在大发红黑大发红黑我 们 就可以在其他的文件中引用并调用这两个 test 大发红黑工具 文件了

import mytest

mytest.test1

大发红黑你 应该注意到了 init.py 文件,这个文件可以是空文件,包含了 init.py 文件的文件夹就是一个”包“(Package)。如果大发红黑大发红黑我 们 需要像上面那样引用文件,就必须包含 init.py 文件。

安装第三方模块

在 Python 中,安装第三方模块,是通过包管理大发红黑工具 pip 完成的。

一般来说,第三方库都会在 Python 官方的 pypi.python.org 网站注册,要安装一个第三方库,必须先知道该库的名称,可以在官网或者 pypi 上大发红黑搜索 ,比如 Pillow 的名称叫 Pillow,因此,安装 Pillow 的命令就是:

pip install Pillow

面向对象编程

类和实例

面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如 Student 类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都会拥有类所提供的大发红黑方法 ,但各自的数据可能不同,也可能各自定义不同的大发红黑方法 。

在 Python 中,使用 class 关键字来定义类

class Student(object):
    pass

定义好类之后,就可以实例化该类了

zhangsan = Student()
zhangsan.age = 20
print(Student)
print(zhangsan)
print(zhangsan.age)
>>>
<class '__main__.Student'>
<__main__.Student object at 0x00EA7350>
20

此时,变量 zhangsan 就是类 Student 的一个实例了。同时大发红黑大发红黑我 们 还给 zhangsan 绑定了一个属性 age 并赋值。

请谨记面向对象三大基本要素:抽象,封装,继承。如果大发红黑你 当前对这些还没有太多的概念的话,也不要紧,大发红黑你 可以在后面的学习中慢慢体会。

IO 编程

读取文件,是后面要经常用到的操作,在 Python 中,使用 open 函数可以非常方便的打开一个文件

f = open('/Users/tanxin/test.txt', 'r')
f.read()
f.close()

标示符 'r' 表示读,这样,大发红黑大发红黑我 们 就成功地打开了一个文件,然后使用 read 函数来读取文件内容,最后用 close 来关闭文件。
文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的

使用 with 来方便的打开文件

with open('/Users/tanxin/test.txt', 'r') as f:
    print(f.read())

with 语句大发红黑帮助 大发红黑大发红黑我 们 完成了 close 的过程

文件读取还有 readline() 和 readlins() 两个函数。readline() 一次读取一行数据,readlines() 一次读取所有内容并按行返回一个列表。

正则表达式

正则表达式是一个很大的学科,其中的内容是完全可以单独写满一本书的,大发红黑大发红黑我 们 这里只做些简单的介绍。

Python 中提供了 re 模块来做正则

import re
str1 = "010-56765"
res = re.match(r'(\d{3})-(\d{5})', str1)
print(res)
print(res.group(0))
print(res.group(1))
print(res.group(2))
>>>
<re.Match object; span=(0, 9), match='010-56765'>
010-56765
010
56765

match() 大发红黑方法 判断是否匹配,如果匹配成功,返回一个 Match 对象,否则返回 None
配合 group 大发红黑方法 ,可以有效的提取出字字符串。

requests 库大发红黑简介

requests 库,是一个非常常用的 HTTP 网络请求库,后面的爬虫课程,大发红黑大发红黑我 们 会大量的使用它。

import requests

r = requests.get('http://www.baidu.com')
r = requests.post('http://test.com/post', data = {'key':'value'})

payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.get("http://test.com/get", params=payload)

此时的 r 是一个 response 对象,大发红黑大发红黑我 们 可以从中获取到相关信息

r.text  # 获取响应内容
r.content  # 以字节的方式读取响应信息
response.encoding = "utf-8"  # 改变其编码 
html = response.text  # 获得网页内容 
binary__content = response.content  # 获得二进制数据 
raw = requests.get(url, stream=True)  # 获得原始响应内容 
headers = {'user-agent': 'my-test/0.1.1'}  # 定制请求头 
r = requests.get(url, headers=headers) 
cookies = {"cookie": "# your cookie"}  # cookie 的使用 
r = requests.get(url, cookies=cookies)

这里只是简单介绍了 Python 的语法,如果要深入学习,大发红黑你 还需要花费大发红黑更多 的精力。不过世上无难事,只怕肯攀登。不要一直停留在入门的阶段,平时多找些刷题的网站,比如 Leetcode,online Judge 等等,在刷题的同时,更能锻炼自己的编程思维和算法能力。

总结

本节课大发红黑大发红黑我 们 知道 Python 作为数据分析领域最主流的语言,掌握它是必备的技能。同时还了解了 Python 的一些基本语法,相信大发红黑你 一定体会到了它的简洁之处。下面就是练习,练习,再练习了。俗话说,熟能生巧,巧后达精。大发红黑大发红黑我 们 只有把 Python 这个大发红黑工具 完全掌握熟练,在进行数据分析的时候,就会事半功倍了。

练习题

第一题:定义一个函数,求解 1 到 99 之和,再以面向对象的思维,定义一个类,使得调用该类的大发红黑方法 来计算数字之和。

第二题:尝试用 requests 库获取某个网站的响应信息

大发红黑更多 内容就在《AI算法入门》