Python代码实操,Python代码整洁之道:编写优雅的代码
数据鲸干货
作者:弗兰克安德拉德,译者:张峰
众所周知,一开始编写Python代码是非常容易的,但是随着你向工具包中添加更多的库,你的脚本可能会有不必要的代码行,这会变得冗长和混乱。短期内也许能应付工作,但从长远来看,会很麻烦。
在本文中,我将与您分享7个技巧,让您在使用Python进行数据科学时更加简洁。这涵盖了我们日常做的事情,比如修改熊猫数据框中的值,连接字符串,读取文件等等!
1.使用Lambda修改Pandas数据框中的值。假设我们有以下测向数据帧:
数据=[[1,2,3],[4,5,6],[7,8,9]]
df=pd。DataFrame(数据,列=[0,1,2])
在[1]中:打印(df)
OUT[1]: 0 1 2
0 1 2 3
1 4 5 6
7 8 9现在由于某种原因,您需要将01的值加到0列中的数字上。一种常见的方法是定义一个函数来完成这项任务,然后使用apply函数来修改列的值。
def add_numbers(x):
返回f“{ x } 01”
df[0]=df[0]。应用(添加数字)
在[1]中:打印(df)
OUT[1]: 0 1 2
0 101 2 3
1 401 5 6
这并不复杂,但是为数据帧中的每个变化创建一个函数是不切实际的。这时候lambda就派上用场了。
Lambda函数类似于普通的Python函数,但是可以不用名字定义,这使得它成为一个漂亮的单行代码。之前使用的代码可以通过以下方式减少。
Df [0]=df [0]。当您不知道是否可以访问一系列属性来修改数据时,Apply (Lambda x: f {x} 01) Lambda变得非常有用。
例如,第0列包含字母,我们希望将它们大写。
#如果你知道。str存在,您可以这样做
df[0]=df[0].str.title()
#如果你不知道。str,你仍然可以用lambda把它大写
Df [0]=df [0]。Apply (lambda x: x.title ()) 2 .使用f-string连接字符串字符串连接是Python中非常常见的操作,可以用不同的方式完成。最常见的方法是使用运算符;然而,这个操作符的一个问题是我们不能在字符串之间添加任何分隔符。
当然,如果要将 Hello 与 World 连接起来,典型的变通方法是添加一个空白分隔符()。
Print (hello world )这就完成了工作,但是为了编写更可读的代码,我们可以用f字符串来代替它。
IN[2]:print(f“{ Hello } { World }”)
OUT[2]: Hello World 在一个基本的例子中,这似乎是不必要的,但当涉及到连接多个值时(正如您将在技巧#3中看到的),f-string将使您免于多次编写 。以前不知道要写多少次运算符,现在不会了!
连接字符串的其他方法是使用join()方法或format()函数,但是,f-string更擅长字符串连接。
3.用Zip()函数遍历多个列表。你有没有想过在Python中遍历多个列表?当你有两个列表时,可以用枚举来实现。
teams=[巴塞罗那,拜仁慕尼黑,切尔西]
联赛=[西甲,德甲,英超]
对我来说,团队在列举(团队):
联赛=联赛[i]
print(f { team }在{league} 中比赛)然而,当你有两个或更多的名单时,这就变得不切实际了。更好的方法是使用zip()函数。zip()函数接收迭代数据,将它们聚集在一个元组中,然后返回它们。
我们再加一个列表,看看zip()的威力!
teams=[巴塞罗那,拜仁慕尼黑,切尔西]
联赛=[西甲,德甲,英超]
国家=[西班牙,德国,英国]
对于zip中的球队、联赛、国家(球队、联赛、国家):
print(f { team }在{league}打球。country: {country} )上述代码的输出结果是:
巴塞罗那在西甲踢球。国家:西班牙
拜仁慕尼黑在德甲踢球。国家:德国
国家:英国在这里,你注意到我们在这个例子中使用了f弦吗?代码变得更可读了,不是吗?
4.使用列表理解来清理和处理数据的一个常见步骤是修改现有列表。例如,我们有以下需要大写的列表:
Words=[California , Florida , Texas]大写单词列表中每个元素的典型方法是创建一个新的大写列表,执行一个for循环,使用。title(),然后将每个修改后的值追加到新列表中。
大写=[]
逐字逐句:
Capitalized.append(word.title())但是,Pythonic的方法是利用列表理解来做到这一点。列表理解有一种优雅的方式来制作列表。
您可以用一行代码重写上面的for循环:
大写=[word . title()for word in word]所以我们可以跳过第一个例子中的一些步骤,结果是一样的。
5.在处理项目时,我们经常读写文件。最常见的方法是使用open()函数打开一个文件,这样会创建一个我们可以操纵的file对象,然后按照惯例,我们应该使用close()关闭file对象。
f=打开( dataset.txt , w )
f.write(新数据)
F.close()这个很好记,但是有时候写了几个小时的代码,我们可能会忘记用f.close()关闭F文件。这时,with语句就派上用场了。with语句将自动关闭文件对象f,格式如下:
用open(dataset.txt , w )作为f:
F.write(new_data )有了这个,我们可以保持代码简短。
读取CSV文件不需要用它,因为用熊猫的pd.read_csv()就可以轻松读取,不过在读取其他类型的文件时还是很有用的。例如,从pickle文件中读取数据时经常使用它。
进口泡菜
#从pickle文件中读取数据集
使用open(test , rb )作为输入:
Data=pickle.load(输入)6。停止使用方括号获取词典条目,使用。请改为get()。例如,有以下字典:
Person={name: John , age: 20}我们可以分别通过person[name]和person[age]得到姓名和年龄。但是,出于某种原因,我们想得到一个并不存在的关键,比如‘工资’。跑人【薪资】会引发一个‘key error’。
此时,get()方法是有用的。如果键在字典中,get()方法返回指定键的值,但是如果没有找到键,Python将返回None。由于这个原因,你的代码不会被中断。
person={name: John , age: 20}
print(Name:,person.get(name ))
print(Age:,person.get(age ))
Print (salary:,person.get (salary ))输出结果如下:
姓名:约翰
年龄:20岁
工资:无7。多重赋值你有没有想过减少用于创建多个变量、列表或字典的代码行数?然后,你可以很容易地用多个赋值来完成这个任务。
#原始操作
a=1
b=2
c=3
#替代操作
a,b,c=1,2,3
#而不是在不同的行中创建多个列表
data_1=[]
data_2=[]
data_3=[]
data_4=[]
#可以在一行中创建多个分配
数据1,数据2,数据3,数据4=[],[],[],[]
#或者使用列表理解。
data_1,data_2,data_3,data_4=[[] for i in range(4)]
不太好整理,好像连续三个
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。