使用 Pandas 进行过滤

我正在使用以下数据集(基本上是代表美国枪击死亡人数的数据集),我试图证明“大约三分之二的凶杀案受害者是 15 岁年龄段的男性—— 34 是黑色的”。

这是我的尝试:

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岁之间的男性凶杀案受害者。


我该怎么做才能使这个过滤过程更加有效?


炎炎设计
浏览 1597回答 2
2回答

肥皂起泡泡

另一种方法(可能具有更好的可读性)是使用查询方法。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                             5901White                             1568Hispanic                          1564Asian/Pacific Islander             122Native American/Native Alaskan      90

皈依舞

尝试这个:data = pd.read_csv("./guns-data-master/full_data.csv")homicides = data[(data['intent'] == 'Homicide')&nbsp; & (data['sex'] == 'M') & (data['age'] <= 34.0) & (data['age'] >= 15.0) ]homicides.race.value_counts()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python