IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 利用Python进行数据分析 | 函数 -> 正文阅读

[人工智能]利用Python进行数据分析 | 函数

函数

函数是Python中最重要、最基础的代码组织和代码复用方式。

def my_fuction(x,y,z=2)
	if z >=1 :
        return z * (x+y)
    else:
        return z / (x+y)

x,y为位置参数,z为关键字参数,关键字参数必须跟在位置参数之后(如果有的话),传参时,可以使用关键字参数向位置参数传参。

my_fuction(2,3)
my_fuction(2,3,5)
my_fuction(x=2,y=3,z=5)  #在部分场景中,这样做有助于提高代码可读性。

命名空间、作用域和本地函数

函数有两种连接变量的方式:全局本地 。全局变量和局部变量的区别在于作用域,全局变量在整个py文件中声明,全局范围内可以使用,局部变量仅在某个函数内部声明,只能在函数内部使用。

在Python中,另一种更贴切的描述变量作用域的名称是命名空间

a=10
def func():
    b=20
    print(a+b)
    
print(a)
print(b)

#Out
In [18]: runfile('D:/ipython/未命名0.py')
30
10
Traceback (most recent call last):

  File "D:\ipython\未命名0.py", line 14, in <module>
    print(b)

NameError: name 'b' is not defined

在上方所示的代码中,a为全局变量,b为局部变量,b的作用空间是在函数func()内部,当函数执行结束后,命名空间就会被销毁,在函数外调用变量b就报错了。

如果想在函数内部改变全局变量,需要在前面加上global关键字,在执行函数之后,全局变量值也会改变。

a = 10
def func():
    global a
    a = 20

print(a)
func()
print(a)

#Out
In [22]: runfile('D:/ipython/func.py')
10
20

返回多个值

def f():
    a = 1
    b = 2
    c = 3
    return a, b, c


a, b, c = f()
return_value = f()
print(a, b, c)
print(return_value)


def f_1():
    a = 'Ma Long'
    b = 'Zhang Jike'
    c = 'Xu xin'
    return {'Champion': a, 'Second place': b, 'Third place': c}


Top_three = f_1()
print(Top_three)

#Out
In [34]: runfile('D:/ipython/func.py')
1 2 3
(1, 2, 3)
{'Champion': 'Ma Long', 'Second place': 'Zhang Jike', 'Third place': 'Xu xin'}

函数是对象

province=['  Shandong','shanghai','Henan','GUIzhou','LiAoNINg','Beijing##','Guang?dong']

现在有一个列表,存储这一些省份名称,但这些数据格式杂乱,如果想将这些数据变得整齐,需要:去除空格,移除标点符号,调整大小写。如何来实现呢?

#一、使用内建的字符串方法,结合标准库中的正则表达式re
import re


def clean_strings(strings):
    result = []
    for value in strings:
        value = value.strip()
        value = re.sub('[!#?]', '', value)
        value = value.title()
        result.append(value)
    return result

#Out
In [38]: clean_strings(province)
Out[38]: 
['Shandong',
 'Shanghai',
 'Henan',
 'Guizhou',
 'Liaoning',
 'Beijing',
 'Guangdong']
#二、更为函数化的模式(将函数作为一个参数传给其他的函数)
import re


def remove_puctuation(value):
    return re.sub('#!?', '', value)


clean_ops = [str.strip, remove_puctuation, str.title]
#将数据处理的方法存放在一个列表里

def clean_strings(strings, ops):
    result = []
    for value in strings:
        for op in ops:
            value = op(value)  #调用方法
        result.append(value)
    return result

#Out
In [55]: clean_strings(province,clean_ops)
Out[55]: 
['Shandong',
 'Shanghai',
 'Henan',
 'Guizhou',
 'Liaoning',
 'Beijing',
 'Guang?Dong']

匿名(Lambda)函数

Python支持匿名或lambda 函数。匿名函数是通过单个语句生成函数的方式,其结果为返回值。匿名函数使用lambda关键字定义,该关键字仅表达“我们声明一个匿名函数”的意思:

def short_function(x):
    return x*2
equiv_anon=lambda x:x*2

匿名函数在数据分析中非常方便,代码量小,将它作为参数进行传值,比写一个完整的函数或者将匿名函数赋值给局部变量更好。

def short_function(list,f):
    return [f(x) for x in list]
ints=[1,3,5,6,8]
short_function(ints,lambda x : x^2)

柯里化:部分参数应用

通过部分参数应用的方式从已有的函数中衍生出新的函数。

def add_number(a,b):
    return a+b
add_five=lambda b: add_number(5,b)  
#第二个参数对于函数add_number就是柯里化了,只不过是定义了一个新的函数,这个函数调用了已经存在的函数。

错误和异常处理

为保证程序稳定运行,需要合理的处理错误和异常。

In [63]: float('1.23')
Out[63]: 1.23
In [64]: float('x')
Traceback (most recent call last):

  File "C:\Users\lenovo\AppData\Local\Temp/ipykernel_7332/2200206437.py", line 1, in <module>
    float('x')

ValueError: could not convert string to float: 'x'

如果想在float函数运行失败时返回参数,可以通过将float函数写入一个try/except代码段实现:

def attempt_float(x):
    try:
        return float(x)
    except (TypeError,ValueError):  #将多个异常类型写成元组的方式同时捕获多个异常。
        return x
    finally:  #使用finally关键字,无论try是否报错都会运行下方代码。
        print(Done!)
        
#Out
In [82]: attempt_float(3.5)
Done
Out[82]: 3.5
In [83]: attempt_float((1,2))
Done
Out[83]: (1, 2)

Python for Data Analysis by Wes McKinney(O’Reilly).Copyright 2017 Wes McKinney,978-1-491-95766-0.

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-12-23 15:46:04  更:2021-12-23 15:48:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 23:27:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码