具有缺失值的谋杀数据

问题描述 投票:0回答:1

我有一个关于巴西杀戮女性的数据集。这些列是州、type_of_crime、年份、数量 deaths_100K_pop。数量上有一些缺失值,我想用列数量的平均值来填充这些值,但我应该每年都这样做。我不知道该怎么做,哪种方式更有效。我需要一些帮助,但不是整个解决方案。谢谢。

我考虑过在几年内使用 groupby 并发现每年的每个平均值,然后填充缺失值。我也考虑过循环。

missing-data fillna
1个回答
0
投票

对于此任务,您应该使用来自 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'))

这很可能比循环更快。

© www.soinside.com 2019 - 2024. All rights reserved.