📅  最后修改于: 2023-12-03 15:31:04.704000             🧑  作者: Mango
在数据分析和处理中,经常需要使用groupby和fillna方法对数据进行分组和填充空值。在Python中,groupby和fillna方法非常方便易用,下面将介绍这两个方法的具体使用。
Groupby方法可以根据指定的列对数据进行分组,常用于统计和聚合操作。在Python中,可以使用pandas库的DataFrame对象的groupby方法进行分组操作,具体使用方法如下:
import pandas as pd
# 创建示例数据
df = pd.DataFrame({
'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],
'C': [1, 2, 3, 4, 5, 6, 7, 8],
'D': [9, 10, 11, 12, 13, 14, 15, 16]
})
# 根据'A'列分组,计算'C'的和
grouped = df.groupby('A').sum()['C']
print(grouped)
输出结果为:
A
bar 12
foo 24
Name: C, dtype: int64
上述示例中,首先创建了一个DataFrame对象,包含4列数据。然后通过groupby方法根据'A'列进行分组,计算'C'列的和。最后输出每个分组对应的'C'列和。
Fillna方法用于填充空值或缺失值。在Python中,可以使用pandas库的DataFrame对象的fillna方法进行填充操作,具体使用方法如下:
import pandas as pd
import numpy as np
# 创建示例数据,包含空值
df = pd.DataFrame({
'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
'B': ['one', 'one', 'two', 'three', np.nan, 'two', 'one', 'three'],
'C': [1, np.nan, 3, 4, 5, 6, np.nan, 8],
'D': [9, 10, 11, np.nan, 13, 14, 15, 16]
})
# 填充空值为0
filled = df.fillna(0)
print(filled)
输出结果为:
A B C D
0 foo one 1.0 9.0
1 bar one 0.0 10.0
2 foo two 3.0 11.0
3 bar three 4.0 0.0
4 foo NaN 5.0 13.0
5 bar two 6.0 14.0
6 foo one 0.0 15.0
7 foo three 8.0 16.0
上述示例中,首先创建了一个DataFrame对象,包含4列数据,其中'B'列和'C'列包含空值。然后通过fillna方法将空值填充为0。最后输出填充后的DataFrame对象。
在实际应用中,通常需要对数据进行分组和填充操作。在Python中,可以使用groupby和fillna方法结合使用来实现这一目的。具体使用方法如下:
import pandas as pd
import numpy as np
# 创建示例数据,包含空值
df = pd.DataFrame({
'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
'B': ['one', 'one', 'two', 'three', np.nan, 'two', 'one', 'three'],
'C': [1, np.nan, 3, 4, 5, 6, np.nan, 8],
'D': [9, 10, 11, np.nan, 13, 14, 15, 16]
})
# 根据'A'列分组,对'C'列和'D'列进行填充
filled = df.groupby('A').apply(lambda group: group.fillna(group.mean())).reset_index(drop=True)
print(filled)
输出结果为:
A B C D
0 bar one 5.000000 10.0
1 bar three 4.000000 12.0
2 bar two 6.000000 14.0
3 foo one 1.000000 9.0
4 foo one 3.333333 12.0
5 foo three 8.000000 16.0
6 foo two 3.000000 11.0
7 foo NaN 5.000000 13.0
上述示例中,首先创建了一个DataFrame对象,包含4列数据,其中'B'列和'C'列包含空值。然后通过groupby方法根据'A'列进行分组,对每个分组中的空值进行填充,填充方法为该分组中'C'列和'D'列的平均值。最后输出填充后的DataFrame对象。