Pandas – 从整个数据框架中剥离空白部分

Pandas – 从整个数据框架中剥离空白部分

“我们可以有数据而没有信息,但我们不能有信息而没有数据”。这句话是多么美好。数据是数据科学家的支柱,根据一项调查,数据科学家花了大约60%的时间来清理和组织数据,所以我们有责任让我们熟悉不同的技术,以更好的方式组织数据。在这篇文章中,我们将学习不同的方法来去除整个DataFrame中多余的带状空白。这里使用的数据集如下。

Pandas - 从整个数据框架中剥离空白部分

在上图中,我们观察到,在姓名、年龄、血型和性别这几列中,数据是不规则的。在某一列的大多数单元格中,在数值的前半部分存在额外的空白。因此,我们的目标是删除所有多余的空白,并以系统的方式组织它。我们将使用不同的方法来帮助我们删除单元格中的所有多余空格。不同的方法是:

Using Strip() function
Using Skipinitialspace 
Using replace function 
Using Converters

删除多余空白的不同方法

方法1:使用Strip()函数:

Pandas提供了预先定义的方法 “pandas.Series.str.strip() “来删除字符串中的空格。使用strip函数,我们可以很容易地从盯住的前导和尾部的空白处删除多余的空白。它返回一个系列或一个对象的索引。它接收我们想从字符串的头部和尾部(前导和尾部字符)去除的字符集。默认情况下,它是没有字符的,如果我们不传递任何字符,那么它将从字符串中删除前导和尾部的空白处。它返回一个系列或一个对象的索引。

语法: pandas.Series.str.strip(to_strip = None)

解释:它需要一组我们想从字符串的头部和尾部(前导和尾部字符)中删除的字符。

参数:默认为无,如果我们不传递任何字符,那么它将删除字符串的前导和尾部的空白。它返回系列或对象的索引。

示例 :

# importing library
import pandas as pd
 
# Creating dataframe
df = pd.DataFrame({'Names' : [' Sunny','Bunny','Ginny ',' Binny ',' Chinni','Minni'],
                    'Age' : [23,44,23,54,22,11],
                    'Blood Group' : [' A+',' B+','O+','O-',' A-','B-'],
                   'Gender' : [' M',' M','F','F','F',' F']
                  })
 
# As dataset having lot of extra spaces in cell so lets remove them using strip() function
df['Names'].str.strip()
df['Blood Group'].str.strip()
df['Gender'].str.strip()
 
# Printing dataframe
print(df)

输出:

Pandas - 从整个数据框架中剥离空白部分

方法2:使用Skipinitialspace:

它不是任何方法,但它是Pandas中read_csv()方法的一个参数。在pandas.read_csv()方法中存在skipinitialspace参数,使用它我们可以跳过整个数据帧中的初始空间。默认情况下,它是假的,把它设为 “真 “就可以删除多余的空间。

语法 : pandas.read_csv(‘path_of_csv_file’, skipinitialspace = True)

skipinitialspace的默认值为False,将其设为True才能使用这个参数。

示例 :

# importing library
import pandas as pd
 
# reading csv file and at a same time using skipinitial attribute which will remove extra space
df = pd.read_csv('\\student_data.csv', skipinitialspace = True)
 
# printing dataset
print(df)

输出:

Pandas - 从整个数据框架中剥离空白部分

方法 3:使用替换函数:

使用replace()函数,我们也可以从数据框架中删除多余的空白。Pandas提供了预先定义的方法 “pandas.Series.str.replace() “来删除空白。它的程序与strip()方法的程序相同,唯一不同的是,这里我们将使用replace函数来代替strip()。

语法 : pandas.Series.str.replace( ' ', '')

示例 :

# importing library
import pandas as pd
 
# Creating dataframe
df = pd.DataFrame({'Name' : [' Sunny','Bunny','Ginny ',' Binny ',' Chinni','Minni'],
                    'Age' : [23,44,23,54,22,11],
                    'Blood Group' : [' A+',' B+','O+','O-',' A-','B-'],
                   'Gender' : [' M',' M','F','F','F',' F']
                  })
 
# As dataset having lot of extra spaces in cell so lets remove them using strip() function
df['Names'].str.replace(' ', '')
df['Blood Group'].str.replace(' ', '')
df['Gender'].str.replace(' ', '')
 
# Printing dataframe
print(df)

输出:

Pandas - 从整个数据框架中剥离空白部分

方法4:使用转换器:

它与 skipinitialspace 类似,是 pandas 预定义方法 “read_csv” 中的一个参数。它被用来在特定的列上应用不同的函数。我们必须在字典中传递函数。这里我们将直接传递 strip() 函数,它将在读取 csv 文件时删除多余的空间。

语法 : pd.read_csv(“path_of_file”, converters={‘column_names’: function_name})

传递函数和列名的口令,其中列名作为唯一键,函数作为值。

示例 :

# importing library
import pandas as pd
 
# reading csv file and at a same time using converters attribute which will remove extra space
df = pd.read_csv('\\student_data.csv', converters={'Name': str.strip(),
                                                'Blood Group' : str.strip(),
                                                'Gender' : str.strip() } )
 
# printing dataset
print(df)

输出:

Pandas - 从整个数据框架中剥离空白部分

通过创建一些代码去除整个数据框架的多余空白:

# Importing required libraries
import pandas as pd
 
# Creating DataFrame having 4 columns and but
# the data is in unregularized way.
df = pd.DataFrame({'Names': [' Sunny', 'Bunny', 'Ginny ',
                             ' Binny ', ' Chinni', 'Minni'],
                    
                   'Age': [23, 44, 23, 54, 22, 11],
                    
                   'Blood_Group': [' A+', ' B+', 'O+', 'O-',
                                   ' A-', 'B-'],
                    
                   'Gender': [' M', ' M', 'F', 'F', 'F', ' F']
                   })
 
 
# Creating a function which will remove extra leading
# and tailing whitespace from the data.
# pass dataframe as a parameter here
def whitespace_remover(dataframe):
   
    # iterating over the columns
    for i in dataframe.columns:
         
        # checking datatype of each columns
        if dataframe[i].dtype == 'object':
             
            # applying strip function on column
            dataframe[i] = dataframe[i].map(str.strip)
        else:
             
            # if condn. is False then it will do nothing.
            pass
 
# applying whitespace_remover function on dataframe
whitespace_remover(df)
 
# printing dataframe
print(df)

在上面的代码片段中,第一行我们导入了所需的库,这里pandas被用来对数据进行读、写和许多其他操作,然后我们用pandas创建了一个有4列’姓名’、’年龄’、’血型’和’性别’的DataFrame。几乎所有的列都有不规则的数据。现在,主要的部分从这里开始,我们创建了一个函数,它将删除数据中多余的前导和尾部的空白。这个函数以数据框架为参数,检查每一列的数据类型,如果该列的数据类型是 “对象”,则对该列应用pandas库中预定义的剥离函数,否则它将什么也不做。然后在下一行,我们在数据框架上应用whitespace_remover()函数,成功地从列中移除多余的空格。

输出:

Pandas - 从整个数据框架中剥离空白部分

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程