为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Pandas 进行过滤

使用 Pandas 进行过滤

炎炎设计 2023-08-22 15:55:35
我正在使用以下数据集(基本上是代表美国枪击死亡人数的数据集),我试图证明&ldquo;大约三分之二的凶杀案受害者是 15 岁年龄段的男性&mdash;&mdash; 34 是黑色的&rdquo;。这是我的尝试:data = pd.read_csv("./guns-data-master/full_data.csv")homicides = data[data['intent'] == 'Homicide']male_homicides = homicides[homicides['sex'] == 'M']less_thirty_four = male_homicides[male_homicides['age'] <= 34.0]within_range = less_thirty_four[less_thirty_four['age'] >= 15.0]within_range.race.value_counts()这基本上给了我足够的信息来证明我想要的。不过,我确信一定有一种更简单、更有效的方法来过滤掉所有年龄在15岁至34岁之间的男性凶杀案受害者。我该怎么做才能使这个过滤过程更加有效?
查看完整描述

2 回答

?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

另一种方法(可能具有更好的可读性)是使用查询方法。

url = "https://raw.githubusercontent.com/fivethirtyeight/guns-data/master/full_data.csv"

df = pd.read_csv(url, index_col=[0])


df.query("age >= 25 and age <= 34 and intent == 'Homicide' and sex == 'M'") \

  .race \

  .value_counts()

Black                             5901

White                             1568

Hispanic                          1564

Asian/Pacific Islander             122

Native American/Native Alaskan      90


查看完整回答
反对 回复 2023-08-22
?
皈依舞

TA贡献1851条经验 获得超3个赞

尝试这个:


data = pd.read_csv("./guns-data-master/full_data.csv")

homicides = data[(data['intent'] == 'Homicide')  & (data['sex'] == 'M') & (data['age'] <= 34.0) & (data['age'] >= 15.0) ]

homicides.race.value_counts()


查看完整回答
反对 回复 2023-08-22
  • 2 回答
  • 0 关注
  • 1596 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信