pandas妙招之 DataFrame基础运算以及空值填充

1. DataFrame基础运算

在pandas中,DataFrame是最为重要的数据结构之一。DataFrame是由一列列数据组成的,每一列数据的数据类型可以不同。这使得DataFrame非常灵活,适用于各种数据处理任务。

1.1 索引与切片

在操作DataFrame时,很常见的操作是通过索引或切片来获取需要的数据。

对于基于行和列的索引,pandas提供了多种方法,最基础的方法是直接通过行列索引的名称来获取数据,例如:

import pandas as pd

data = {'name': ['Alice', 'Bob', 'Charlie', 'David', 'Emily'],

'age': [25, 32, 18, 47, 23],

'gender': ['F', 'M', 'M', 'M', 'F'],

'country': ['US', 'UK', 'CA', 'AU', 'US']}

df = pd.DataFrame(data)

# 通过列名称获取数据

print(df['name'])

# 通过行和列名称获取数据

print(df.loc[1:3, ['name', 'age']])

输出结果如下:

0       Alice

1 Bob

2 Charlie

3 David

4 Emily

Name: name, dtype: object

name age

1 Bob 32

2 Charlie 18

3 David 47

在上述代码中,我们通过列名称获取了某一列的所有数据,也通过行和列名称获取了一个特定的区域数据。注意,在选择行和列时,我们可以通过loc方法来实现,行和列都应该是可迭代对象。

1.2 数据运算

在实际的数据处理过程中,往往需要对数据进行一些运算,例如对一列数据进行求和或者求平均值等。在pandas中,我们可以非常轻松地完成这些操作,例如:

import pandas as pd

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

# 对一列数据进行求和

print(df['score'].sum())

# 对多列数据进行求和

print(df[['score', 'age']].sum())

# 对一列数据进行求平均值

print(df['score'].mean())

在上述代码中,我们通过sum和mean方法分别对DataFrame中的数据进行了求和和求平均值操作。其中,sum和mean这两个方法都是针对DataFrame中数字类型的数据而设计的,当操作的列数据不是数字类型时会出现异常。

2. 空值填充

在数据处理过程中,经常会遇到一些缺失数据或空值,这种情况需要进行处理以免对后续分析产生影响。在pandas中,我们可以使用fillna方法来填充空值。

2.1 空值的判断

在进行空值填充之前,我们需要先判断哪些地方存在空值,在pandas中可通过isna或isnull方法来进行判断。

import pandas as pd

import numpy as np

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

# 判断哪些地方存在空值

print(df.isna())

# 通过sum方法计算出每一列中空值的数量

print(df.isna().sum())

在上述代码中,我们通过isna方法来判断数据中是否存在空值,这个方法返回了一个DataFrame,其中数据为True代表该位置存在空值。通过sum方法我们能够得到每一列中空值的数量。

2.2 空值的填充

当我们确认存在空值时,需要对这些空值进行填充。在进行空值填充时,我们可以通过使用fillna方法,并传入我们希望用来填充空值的数据。

import pandas as pd

import numpy as np

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

# 使用0对所有空值进行填充

df.fillna(0, inplace=True)

print(df)

# 使用列平均值对所有空值进行填充

df.fillna(df.mean(), inplace=True)

print(df)

在上述代码中,我们分别使用0和列平均值对所有空值进行了填充。需要注意的是,fillna方法只能填充NaN类型的空值,而不能填充None类型的空值。

2.3 插值填充

对于一些连续变量的数据,我们可以通过使用插值方法来进行填充。pandas提供了多种插值方法,其中最常用的是linear方法,它会根据已有的数据点在空值位置进行线性插值。

import pandas as pd

import numpy as np

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

# 使用linear方法对空值进行插值填充

df.interpolate(method='linear', inplace=True)

print(df)

在上述代码中,我们使用linear方法对所有空值进行插值填充。不同的插值方法可以在method参数中指定。

在本文中,我们介绍了基础的DataFrame运算方法以及空值填充方法,pandas还提供了更为丰富的方法来满足不同的数据处理需求。在实际使用时,我们需要根据自己的具体情况选择合适的方法。

后端开发标签