In a python program I have a single output. I want the count of all unique values of that output of that program.I do not want to use dataframe because the input size is too big. I am new to python and any help would be appreciated.
            Asked
            
        
        
            Active
            
        
            Viewed 75 times
        
    -1
            
            
        - 
                    4please read how to create a [minimal reproducible example](https://stackoverflow.com/help/minimal-reproducible-example) – kederrac Mar 20 '20 at 10:14
1 Answers
1
            Solution
You can do it using any of the following three methods. Since, you did not provide any working code or dummy data, I made my own. Although the three methods essentially produce the same result, the order of the unique-values printed is different for each method.
Method-1
Using set and list-comprehension with list.count().  
# Dummy Data
values = list('abcddanbcaeghfgba')
# expect:
# ('a', 4) ('b', 3) ('c', 2) 
# ('d', 2) ('e', 1) ('f', 1) 
# ('g', 2) ('h', 1) ('n', 1)
# Method-1
unique_values = set(values)
counts = [values.count(e) for e in unique_values]
print(*zip(unique_values, counts))
Output:
('a', 4) ('e', 1) ('g', 2) ('b', 3) ('d', 2) ('h', 1) ('f', 1) ('n', 1) ('c', 2)
Method-2
Using collections.Counter.  
from collections import Counter
# Method-2
unique_values = Counter(values).keys() 
counts = Counter(values).values()
print(*zip(unique_values, counts))
Output:
('a', 4) ('b', 3) ('c', 2) ('d', 2) ('n', 1) ('e', 1) ('g', 2) ('h', 1) ('f', 1)
Method-3
Using numpy.unique().  
import numpy as np
# Method-3
unique_values, counts = np.unique(values, return_counts=True)
print(*zip(unique_values, counts))
Output:
('a', 4) ('b', 3) ('c', 2) ('d', 2) ('e', 1) ('f', 1) ('g', 2) ('h', 1) ('n', 1)
Reference:
 
    
    
        CypherX
        
- 7,019
- 3
- 25
- 37
- 
                    @KoustabhGhosh Could you please also **`vote up`** this answer? Thank you. – CypherX Mar 26 '20 at 10:27
