Python代码实操,Python代码整洁之道-编写优雅的代码

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: