2020年Python数据分析学习笔记之函数讲解(三)

目录

 

1、函数编写

2、json文件解析

3、字符串的处理

(1)转义字符

(2)字符串格式化

(3)字符串方法

4、python高级函数(数据分析常用)

(1)lambda函数(匿名函数)

(2)map函数

(3)reduce函数

(4)filter函数

5、Python数据分析常用库介绍

(1)Numpy

(2)Pandas

(3) Matplotlib(绘图库)

(4)其它相关库介绍


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)]
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

自定义函数:

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

 

2、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()

 

3、字符串的处理

字符串学习网站: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

4、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

5、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:常用于统计建模分析。

猜你喜欢

转载自blog.csdn.net/weixin_44940488/article/details/106431364