данный
patient_id test_result has_cancer
0 79452 Negative False
1 81667 Positive True
2 76297 Negative False
3 36593 Negative False
4 53717 Negative False
5 67134 Negative False
6 40436 Negative False
как подсчитать False или True в столбце в Python?
Я пытался:
# number of patients with cancer
number_of_patients_with_cancer= (df["has_cancer"]==True).count()
print(number_of_patients_with_cancer)






Значит вам нужен value_counts?
df.col_name.value_counts()
Out[345]:
False 6
True 1
Name: has_cancer, dtype: int64
Спасибо!! как мне напечатать только «Ложь»? (Я проверяю pandas.pydata.org/pandas-docs/stable/generated/…, но не совсем понятно)
+ 1 @ NeyJTorres Для записи, вы можете получить только номер False, добавив .loc[False], как в df.has_cancer.value_counts().loc[False]. Однако, когда вам нужен только либоTrue или False (но не оба сразу), я думаю, что проще использовать подход, подобный (~df.has_cancer).sum(), от холодного спида.
Просто просуммируйте столбец для подсчета Истин. Ложь - это просто частный случай 0, а Истина - особый случай 1. Счетчик Ложи будет вашим количеством строк за вычетом этого. Если только у вас там нет na.
и если у меня там NaN?
Сумма na, как если бы они были 0, последний раз я проверял.
Если has_cancer имеет NaN:
false_count = (~df.has_cancer).sum()
Если has_cancer не имеет NaN, вы можете оптимизировать, не отменяя маски заранее.
false_count = len(df) - df.has_cancer.sum()
И аналогично, если вы хотите, чтобы просто подсчитывал истинные значения, то есть
true_count = df.has_cancer.sum()
Если вы хотите и то, и другое, это
fc, tc = df.has_cancer.value_counts().sort_index().tolist()
0 True
1 False
2 False
3 False
4 False
5 False
6 False
7 False
8 False
9 False
Если приведенная выше серия панда называется примером
example.sum()
Затем этот код выводит 1, поскольку в серии есть только одно значение True. Чтобы узнать количество False
len(example) - example.sum()
number_of_patients_with_cancer = df.has_cancer[df.has_cancer==True].count()
Рассматривайте ваш вышеупомянутый фрейм данных как df
True_Count = df[df.has_cancer == True]
len(True_Count)
Отвечает ли это на ваш вопрос? Подсчитайте количество случаев True / False в столбце фрейма данных