发布时间:2022-02-10 09:47:55 人气:272 作者:多测师
Python简单易学,现今非常流行。Python被用于各种场景,如数据科学、机器学习、web开发、脚本编制、自动化等等。
Python的简单易学性在数据科学非常重要。尽管一些数据科学家有计算机科学背景或了解其他编程语言,但仍有许多数据科学家来自各类专业,如统计学、数学或其他技术学科,当他们刚进入这个行业时,可能并没有那么多编程知识。Python语法易于理解和编写的优势,使它成为一种流行于快速且易于学习的编程语言。
在本文中,云朵君将和大家一起学习 40 个可以帮助你加快数据处理效率的的方法和技巧,希望对你有所帮助。
01 列表推导式
列表的元素可以在一行中循环遍历。
numbers = [1, 2, 3, 4, 5, 6, 7, 8]
even_numbers = [number for number in numbers if number % 2 == 0]
print(even_numbers)
输出
[1,3,5,7]
同样可以使用字典、集合和生成器来完成推导式。
dictionary = {'first_num': 1, 'second_num': 2,
'third_num': 3, 'fourth_num': 4}
oddvalues = {key: value for (key, value) in dictionary.items() if value % 2 != 0}
print(oddvalues)Output: {'first_num': 1,
'third_num': 3}
02 枚举函数
Enumerate (枚举) 是一个很有用的函数,用于迭代对象,如列表、字典或文件。该函数生成一个元组,其中包括通过对象迭代获得的值以及循环计数器(从 0 的起始位置)。当希望根据索引编写代码时,循环计数器就派上用场了。
来看一个示例,其中第一个和最后一个元素会被区别对待。
sentence = 'Just do It'
lenlength = len(sentence)
for index, element in enumerate(sentence):
print('{}: {}'.format(index, element))
if index == 0:
print('The first element!')
elif index == length - 1:
print('The last element!')
输出
0: J
The first element!
1: u
2: s
3: t
4:
5: d
6: o
7:
8: I
9: t
The last element!
也可以使用 enumerate 函数枚举文件。在下面的示例中,在跳出循环之前打印 CSV 文件的前 10 行。并且可以在任何文件上使用该函数。
with open('heart.csv') as f:
for i, line in enumerate(f):
if i == 10:
break
print(line)
03 通过函数返回多个值
在设计函数时,我们经常希望返回多个值。在这里介绍两种典型的方法。
方法一
最简单的是返回一个元组。这种方法通常只在有两个或三个值要返回时使用。但当元组中有更多值时,很容易忘记项目的顺序。
下面的代码部分是一个示例函数,它根据学生的 ID 号将学生的名字和姓氏作为元组返回。
# 返回元组
def get_student(id_num):
if id_num == 0:
return '君', '云朵'
elif id_num == 1:
return '猴子', '小'
else:
raise Exception('没有学生的id是: {}'.format(id_num))
当我们使用数字 0 调用函数时,我们注意到它返回一个具有两个值的元组:'Taha' 和 'Nate' 。
Student = get_student(0)
print('名字: {}, 姓氏: {}'.format(Student[0],
Student[1]))
输出
名字:君,姓氏:云朵
方法二
第二个选择是返回字典。因为字典是键值对,我们可以对返回的值进行命名,这比元组更直观。
方法二的实现方式和方法一一样,只是返回一个字典。
# 返回字典
def get_data(id_num):
if id_num == 0:
return {'first_name': '君',
'last_name': '云朵',
'title': '数据STUDIO',
'department': 'A',
'date_joined': '20201001'}
elif id_num == 1:
return {'first_name': '猴子',
'last_name': '小',
'title': '机器学习研习院',
'department': 'B',
'date_joined': '20201019'}
else:
raise Exception('没有员工的id是: {}'.format(id_num))
当结果是字典时,通过键引用特定值会更容易。我们正在调用 id_num = 0 的函数。
employee = get_data(0)
print('first_name: {}, nlast_name: {}, ntitle: {}, ndepartment: {}, ndate_joined: {}'.format(
employee['first_name'], employee['last_name'],
employee['title'], employee['department'],
employee['date_joined']))
输出
first_name: 君,
last_name: 云朵,
title: 数据STUDIO,
department: A,
date_joined: 20201001
04 像在数学中一样比较多个数字
如果有一个值并希望将其与其他两个值进行比较,可以使用以下基本数学表达式: 1
这就是我们在小学学到的代数表达式。同样的语句也可以在 Python 中使用。你应该用过如下的比较方式:
1<30< and>
在 Python 中实现上述比较方式的另一种比较方法是:1
x = 5
print(1
输出
True
05 将字符串转换为字符串列表
假设将函数的输入作为字符串,但它应该是这样的列表:
输入 = [[1, 2, 3], [4, 5, 6]]
其实无需处理复杂的正则表达式,只需导入模块'ast'并调用其函数literal_eval:
import ast
def string_to_list(string):
return ast.literal_eval(string)
string = "[[1, 2, 3],[4, 5, 6]]"
my_list = string_to_list(string)
print(my_list)
输出
[[1, 2, 3], [4, 5, 6]]
06 For-Else 方法
此方法用于在列表上应用循环。通常,当你想遍历你应用的列表时,可以使用 for 循环。但是在这种方法中,你可以在循环中传递一个 else 条件,这种情况极为罕见。其他编程语言不支持这种方法。
看看它在一般情况下是如何工作的:如果要检查列表中是否有偶数。
number_List = [1, 3, 7, 9,8]
for number in number_List:
if number % 2 == 0:
print(number)
break
else:
print("No even numbers!!")
输出
8
如果找到偶数,则将打印该数字,并且 else 部分将不会执行,因为我们传递了一个 break 语句。如果 break 语句从不执行,则 else 块将执行。
07 从列表中找到N个最大/小的元素
通过使用'heapq'模块,你可以从列表中找到 n-largest 或 n-smallest 元素。
import heapq
numbers = [80, 25, 68, 77, 95, 88, 30, 55, 40, 50]
print(heapq.nlargest(5, numbers))
print(heapq.nsmallest(5, numbers))
输出
[95, 88, 80, 77, 68] [25, 30, 40, 50, 55]
08 函数参数以列表值传递
可以使用'*'访问列表的所有元素。
def Summation(*arg):
sum = 0
for i in arg:
sum += i
return sum
result = Summation(*[8,5,10,7])
print(result)
输出
30
09 重复整个字符串
只需将字符串乘以一个数字,即希望字符串重复的次数。
value = "数据STUDIO"
print(value * 3)
print("-" *31)
输出
数据STUDIO数据STUDIO数据STUDIO
----------------------------
10 从列表中找到元素的索引
使用".index"从列表中查找元素的索引。
cities= ['Vienna', 'Amsterdam', 'Paris', 'Berlin']
print(cities.index('Berlin'))
以上内容为大家介绍了好用到起飞的 Python 技巧!,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注多测师。https://www.e70w.com/xwzx/