Как подсчитать количество упоминаний каждой характеристики из записей, где характеристики для строки отделены друг от друга символом ";"? Например: "old;white".
Для определения количества записей вам нужно просто посчитать количество строк или элементов в вашем списке или базе данных.
Для подсчета количества упоминаний каждой характеристики из записей, где характеристики отделены символом ";" в каждой строке, вы можете применить следующий алгоритм:
1. Создайте пустой словарь, где ключами будут характеристики, а значениями - количество упоминаний этих характеристик.
2. Проходите по каждой записи и разбивайте строку на отдельные характеристики по символу ";".
3. Для каждой характеристики проверяйте, есть ли она уже в словаре. Если есть, увеличивайте соответствующее значение на 1. Если нет, добавляйте новую запись в словарь с начальным значением 1.
4. После того, как вы обработаете все записи, у вас будет подсчитано количество упоминаний каждой характеристики.
Например, если у вас есть список записей:
["old;white", "young;black", "old;green", "old;white"]
После обработки этого списка вам будет иметь словарь:
{
"old": 3,
"white": 2,
"young": 1,
"black": 1,
"green": 1
}
Прочитать все записи, разбить строку по разделителю, скормить всё в collections.Counter. <br/> С pandas не работал, вот пример для списков: <br/> <pre><code class="python">from collections import Counter
from itertools import chain
data = [
(1, 'old;white'),
(2, 'old;green'),
(3, 'old;brown'),
(4, 'new;green'),
]
# генерирует последовательность ['old', 'white'], ['old', 'green'], ...
split_generator = (item[1].split(';') for item in data)
# генерирует последовательность 'old', 'white', 'old', 'green', ...
property_generator = chain.from_iterable(split_generator)
# исправляет регистр и удаляет пробелы - можно убрать, если не надо
property_fixed_generator = (item.strip().lower() for item in property_generator)
# поглощает данные из генераторов и считает вхождения
count = Counter(property_fixed_generator)
print(count) # Counter({'old': 3, 'green': 2, 'white': 1, 'brown': 1, 'new': 1})</code></pre>