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

目录

一、函数编写

1.  内置函数 

2.  第三方模块函数 

3.  自定义函数

二、json文件解析

三、字符串的处理

1.  转义字符

2.  字符串格式化

3.  字符串方法

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

1.  lambda函数(匿名函数)

2.  map函数

3.  reduce函数

4.  filter函数

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

简时刻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值