目录
系列文章目录
提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章 Python 机器学习入门之pandas的使用
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
一、pandas是什么?
示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
二、使用步骤
1.引入库
代码如下(示例):
import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import warnings warnings.filterwarnings('ignore') import ssl ssl._create_default_https_context = ssl._create_unverified_context
2.读入数据
代码如下(示例):
data = pd.read_csv( 'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv') print(data.head())
该处使用的url网络请求的数据。
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。
一、函数参数的两大分类
一、位置实参
在调用函数时,按照从左到右的顺序依次传入的值,称之为位置实参
特点:按照位置为形参赋值,一一对应
def func(name,age): # 定义位置形参:name,age,两者都必须被传值
print(name)
print(age)
func("jack") # 报错,少了一个值
func("jack",19) # 正常传值
二、关键字实参
在调用函数时,按照key = value的形式传值,称之为关键字实参
特点:可以打乱顺序,但是仍然能够指定道姓的为指定的形参赋值
def func(name,age): # 定义位置形参:name,age,两者都必须被传值
print(name)
print(age)
func(age = 18,name = "jack") # 正常传值
# 注意:可以混用位置实参与关键字实参,但是
# 1、位置实参必须在关键字实参的前面
func("jack",age = 18) # 正常传值
func(age = 18,"jack") # 报错,语法错误
# 2、不能为同一形参重复赋值
def foo(x,y,z):
pass
foo(1,y=2,3) # 报错,语法错误
foo(1,y=2,z=3,x=4) # 报错,语法错误
二、 默认形参
函数在定义阶段就可以给形参赋值了
1.该形参在函数调用阶段如果不给值 则使用默认
2.该形参在函数调用阶段可以继续给值 则使用你给
# 定义学员注册功能
def register(name, age, gender='male'):
print('%s:%s:%s' % (name, age, gender))
register('jason', 18)
register('tony', 28)
register('kevin', 38)
register('lili', 18, 'female')
register('lili', 18, gender='female')
"""
2、默认形参的值通常应该是不可变类型
例一:
def func(name,hobby,hobbies = []): # 三次调用都用的是同一列表
hobbies.append(hobby)
print('%s的爱好是%s'%(name,hobbies))
func('jack','read') # jack的爱好是['read']
func('tom','play') # tom的爱好是['read', 'play']
func('bob','movie') # bob的爱好是['read', 'play', 'music']
# 例二:
def func(name,hobby,hobbies = None): # 设定hobbies为None
if hobbies is None: # 如果没有为hobbies传值,hobbies默认就是None
hobbies = [] # 每次传值给hobbies,就会产生新的列表
hobbies.append(hobby)
print('%s的爱好是%s' %(name,hobbies))
3.默认形参的值是在函数定义阶段赋值的
m = 111
def func(x,y,z = m): # 在定义阶段就把111赋值给了z
print(x)
print(y)
print(z)
m = 666
func(1,2)
func('jack','read')
func('tom','play')
func('bob','music')
func('lili','eat',["movie"])
位置形参与默认值形参在定义的时候
位置形参必须在默认值形参的前面
"""
'''格式越简单的越靠前 格式越复杂的越靠后'''
三、可变长参函数
1、函数无论传入多少位置参数都可以正常的运行
1.函数无论传入多少位置参数都可以正常的运行
可变长参数值得是在调用函数时,传入的实参个数不固定,对应这必须有特殊形式的形参来接收溢出的实参
实参无非两种形式
溢出的位置实参————————*
溢出的位置关键字实参————————**
*与**在形参中是一种汇总行为
1、*在形参中的应用:*会将溢出的位置实参合并成一个元组,然后赋值给紧跟其后的那个形参名
def func(x,*y): # *是接收位置溢出实参的功劳,不是y变量名的功劳。*后面可以跟任意变量名。
print(x)
print(y)
func(1,2,3,4,5) # x = 1 , y = (2,3,4,5)
# 1
# (2,3,4,5)
def func(x,*args): # args变量名(译:参数) 通常搭配*使用 *args接收位置实参的溢出
print(x)
print(args)
func(1,2,3,4,5) # 同上是一个道理
def my_sum(*args): # 求和运算的函数
res = 0
for i in args:
res += i
print(res)
my_sum(1,2)
# 3
**在形参中的使用
.用于接收多余的位置实参的关键字实参, 并组织成字典的形式赋值给紧跟其后的那个形参名
函数无论传入多少关键字参数都可以正常运行
def func(x, **kwargs): # kwargs变量名通常搭配**使用
print(x)
print(kwargs)
func(1,a=2,b=3,c=4)
'''
1
{'a': 2, 'b': 3, 'c': 4}
'''
# 定义一个函数无论传入多少位置参数和关键字参数都可以正常运行
def index(*a,**b):
print(a,b)
index() # () {}
index(1,2,3,4) # (1, 2, 3, 4) {}
index(a=1,b=2,c=3) # () {'a': 1, 'b': 2, 'c': 3}
index(1,2,3,4,a=1,b=2,c=3) # (1, 2, 3, 4) {'a': 1, 'b': 2, 'c': 3}
"""
墨守成规
可变长形参*与**后面的变量名其实是可以随便定义的但是python 中推荐使用
*args
**kwargs
def index(*args,**kwargs)
pass
"""
**在是惨重的使用
.会将字典键值对打散成关键字实参传入
**只能跟字典类型
# ** 只能跟字典类型
def func(x, y, z):
print(x)
print(y)
print(z)
func(**{"k1": 111, "k2": 2222}) # func(k2=2222,k1=111) 报错,没有k关键字,打散后对应不上
func(**{"x": 111, "y": 2222, "z": 333}) # **将字典打散成关键字实参
'''
111
2222
333
'''
# 例1:
def wrapper(*args, **kwargs): # 形参中带*和**是一种汇总行为
print(args)
print(kwargs)
wrapper(1, 2, 3, 4, 5, 6, a=1, b=2, c=3)
'''
(1, 2, 3, 4, 5, 6)
{'a': 1, 'b': 2, 'c': 3}
'''
# 例2:
def index(x, y, z):
print(x, y, z)
def wrapper(*args, **kwargs):
index(*args, **kwargs)
wrapper(1, y=2, z=3) # 1 2 3
'''
实参中带 * 和 ** 是一种打散行为
index(*(1, 2, 3, 4, 5, 6), **{"a": 1, "b": 2, "c": 3})
index(1, 2, 3, 4, 5, 6, a=1, b=2, c=3)
命名关键字形参:在*与**中间的形参称之为命名关键字形惨(了解)
特点:必须按照key=value的形式传参
def register(name,age,*,sex,height):
pass
# register('jason',18,'male',183)
register('lili',18,sex='male',height='1.8m') #正确使用
"""
sex height在传入实参的时候必须以关键字参数的形式
ps:该类型的参数几乎不用 也几乎很少能碰到