#python #dataframe #for-loop #duplicates
#python #фрейм данных #for-цикл #дубликаты
Вопрос:
По сути, я пытаюсь найти категориальные столбцы, которые имеют менее 3 дублирований каждого класса. Например, на прилагаемом скриншоте у меня есть столбец с именем Name, «Тип 1«, и я хочу, чтобы имена этих столбцов возвращались в моем выводе, если каждая категория в этих столбцах (скажем, Bulbasaur, Nidoino) присутствует <3 раз, и причина, по которой я хочу это выполнить, заключается в такомслучаи, когда столбец в основном имеет уникальные значения, я могу пометить их кодированием.
Ниже приведен код, который я опробовал, но я не нахожу решения.
Может кто-нибудь, пожалуйста, помочь?
labels = [str(Training_data[object_cols].unique()[i]) for i in range(Training_data[object_cols].nunique())]
values = [Training_data[object_cols].value_counts()[i] for i in range(Training_data[object_cols].nunique())]
labels
values
Target_dis = pd.DataFrame((labels, values))
Target_dis = Target_dis.T
Target_dis.columns = ['Labels', 'Counts']
Target_dis = Target_dis.sort_values('Counts', ascending=False)
Target_dis
Ответ №1:
Вы можете использовать этот value_counts
метод для своих столбцов:
Target_dis['Name'].value_counts()
Ответ №2:
Я не совсем уверен, чего вы хотите, и почему вы должны кодировать метки. Итак, я добавил ниже некоторый код, который выводит для каждого столбца, сколько раз встречается наиболее распространенное значение.
import pandas as pd
df = pd.DataFrame({
'Name': ['Bulbasaur', 'Bulbasaur', 'Nidorino', 'Nidoking', 'Clefairy', 'Clefable',
'Vulpix', 'Ninetales', 'Jigglypuff'],
'Type 1': ['Grass', 'Grass', 'Grass', 'Grass', 'Fire', 'Fire', 'Fire', 'Fire', 'Fire'],
'Type 2': ['Poison', 'Poison', 'Poison', 'Poison', '', '', 'Flying', 'Dragon', 'Flying'],
'Total': [318, 405, 525, 625, 309, 405, 534, 634, 634],
'HP': [45, 60, 80, 80, 39, 58, 78, 78, 78],
'Attack': [49, 62, 82, 100, 52, 64, 84, 130, 104],
})
for col in df:
max_count = df[col].value_counts().max()
print(f"Values in column '{col}' are repeated at most {max_count} times.")
Values in column 'Name' are repeated at most 2 times.
Values in column 'Type 1' are repeated at most 5 times.
Values in column 'Type 2' are repeated at most 4 times.
Values in column 'Total' are repeated at most 2 times.
Values in column 'HP' are repeated at most 3 times.
Values in column 'Attack' are repeated at most 1 times.