目录
一、函数编写
函数定义:将一些语句集合在一起,使其能够反复在程序中运行。
使用函数的意义:提高编程效率,避免大量重复的工作。
内置函数:可以直接调用的函数。
第三方模块相关的函数:按一定的规范自己编写的程序段。
自定义函数:按一定的规范自己编写的程序段。
1. 内置函数
int(10) # 整数10
str(10) # 字符串函数
a = list((1, 2, 3, 4)) # 创建列表
max(a) # 计算最大值
min(a) # 计算最小值
round(2.643335345,2) # 四舍五入函数
type(a) # 确定类型
len(a) # 返回数据中的元素个数
isinstance(a,list) # 判断结构函数,返回值为True或者False
# 枚举函数
a = ['student','teacher','parents']
for i , j in enumerate(a): # 枚举
print(i, j)
>>>0 student
>>>1 teacher
>>>2 parents
# zip()函数,组合函数,将传入每个序列的相同位置的函数做一个组合返回成一个元组
list1 = ['a', 'b', 'c', 'd']
list2 = [1, 2, 3, 4]
print(list(zip(list1, list2)))
>>>[('a', 1), ('b', 2), ('c', 3), ('d', 4)]
2. 第三方模块函数
import math # 第三方模块函数
print(math.floor(4.8)) # 向下取整
>>> 4
print(math.ceil(4.8)) # 向上取整
>>> 5
import numpy as np
print(np.min([1, 5, 3, 9])) # 返回最小值
>>> 1
print(np.argmax([1, 5, 3, 9])) # 返回最大值所对应的位置
>>> 3
3. 自定义函数
(1)以def语句开头,函数名称和圆括号;
(2)function代表函数名称;
(3)任何传入的参数放入到圆括号内,以冒号结束;
(4)冒号下面缩进后,进行函数的编写;
(5)一般以return表达式结束函数,express表示要返回的值。
def function(part1, part2,....):
suite函数主体
return expression
de f<函数名> (参数列表):
<函数语句>
return <返回值>
# 其中参数和返回值不是必须的
def ListSum(L):
result = 0
for i in L:
result = result + i
return result
List = [ 1, 2, 3,4 ]
Sum = ListSum( List )
print( Sum )
>>> 10
def Cube( a, b, c):
if a == None:
a = 1
if b == None:
b = 2
if c == None:
c = 3
return a * b + c
print(Cube(None, None ,4)) # 加入判断
>>> 6
二、json文件解析
定义:Json是JavaScript对象表示法,json格式是一种轻虽级的文本数据交换格式,拥有存储空间小,处理速度快等优势。
数据结构:Json本质上是一种嵌套字典格式,但键所对应的值,往往更加复杂,不仅是数字,还可以是字符串,数组,列表等。
# 文件读取
import json
with open('文件名.json', mode = 'r', encoding = 'utf-8') as f: # 打开json文件
f_read = f.read() # 读取数据文件
data = json.loads(f_read) # 将读取的字符串解析成json格式
# 文件写入,将json数据保存为json格式
import json
with open('文件名.json', mode = 'w', encoding = 'utf-8') as f:
json.dump(json_data,f,indent=0)
f.close()
三、字符串的处理
字符串学习网站:https://www.runoob.com/python/python-strings.html
1. 转义字符
print("人生苦短我用python。")
>>> 人生苦短我用python。
print("人生苦短\n我用python。") # \n换行
>>>人生苦短
>>>我用python。
print(r"人生苦短\n我用python。") # r——防止被转义
>>> 人生苦短\n我用python。
2. 字符串格式化
格式化输出:
# 格式化输出实例说明
# 1、打印字符串——%s
print("My name is %s ." % "Tom")
>>> My name is Tom .
# 2、打印整数——%d
print("My age is %d ." % 2)
>>> My age is 20 .
# 3、打印浮点数——%f
print("My height is %f m" % 1.8)
>>> My height is 1.800000 m
# 4.打印浮点数(指定保留小数点位数)——%.2f
print("My height is %.2f m" % 1.8)
>>> My height is 1.80 m
# 举例说明
class teacher(object):
def speak(self): # 定义方法
print("%s 说:同学们,还有%s天你们就要毕业了!" % (self.name, self.day))
T = teacher() # 转换为实例对象
T.name = "张老师" # 给对象添加属性
T.day = "300"
T.speak()
>>>张老师 说:同学们,还有300天你们就要毕业了!
print('我今年{:.2f}岁,目前在{}上学。'.format(20,'广州大学')) # .format()方法
>>> 我今年20.00岁,目前在广州大学上学。
3. 字符串方法
字符串学习网站:https://www.runoob.com/python/python-strings.html
四、python高级函数(数据分析常用)
1. lambda函数(匿名函数)
a 不需要使用def来定义函数;
b.没有具体的名称;
c.使用lambda来定义函数;
# lambda定义一个参数
y = lambda x: x**2
print(y(3))
>>> 9
f = lambda x: 'A' if x == 1 else 'B'
print(f(50))
>>> B
# lambda定义两个参数
t = lambda x, y: x + y*2
print(t(3,4))
>>> 11
# 定义三个参数
k = lambda x, y, z: 2*y + 3*y +z
print(k(2,6,4))
>>> 34
2. map函数
定义:map()方法会将一个函数映射到序列的每一个元素上,生成新序列,包含所有函数返回值。序列里每一个元素都被当做x变量,放到一个函数f(x)里,其结果是(x1)、f(x2)、f(x3).……组成的新序列。
# 调用方法
map(function,list_input)
function # 代表函数
list_input # 代表输入序列
实例代码展示:
# 方法一
items = [1, 2, 3, 4, 5, 6, 7]
def f(x):
return x**2
s = list(map(f, items))
print(s)
>>> [1, 4, 9, 16, 25, 36, 49]
# 方法二
items = [1,2,3,4,5,6,7]
a = list(map(lambda x: x**2,items))
print(a)
3. reduce函数
定义:在选代序列的过程中,首先把前两个元素(只能两个)传给函数,函数加工后,然后把得到的结果和第三个元素作为两个参数传给函数参数,函数加工后得到的结果又和第四个元素作为两个参数传给函数参数,依次类推。
# 调用方法
reduce(function,iterable)
function:代表函数
iterable:序列
累积求和实例代码展示:
# 导入reduce
from functools import reduce
# 定义函数
def f(x, y):
return x + y
# 定义序列,含1~10的元素
items = range(1, 11)
# items = [1,2,3,4,5,6,7,8,9,10]
result = reduce(f, items)
print(result)
>>> 55
字符串的拼接:
from functools import reduce # 导入reduce
def str_add(x, y): # 定义函数
return x +y
items = ['c','h','i','n','a'] # 定义序列
result = reduce(str_add, items)
print(result)
>>> china
4. filter函数
a. 用于过滤序列,过滤掉不符合条件的元素、返回由符合条件元素组成的序列。
b. 将 function依次作用于sequnce的每个item,即function(item),将返回值为True的iterm组成一个List/String/Tuple(取决于sequnce的类型)
c. python3统一返回迭代器
查找偶数代码展示:
a = list(filter(lambda x: x % 2 == 0, range(21))) # 直接调用,不需要导入
print(a)
>>> [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
查找整数代码实例:
# 方法一
items = [1,2,3,4,5,'python','3.1415',-7]
a = list(filter(lambda x: 1 if isinstance(x, int) else 0 ,items)) # isinstance,对数据结构进行判断
print(a)
>>> [1, 2, 3, 4, 5, -7]
# 方法二
items = [1,2,3,4,5,'python','3.1415',-7]
def int_num(x):
if isinstance(x, int):
return True
else:
return False
a = list(filter(int_num, items))
print(a)
>>> [1, 2, 3, 4, 5, -7
五、Python数据分析常用库介绍
1. Numpy
Numpy是数据科学计算的基础模块,用于数值计算。基于数组运算,效率高,拥有许多高级函数,可以对数据进行高效处理,可以进行线性代数相关运算。
2. Pandas
介绍:Pandas是专门用作数据处理和分析的,使用起来十分高效和简洁,拥有许多各种复杂的函数,其使用起来十分高效和便捷,是数据分析领域使用最广泛的库之一Pandas应用领域十分广泛,包括金融、电商以及高校的科研。Pandas功能强大,支持类似于SQL的数据处理,并且具有丰富的数据处理函数,支持时间序列分析等。
应用:Pandas应用领域十分广泛,包括金融、电商以及高校的科研。Pandas功能强大,支持类似于SQL的数据处理,并且具有丰富的数据处理函数,支持时间序列分析等。
import pandas as pd
s = pd.Series([1,2,3],index = ['a','b','c'])
print(s)
>>> a 1
>>> b 2
>>> c 3
>>> dtype: int64
# 二维数组创建
import pandas as pd
data = pd.DataFrame([[1,2,3],[4,5,6]],columns=['a','b','c'])
print(data)
'''输出结果:
a b c
0 1 2 3
1 4 5 6
'''
import pandas as pd
data = pd.read_excel('读取的文件名.xlsx') # 读取excel文件
print(data.head(5)) # 读取前五行数据
3. Matplotlib(绘图库)
matplotlib:用于数据可视化的基础模块。
# 创建一个等差数列
import matplotlib.pyplot as plt # pyplot函数是绘图时主要的函数
import numpy as np
x = np.linspace(0,10,1000)
y = np.sin(x)
plt.xlabel('Times') # 设置X轴标题
plt.ylabel('vol') # 设置Y轴标题
plt.title('this is a title.') # 设置图表标题
plt.legend(loc='left') # 设置图例的位置
plt.plot(x, y, label='y=sinx', color='red', linewidth=2) # 设置图例
plt.show() # 展示图表
4. 其它相关库介绍
scikit-learn:机器学习专用库,提供了完善了机器学习工具箱;
seaborn:用于绘制更加精致的图形;
scipy:数值分析,例如线性代数,积分和插值等;
statsmodels:常用于统计建模分析。