Part 1 基础知识(1)——基本操作

  • 一、Python的基本操作
  • 1. Python变量和简单数据类型
  • (1)两种数字类型
  • (2)列表
  • a. 特点:
  • b. 列表两种表示方法
  • c. 其他
  • d. 列表推导式
  • (3)字典
  • a. 直接创建
  • b. 赋值:通过键值对
  • c. 其他功能
  • (4)集合
  • 特点:
  • (5)元组
  • (7)布尔值
  • 2. Python的基本操作
  • (1)if条件判断
  • (2)for循环
  • a. 简介
  • b. try-except:对循环中的错误直接报错,而不是直接停止
  • (3)while循环
  • 3.函数、模块和包、库
  • (1)函数:组织好的代码段
  • a. 定义函数:
  • b. lambda匿名函数
  • i. 特点
  • ii. 创建lambda函数
  • iii.功能
  • c. 常见函数
  • (2)类class:
  • (3)模块module:
  • (4)包package:
  • (5)库library:
  • a.简介
  • b.其他常用第三方库
  • 二、使用案例
  • 1. 白噪音序列作图


一、Python的基本操作

1. Python变量和简单数据类型

(1)两种数字类型

整数型:integer_=1 #整数
浮点数:float_=0.1 #浮点数

(2)列表

a. 特点:

1、有序;因此若元素内容相同,但是序号不同,两个列表也不是相等的
2、可以用list()函数或者方括号[]创建,元素之间用逗号’,‘’分隔;
3、使用索引来访问元素,可切片;
4、可以有重复元素。

b. 列表两种表示方法
a=list()  
b=[]
c. 其他
list_=["one",2,[1,2,3]]   #列表内可以为多种形式的元素
list_[0]  #列表索引,从0开始
list_.append("four")   #在列表中添加“four”  
list_.extend(lst) 	#向list中添加列表lst
list_.count(a) 	#统计list中a的个数
list_.pop(1)  #删除list中索引的元素
list_.remove("one")  #删除list中的元素
list_.clear()   #列表清空
del(list_)  #删除列表
list_[0:3]   #取首不取尾
list_[-3:]  #倒数第三个到最后一个
len(list_)   #查看列表长度
print(a1 + a2)  #列表a1和a2拼接
d. 列表推导式

实现步骤:

语法格式:listname=[expression for variable in subject (if condition)]

  1. 先复制X
    [x for x in X]
  2. 再对x进行操作
    [x*x for x in X]
// Example 1
#对满足条件的x进行操作
[x*x 
 for x in X 
 if x>5]
// Example 2
words = ['Life', 'is', 'short', 'so', 'we', 'use', 'Python', 'python', 
         'is', 'easy', 'to', 'learn', 'and', 'easy', 'to', 'use']
lower_words = [w.lower() for w in words]
lower_words
wordset = set(lower_words)
[(w,lower_words.count(w)) for w in wordset]
// Example 3 字符操作
rankschool=["清华大学 1","北京大学 2","复旦大学 3","上海交通大学 4"]
school4=[i.split(' ')[0] for i in rankschool]
school4

(3)字典

字典:键-值对;

a. 直接创建
citydata=dict(city=['北京市','上海市','南京市'])   
dict_={"1":"one","2":"two","3":"three"}
b. 赋值:通过键值对
citydata2={}
citydata2["city"]=['北京市','上海市','南京市']
c. 其他功能
len(citydata2)  #查看长度
dict_["1"]="ONE"      #替换各个键  
dict_["1"]=["one","ONE"]  #嵌入列表
dict_["1"]  #字典索引
dict_["5"]="five"  #在字典中添加键值对
dictdata.items() 	 #返回dictdata所有item
	#遍历所有键值对
	for x,y in dictdata.items() :
		print(x,y)
dictdata.keys() 	 #返回dictdata的所有关键词
dictdata.values() 	 #返回dictdata的所有值
dictdata.get(keystr) 	 #获取关键词keystr对应的值
dictdata[keystr] 	 #获取关键词keystr对应的值

(4)集合

特点:

1、无序;
2、可以用set()函数或者方括号{}创建,元素之间用逗号”,”分隔;
3、不可索引,不可切片;
4、不可以有重复元素。

names2 = ['David', 'Mary', 'David', 'Swift', 'David']   #集合是无序的,所以当中也不能重复;集合可以用来去重;可以用set()函数或者方括号{}创建,元素之间用逗号”,”分隔;
#两个集合内的元素内容相同但是顺序不同,两个集合还是一样的
name_set = set(names2)
name_set.add('William')  #setdata.add(ele) 向setdata中加入ele

(5)元组

name_tuple = ('David', 'Mary', 'Henry', 'Swift', 'Lenard')   #元组是圆括号

形似列表,也可拼接、拆包和切片
数据不可更改

// Example 3 元组拼接
d = {'x': 'A', 
     'y': 'B', 
     'z': 'C' }
d.items()
	//1 自己复制d.items()自己
[i for i in d.items()]
	//2 对任何一个元素都要进行字符串的拼接操作
[i[0]+i[1] for i in d.items()]

(7)布尔值

用于逻辑判断,一般与if结合使用。

x = 4 in [1,2,4]  #True
y = 4 not in [1,2,4]  #False

2. Python的基本操作

(1)if条件判断

condition = False
if condition:
   print('condition为True')
else:
   print('condition为False')

(2)for循环

a. 简介

for循环可以遍历任何可迭代对象,如一个列表或者一个字符串
一般格式:

for <varible> in <sequence>:
	<statements>
else:
	<statements>
// Example 1
b=[1,2,3,4]
for i in b:
	print(i)
    //上述for循环可缩写为
    a=[i for i in b]
// Example 2
for i in range(6):
	print(i)
// Example 3 计算1^2+2^2+……+100^2
result=0
for i in range(1,101):
	result=result+1**2
print(result)
b. try-except:对循环中的错误直接报错,而不是直接停止
// Example 1  10作为被除数,取余数
for i in [10,2,0,4,5]:
	try:
		print(10%i)
	except:
		print("错误")

(3)while循环

一般格式:
while 判断条件(condition):
执行语句(statements)······

// Example 1  
i=5
while i>=0:  
   //i>=0是终止条件,即未达到终止条件前,继续循环下面的语句
	print(i)
	i=i-1

3.函数、模块和包、库

(1)函数:组织好的代码段

a. 定义函数:

def函数常见参数定义&调用方式

  • 位置参数
  • 关键词参数
  • 默认参数
#位置参数
def hello1(name,address):
    return '大家好!我是{0},来自{1}'.format(name,address) #0对应name,1对应address                                  
hello1('萝卜头','地球')
#关键词参数
def hello2(name,address):
    return '大家好!我是{0},来自{1}'.format(name,address) 
hello2(name='萝卜头',address='地球')   ##直接通过关键词赋值
#默认参数
def hello3(name,address,major='会计学'):    #有默认值的参数需要放在后面
    return '大家好!我是{0},来自{1},专业为{2}'.format(name,address,major) 
hello3('萝卜头','地球')
b. lambda匿名函数
i. 特点
  • 匿名函数是指没有声明函数名称的函数。
  • lambda函数的行为方式与使用def关键字声明的一般函数相同。
  • lambda函数可以接受任意数量的参数,但函数只能包含一个表达式。
  • 表达式是lambda函数执行的一段代码,它可以返回任何值,也可以不返回任何值。
  • lambda函数可以返回函数对象。
ii. 创建lambda函数

语法: lambda arguments(s): expression

x = lambda a,b,c: a+b*a+c
print(x(1,2,3))    //1,2,3分别对应a,b,c,为各个参数,返回函数值
iii.功能

功能1:赋值

功能2:将lambda函数作为参数传递给其他参数

//Example 1  列出0-20之间不能整除3的数
	//原函数一一定义
def odd(x):
	return x%3
X=range(21)
output=filter(odd,X)   ##filter(函数)为过滤序列,即过滤掉不符合条件的元素
print(list(output))    ##filter函数返回值是一个数组,因此需要用list()函数将其转化为列表
	//用lambda函数直接替换上面的odd函数,作为参数传递给fileter函数
print(list(filter(lambda x:x%3,range(21))))

功能3:返回值

// Example 2  输出a的N次方
def anfunc(n):
	return lambda x:x**n
cube=anfunc(3)   #cube函数为:a的3次方
cube(2)  #将2赋值给x,即求2的3次方

功能4:简化条件语句,将if……else语句缩减为单一的条件表达式

// Example 3  是否可以被3整除
divide3=lambda x:"True" if x%3==0 else "False"
print(divide3(20))
	//等价于下面的
def divide3(n):
	if n%3==0:
		return("True")
	else:
		return("False")
print(divide3(20))
c. 常见函数

函数

功能

例子

运行结果

abs(a)

对a取绝对值

abs(-1)

1

max(lst)、min(lst)

寻找lst中的最大、最小值

max([3, 2, 9])

9

sum(lst)

对lst内所有数字求和(也可元组、字典)

sum([3, 2, 9])

14

sorted(lst, reverse)

对lst排序; 参数reverse为布尔值控制升降序

sorted([3, 2, 9]) sorted([3,2,9], reverse=True)

[2, 3, 9]

[9, 3, 2]

range(start, end, step)

生成以步长step,生成从start到end的数列,默认step=1,结果取不到end

list(range(1,5))

[1, 2, 3,4]

int(string)

将字符串数改为整数型

int(‘9’)

9

float(int/str)

将int或str改为浮点型

float(9)、float(‘9’)

9.0

list(iterable)

将可迭代对象为列表。这里的iterable可以为字符串,可以是列表

list(range(1,5))

list(range(1, 10, 2))

[1,2,3,4]

[1, 3, 5, 7, 9]

enumerate(lst)

返回带有索引值的序列seq,需要list(seq)处理后才能看到seq

list(enumerate([‘a’, ‘b’, ‘c’]))

[(0,‘a’), (1, ‘b’), (2, ‘c’)]

tuple(lst)

将lst变为tuple

tuple([1,2,3])

(1,2,3)

set(lst)

将lst变为集合

set([1,4,4,4,3])

{1,3,4}

eval(expression)

执行一个字符串表达式

str_expression 是字符串表达式,可以是变量、函数等

eval(‘1+1’)

2

zip(lst1,lst2…)

将lst1,lst2…合并,返回zip对象。需要list处理一下zip对象

list(zip([1,2,3],[4,5,6]))

[(1, 4), (2, 5), (3, 6)]

type(x)

查看X的类型

type(‘2’)

<class ‘str’>

help(x)

查看X的相关信息

help([1, 2])

Help on list object…

map(func, lst)

对lst中的每一个个体都进行func操作,将func运算映射到lst上每个元素

list(map(sum, [[1,1], [1,2]]))

[2, 3]

print(value, end=‘\n’)

打印value

print(‘abc’)

abc

open(file, mode=‘r’, encoding=None)

打开file文件;mode 操作方式们,最常用的是r和a+。r读取, a+是追加写入;encoding是file的文件编码,主要是utf-8和gbk

open(‘data/test.txt’, encoding=‘utf-8’).read() 读取数据

#相对路径 data

#绝对路径 C:Users\thunderhit\Desktop\Python数据分析入门\02-Python语法入门\data

#以后都要用相对路径

在已有的文件内插入内容

f = open(‘data/test2.txt’, mode=‘a+’, encoding=‘utf-8’)

f.write(‘\n还需继续努力’)

f.close()

(2)类class:

描述相同的属性和方法的对象的集合,定义该集合中每个对象所共有的属性和方法。对象是类的实例。

(3)模块module:

以.py为后缀的文件,通常包含一些常数和函数。

(4)包package:

将模块、函数放到文件夹下面,通过“包.模块名”制定模块

(5)库library:

a.简介

由诸多函数组成,也可以包括模型和包

语法:import module1 [,module2[,…moduleN]

导入包:
 法1:import numpy as np   //np为简写
 法2:from math import exp as e  //从一个包中导入某部分命名为
 法3:from math import *   //将一个包完整导入
b.其他常用第三方库

第三方扩展库

功能简介

Numpy

支持数组计算,以及相应的高效的处理函数

Pandas

强大、灵活的数据分析和探索工具

Scipy

提供矩阵支持,以及矩阵相关的数组计算模块

Matplotlib

强大的数据可视化工具,作图库

StatsModels

统计建模和计量经济学,包括描述统计、统计模型估计和推断

Scikit-Learn

支持回归、分类、聚类等强大的机器学习库

Keras

深度学习库,用于建立神经网络以及深度学习模型

Gensim

用来做文本主体模型的库,文本挖掘分析

二、使用案例

1. 白噪音序列作图

在任何两个时点的随机变量都不相关,序列中没有任何可以利用的动态规律

import numpyasnp #导入包
from matplotlib import pyplot as plt #导入包
x=np.arange(1,10)  #调用numpy包创建一个数列,如果直接定义x=[1,2,3],此时数据类型不能用来生成下面的y数列
y=3*x+1   #创建一个数列
plt.title("Matplotlib demo")   #调用pyplot包定义图的标题 
plt.xlabel("x axis caption")   #调用pyplot包定义x轴的标题 
plt.ylabel("y axis caption")   #调用pyplot包定义y轴的标题 
plt.plot(x,y)  #调用pyplot包作图,可以只写plt.plot(y) ,此时x默认为0,1,2,3,4
plt.show()   #让这个图显示出来。在anaconda中可以不需要这个语句也可以显示,但是在一般的python语言中需要。

#--------version1--------
import numpy as np  
import matplotlib pyplot as plt
plt.rcParams['figurefigsize']=(10,6) #控制图形大小
E_values=np.random.randn(100) #调用numpy包模拟100个正态随机变量的值 
plt.plot(evalues)  #调用pyplot包作图,模拟白噪音的震荡图
plt.show()

#--------vers1on2-------- 
ts_length=100  #定义一个100整数变量
e_values = []  #创建一个空的列表
for i in range(ts_length):  #用for循环
	e=np.random.randn()
	e_values.append(e)  #在列表中添加新的元素,即按顺序(1-100)生成100个随机数,依次添加到列表中
plt.plot(e_values) 
plt.show()

#--------version3--------
ts_length = 100
e_values=[]   
i=0  #用while循环生成100个随机值
while i < ts_length:
	e=nprandom.randn() 
	e_values.append(e) 
	i=i+1
plt.plot(e_values) 
plt.show()

#--------version4--------
def white_noise_plot(number):    #将上面的代码改进成函数形式
	ts_length=number   #定义数字的数量
	e_values=[]  
	i=0
	while i<ts_length:
		e=np.random.randn() 
		e_values.append(e) 
		i=i+1
	plt.plot(e_values) 
	plt.show()   #注意缩进一致性
white_noise_plot(100)