Python Data Analysis学习笔记【Week4】——Organizing Data

一、使用python内置函数进行排序

1.使用sort()函数对list进行排序

import random

# Easily create a list of numbers
data = list(range(10))
print("range data:", data)

# Randomly shuffle those numbers
random.shuffle(data)
print("shuffled data:", data)

# Sort the list of numbers
data.sort()
print("sorted data:", data)

-random.shuffle()随机打乱一个list中的数据,使最初的list变成一个无序的list

-data.sort()操作可以将data转换成一个有序的list

2.使用sorted()函数,可以生成一个有序的新list

newdata = sorted(data)

-newdata是对data进行排序后的有序list

-但data仍然是无序的,sorted()函数不改变原有list的排序

3.使用sorted()函数对无序的tuple排序(生成的结果为一个list)

# Convert to a tuple
datatup = tuple(data)   

# Sort the tuple of numbers
# datatup.sort()  这句会报错

# Use sorted to sort the tuple
newdatatup = sorted(datatup)

-datatup是tuple类型,而tuple类型是不可改变的,所以无法使用sort()函数

-即使使用sorted()函数,得到的不是有序的新tuple,而是有序的新list,但list中的元素和原tuple中的元素一致

4.使用sorted()函数对无序的dictionary排序(生成的结果为一个list)

# Create a dictionary of squares (dictionary comprehension)
datamap = {key: key ** 2 for key in datatup}
print("data dictionary:", datamap)

# Use sorted to sort the dictionary
sortmap = sorted(datamap)
print("returned from sorted:", sortmap)

-sorted(datamap)得到的是一个有序的list,list中的元素和原dictionary中的key元素一致,相当于对字典中的key进行了排序

 

二、关于lambda的介绍

1.map函数的使用

# Easily create a list of numbers
data = list(range(10))
print("range data:", data)

def square(val):
    return val ** 2

# Square all numbers in the list
squares = list(map(square, data))
print("squares:", squares)

-map接受至少2个参数,第一个参数必须是一个函数,第二个参数必须是一个sequence类型的数据,map(square,data)对data中的所有内容执行square操作

-list(map(square,data))将map(square,data)的结果转换为一个list

2.map函数的第一个参数可以是lambda类型,lambda相当于没有命名的函数

# Double all numbers in the list
doubles = list(map(lambda num: num * 2, data))
print("doubles:", doubles)

-lambda函数的使用语法如上,lambda num: num*2  没有名字也没有返回值

-冒号左边是参数,右边是对参数进行的操作(计算返回值的操作)

3.lambda函数举例1:使用lambda函数将两个list中的元素一一取出组成一个tuple的list

# Create a list of random numbers (list comprehension)
randnums = [random.randrange(2, num+3) for num in range(10)]
print("random numbers:", randnums)

# Create a list of tuples
tups = list(map(lambda num1, num2: (num1, num2), data, randnums))
print("tuples:", tups)

-该例子中lambda函数有两个参数num1和num2,函数的操作是将num1和num2组成一个tuple,而num1来自map函数的第二个参数data,num2来自map函数的第三个参数randnums

4.lambda函数举例2:使用lambda函数取出每一个tuple的最小值

# Create a list of the min values in the tuples
mins = list(map(lambda pair: min(pair[0], pair[1]), tups))
print("minimums:", mins)

-lambda函数的参数pair代表一个tuple,返回值为tuple两个元素中的最小值

-传入lambda函数的tuple来自由tuple组成的list,也就是map函数的第二个参数tups

5.与map函数使用类似的函数filter

# Create a list only of tuples where the second item is less than the first
newtups = list(filter(lambda pair: pair[1] < pair[0], tups))
print("filtered:", newtups)

-filter函数的第一个参数也是一个函数,第二个参数也是一个sequence

-filter函数的返回值通常比输入的sequence要小,因为filter只返回在第一个参数的lambda函数中判断为true的元素

-该例子中返回的新list(也就是newtups)只包含tups中满足第二个值小于第一个值条件的tuple

 

三、sort函数的一些其他参数使用

1.sort()默认为正序排序,如果需要逆序可以使用reverse=True

data.sort()
print("ascending sort:", data)
data.sort(reverse=True)
print("descending sort:", data)

2.sort()可以使用key来指定被sort的元素

# Create a list of tuples
datatups = [(item, random.randrange(3, 15)) for item in data]
print("data tuples:", datatups)

# Sort the list
datatups.sort()
print("sorted data tuples:", datatups)

datatups.sort(key=lambda pair: pair[1])
print("sorted by second item:", datatups)

datatups.sort(key=lambda pair: pair[0] * pair[1], reverse=True)
print("sorted by product:", datatups)

-key被用来指定sort的元素,需要是一个函数

-上面的例子中默认情况按照tuple的第一个元素进行排序,第二种情况指定按照第二个元素排序,第三种情况指定按照tuple两个元素的乘积进行排序

3.sorted()函数同样支持reverse和key参数

# Use sorted to sort the list
newdata = sorted(datatups, key=lambda pair: pair[1], reverse=True)
print("tuples after sorted:", datatups)
print("returned from sorted:", newdata)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值