Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python: Counting frequency of pairs of elements in a list of lists

Tags:

python

csv

Actually, I have a dataset about a "meeting". For example, A,B,C have a meeting, then the list would be [A,B,C]. Like this, each list would contain a list of members who participated in the meeting. Therefore:

line1= (A,B,C)

line2= (A,C,D,E)

line3 = (D,F,G)

...

I just would like to count the number how many times each pair of members meet each other. For example, member A meets C two times from line1 and line2 and member B meets C one time from line1. So, I would like to make a chart like this..

    A  B  C  D E F G...

 A  .  1  2  1 ...  

 B  1  . 1  0 

 C

...

I thought it would be easy at the first but I am pretty confused. Please help me and thank you so much in advance.

like image 973
user976856 Avatar asked Jun 01 '12 04:06

user976856


People also ask

How do you count occurrences of an item in a list Python?

The easiest way to count the number of occurrences in a Python list of a given item is to use the Python . count() method. The method is applied to a given list and takes a single argument. The argument passed into the method is counted and the number of occurrences of that item in the list is returned.

How do you count occurrences of an item in a list?

Use the list. count() method of the built-in list class to get the number of occurrences of an item in the given list.

How do you count multiples in a list in Python?

If you want to count multiple items in a list, you can call count() in a loop. This approach, however, requires a separate pass over the list for every count() call; which can be catastrophic for performance. Use couter() method from class collections , instead.


1 Answers

Rather than manually summing frequencies, use collections.counter along with itertools:

from collections import Counter
from itertools import chain, combinations

meets = Counter(chain.from_iterable(combinations(line, 2) for line in lines))

Where lines is an iterable of iterables of names.

like image 58
agf Avatar answered Oct 28 '22 02:10

agf