我有一个关于巴西杀戮女性的数据集。这些列是州、type_of_crime、年份、数量 deaths_100K_pop。数量上有一些缺失值,我想用列数量的平均值来填充这些值,但我应该每年都这样做。我不知道该怎么做,哪种方式更有效。我需要一些帮助,但不是整个解决方案。谢谢。
我考虑过在几年内使用 groupby 并发现每年的每个平均值,然后填充缺失值。我也考虑过循环。
对于此任务,您应该使用来自 Python Pandas 库的 DataFrame 对象来管理您的数据。使用 DataFrame,有几种方法可以完成您的任务。
您可以使用带有 for 循环的
groupby()
方法来替换缺失值。你的代码会是这样的:
"""
Disclaimer: Only pseudocode, may not work correctly
"""
import pandas as pd
df = # load the data
# group data by year
grouped = df.groupby('year')
# find the mean for each year using the built-in mean method
means = grouped['quantity'].mean()
# Fill in missing values
for year, mean in means.items():
m = (df['year'] == year) & (df['quantity'].isna())
df.loc[m, 'quantity'] = mean
您还可以使用
fillna
、groupby
、transform
和 mean
在一行中解决此问题。
df['quantity'] = df['quantity'].fillna(df.groupby('year')['quantity'].transform('mean'))
这很可能比循环更快。