我正在分析社交媒体上的一组成员。我有4个参数,我计划纳入分析:年龄、性别、城市和教育程度。问题是,我可以在所有4个参数都到位的情况下占到组成员总数的25%,因为大多数配置文件不包含所有4条信息。
我们的目标是对这一群体的人口统计数据有一个大致的了解:* 性别构成 , 按教育程度、城市和年龄组的分布 *。我的数据包含许多缺失值,它们出现在这些字段中的每一个。
我是数据分析的新手,努力选择正确的方法来解决丢失数据的问题。我想到了这样的选择:
1.使用pandas的插值方法(特别是pad)插入值而不是丢失的数据。
1.删除所有具有NaN值的行并分析剩余的行。(这将销毁表中75%的所有行)
1.忽略缺失值并对每个指标使用不同的样本量?例如:像{age: NaN, sex: female, education: NaN, city: NaN}
这样的记录将被计入性别分布,而不是其他记录。相反,记录{age: 24, sex: female, education: Secondary, city: London}
将被计入所有四个索引。考虑到这一点,性别分布可能反映了近99%的实际订户,但年龄分布将根据仅占总群体成员数25%的数据进行分析。
所以我希望能得到一个关于在这种特殊情况下我应该选择什么方法的建议。
我正在使用python库pandas进行分析,但我欢迎任何关于总体方向的建议:)
1条答案
按热度按时间ct2axkht1#
考虑到你提供给我们的背景,我认为重要的是要强调你的数据由分类特征组成,据我所知,你的数据集是如何收集的,没有任何顺序。
这排除了使用pandas
.pad
方法填充缺失值的可能性,因为该方法会向前填充或回填缺失值。为了说明填充方法的常见用例,考虑一些随机信号时间序列数据,其中一些信号值在变为空之前下降到0。在这种情况下,转发或回填缺失值是有意义的。
但如果你有一堆来自社交媒体账户的无序数据:
我认为使用forward或backfill来替换
age
或sex
类别中缺失的值是没有意义的(更不用说education
或city
了,除非你有更多的信息,否则似乎不可能填充,比如像单性别大学这样相对罕见的情况)。因此,我认为您需要在删除所有缺失值的行或单独分析特性之间做出选择。如果你单独分析这些特征,你会发现人们只分析一个特征,而不分析另一个特征,所以你应该首先确定缺失值中是否有任何模式。例如,如果
city a
中没有人列出他们的年龄,但这个城市主要由教育水平高于平均水平的人组成,如果您按年龄分析教育水平,则可能会扭曲数据。在this article中很好地总结了确定缺失数据中的模式,我鼓励您阅读。也就是说,您可以基于删除任何列中缺失数据的行来执行分析,而不是基于删除仅一列中缺失数据的行来执行相同的分析,并查看分析是否相似-这可能是确定数据是否完全随机丢失的合理代理。如果你的数据是完全随机缺失的,那么有了足够大的数据集,你可以假设每个特征的分布应该保持大致相同,你可以单独分析每个特征。