详解16个Pandas函数,让你的 “数据清洗” 能力提高100倍!

1. 简介

在数据分析领域,数据清洗是非常重要的步骤之一。它可以帮助我们将数据中的错误、缺失和不一致的部分处理掉,让数据更加规整、易于分析。而在Python中,Pandas库是执行数据清洗的重要工具之一,其内置的一些函数可以帮助我们更高效地进行数据清洗。本文就来介绍一下16个常用的Pandas函数,让我们的数据清洗能力提高100倍!

2. 数据清洗常用函数

2.1 read_csv()

read_csv()函数可以将CSV格式的文件读入DataFrame中,方便进行数据处理。该函数具有很多参数,可以自定义分隔符、编码等参数。以下是该函数的基本用法:

import pandas as pd

data = pd.read_csv('data.csv')

print(data.head())

其中,'data.csv'是待读入的CSV文件路径,head()函数可以查看读入数据的前5行。

2.2 dropna()

dropna()函数可以将DataFrame或Series中的缺失值删除。可以选择删除某一列或某一行,参数中的how和thresh可以对删除行数进行筛选。以下是该函数的用法:

import pandas as pd

data = pd.read_csv('data.csv')

new_data = data.dropna(how='any', thresh=None, axis=0)

print(new_data.head())

其中,how参数指定了如何删除行或列,'any'表示删除含有缺失值的行或列,'all'表示只删除全是缺失值的行或列;thresh参数指定了保留的缺失值个数,axis参数指定了删除行还是列。

2.3 fillna()

fillna()函数可以用指定的值或方法来填充DataFrame中的缺失值。以下是该函数的用法:

import pandas as pd

data = pd.read_csv('data.csv')

new_data = data.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None)

print(new_data.head())

其中,value参数可以指定用来填充缺失值的常数或字典;method参数可以指定填充方法,比如'ffill'表示将前面的值向后填充,'bfill'表示将后面的值向前填充。

2.4 drop_duplicates()

drop_duplicates()函数可以删除DataFrame中的重复行,保留唯一值行。参数中的keep可以指定保留哪些重复行。以下是该函数的用法:

import pandas as pd

data = pd.read_csv('data.csv')

new_data = data.drop_duplicates(subset=None, keep='first', inplace=False, ignore_index=False)

print(new_data.head())

其中,subset参数可以指定检查哪些列是否有重复行,keep参数可以指定保留哪些重复行,'first'表示保留第一个重复行,'last'表示保留最后一个重复行,False表示全部删除。

2.5 map()

map()函数可以映射Series或DataFrame中的值。它将一个替换字典映射到Series或DataFrame中,将一个字典映射到DataFrame的一个或多个列中。以下是该函数的用法:

import pandas as pd

data = pd.read_csv('data.csv')

new_data = data['column'].map(dict)

print(new_data.head())

其中,column参数指定了需要进行映射的列名或列标签,dict参数指定了替换字典,格式举例:dict = {'a': 'x', 'b': 'y', 'c': 'z'}。

2.6 apply()

apply()函数可以对Series或DataFrame中的每个元素应用一个函数。通过传递一个参数函数,可以将Series或DataFrame中的每个元素都应用这个函数。以下是该函数的用法:

import pandas as pd

data = pd.read_csv('data.csv')

new_data = data['column'].apply(function)

print(new_data.head())

其中,column参数指定了需要应用函数的列名或列标签,function参数是需要应用的函数名。

2.7 groupby()

groupby()函数可以根据一个或多个键对数据集进行分组。通常,需要对分组后的数据集应用一些聚合函数,比如sum()、mean()等。以下是该函数的用法:

import pandas as pd

data = pd.read_csv('data.csv')

grouped = data.groupby('column')

new_data = grouped.mean()

print(new_data.head())

其中,column参数指定了所需的列名或列标签,mean()函数计算了分组后每个组的平均值。

2.8 merge()

merge()函数可以根据一列或多列进行合并操作,根据指定的列名称执行类似于数据库连接的操作。以下是该函数的用法:

import pandas as pd

data1 = pd.read_csv('data.csv')

data2 = pd.read_csv('data2.csv')

merged_data = pd.merge(data1, data2, on='column')

print(merged_data.head())

其中,column参数指定了需要进行合并操作的列名或列标签。

2.9 pivot_table()

pivot_table()函数可以用来创建透视表。透视表是根据一个DataFrame中的列来分组并聚合另一个列而得到的一种特殊的数据表格。以下是该函数的用法:

import pandas as pd

data = pd.read_csv('data.csv')

pivot_data = pd.pivot_table(data, values='value', index='index', columns='column')

print(pivot_data.head())

其中,index、columns和values参数分别指定了透视表的索引、列和值。

2.10 melt()

melt()函数是一种用于改变DataFrame的形状的函数。它将列转换为行,将数据“堆叠”在一起。以下是该函数的用法:

import pandas as pd

data = pd.read_csv('data.csv')

melt_data = data.melt(id_vars=['id'], value_vars=['col1', 'col2'])

print(melt_data.head())

其中,id_vars和value_vars参数分别指定了需要保留的ID列和需要转换的列的名称。

2.11 cut()

cut()函数是一种将一个连续变量分成多个离散区间的函数。以下是该函数的用法:

import pandas as pd

data = pd.read_csv('data.csv')

cut_data = pd.cut(data['col'], bins=3, labels=['Small', 'Medium', 'Large'])

print(cut_data.head())

其中,col参数指定了需要分组的列名或列标签,bins参数指定了区间数,labels参数指定了区间名称。

2.12 qcut()

qcut()函数是一种与cut()类似的函数,它可以基于指定的样本分位数来将一个连续变量分成多个离散区间。以下是该函数的用法:

import pandas as pd

data = pd.read_csv('data.csv')

qcut_data = pd.qcut(data['col'], q=3, labels=['Small', 'Medium', 'Large'])

print(qcut_data.head())

其中,col参数指定了需要分组的列名或列标签,q参数指定了样本分位数,labels参数指定了区间名称。

2.13 crosstab()

crosstab()函数可以计算出透视表中的交叉频数。两个变量之间的交叉频数可以用透视表来表示。以下是该函数的用法:

import pandas as pd

data = pd.read_csv('data.csv')

cross_data = pd.crosstab(data['col1'], data['col2'])

print(cross_data.head())

其中,col1和col2参数指定了需要计算交叉频数的变量。

2.14 get_dummies()

get_dummies()函数可以将分类变量转换为虚拟变量/指标变量,使得可以将一个分类变量分解为多个二进制指标。以下是该函数的用法:

import pandas as pd

data = pd.read_csv('data.csv')

dummies_data = pd.get_dummies(data['col'])

print(dummies_data.head())

其中,col参数指定了需要转换为虚拟变量的列名或列标签。

2.15 to_datetime()

to_datetime()函数可以将对象转换为Datetime格式。以下是该函数的用法:

import pandas as pd

data = pd.read_csv('data.csv', parse_dates=['col'])

time_data = pd.to_datetime(data['col'], format='%Y-%m-%d')

print(time_data.head())

其中,col参数指定了需要转换为Datetime格式的列名或列标签,format参数指定了所需的时间格式。

2.16 pd.to_numeric()

pd.to_numeric()函数可以将对象转换为数值格式。以下是该函数的用法:

import pandas as pd

data = pd.read_csv('data.csv')

num_data = pd.to_numeric(data['col'], errors='coerce')

print(num_data.head())

其中,col参数指定了需要转换为数值格式的列名或列标签,errors参数指定了所需的错误处理方法。

3. 总结

本文介绍了16个常用的Pandas函数,用于完成数据清洗工作。可以根据不同的数据格式和要求选择适合的函数,进行高效的数据清洗操作。

后端开发标签