Hello there,
I have data like this
Genres
Action|Adventure
Action|Adventure|Animation
Action|Adventure|Animation|Comedy|Drama
Action|Adventure|Animation|Comedy|Family
Action|Adventure|Animation|Drama|Family
Action|Adventure|Animation|Family
Action|Adventure|Animation|Family|Fantasy
Action|Adventure|Animation|Family|Mystery
Action|Adventure|Animation|Family|Science Fiction
Action|Adventure|Animation|Fantasy
Action|Adventure|Animation|Fantasy|Horror
Action|Adventure|Animation|Fantasy|Science Fiction
I want to know what genre is the most popular? (= how often does a word occur in this column?)
How can I do it with python 3?
Thank you!
J
Use collections:
from collections import Counter
data = 'Genres\nAction|Adventure\nAction|Adventure|Animation\nAction|Adventure|Animation|Comedy|Drama\n' \
'Action|Adventure|Animation|Comedy|Family\nAction|Adventure|Animation|Drama|Family\n' \
'Action|Adventure|Animation|Family\nAction|Adventure|Animation|Family|Fantasy\n' \
'Action|Adventure|Animation|Family|Mystery\nAction|Adventure|Animation|Family|Science Fiction\n' \
'Action|Adventure|Animation|Fantasy\nAction|Adventure|Animation|Fantasy|Horror\n' \
'Action|Adventure|Animation|Fantasy|Science Fiction\n'
data_list = data.strip().split('|')
print(Counter(data_list).most_common(1))
Results:
Output:
[('Adventure', 11)]
Great answer @Lars60+. I thnk the newlines should be replaced by vertical bars before parsing (see 'Adventure\n' in line one).
from collections import Counter
data = 'Genres\nAction|Adventure\nAction|Adventure|Animation\nAction|Adventure|Animation|Comedy|Drama\n' \
'Action|Adventure|Animation|Comedy|Family\nAction|Adventure|Animation|Drama|Family\n' \
'Action|Adventure|Animation|Family\nAction|Adventure|Animation|Family|Fantasy\n' \
'Action|Adventure|Animation|Family|Mystery\nAction|Adventure|Animation|Family|Science Fiction\n' \
'Action|Adventure|Animation|Fantasy\nAction|Adventure|Animation|Fantasy|Horror\n' \
'Action|Adventure|Animation|Fantasy|Science Fiction\n'
data_list = data.replace('\n', '|')
data_list = data_list.strip().split('|')
print(Counter(data_list).most_common(1))
Output:
[('Action', 12)]
Lewis
(Jun-10-2018, 03:19 PM)Larz60+ Wrote: [ -> ]Use collections:
data = 'Genres\nAction|Adventure\nAction|Adventure|Animation\nAction|Adventure|Animation|Comedy|Drama\n' \
'Action|Adventure|Animation|Comedy|Family\nAction|Adventure|Animation|Drama|Family\n' \
'Action|Adventure|Animation|Family\nAction|Adventure|Animation|Family|Fantasy\n' \
'Action|Adventure|Animation|Family|Mystery\nAction|Adventure|Animation|Family|Science Fiction\n' \
'Action|Adventure|Animation|Fantasy\nAction|Adventure|Animation|Fantasy|Horror\n' \
'Action|Adventure|Animation|Fantasy|Science Fiction\n'
data_list = data.strip().split('|')
print(Counter(data_list).most_common(1))
Results:
Output:
[('Adventure', 11)]
With
\n
in the middle, the Counter will produce a wrong result
data_list = data.strip().replace('\n', '|').split('|')
print(Counter(data_list).most_common(1))
The right result -
Output:
[('Action', 12)]
But I have a nagging suspicion that the
column
in OP is in
DataFrame
Ooops, missed the post above
yup, they need to be removed
(Jun-10-2018, 07:38 PM)volcano63 Wrote: [ -> ]But I have a nagging suspicion that the column in OP is in DataFrame
Yes,i guess this part is left this out and just assume that all should know that this is for Pandas.
@
Jack_Sparrow not all Python user use Pandas,and post runnable code like sample data that get read in and making a working DataFrame.
(Jun-10-2018, 08:39 PM)snippsat Wrote: [ -> ] (Jun-10-2018, 07:38 PM)volcano63 Wrote: [ -> ]But I have a nagging suspicion that the column in OP is in DataFrame
Yes,i guess this part is left this out and just assume that all should know that this is for Pandas.
@Jack_Sparrow not all Python user use Pandas,and post runnable code like sample data that get read in and making a working DataFrame.
I have scrambled a solution for
Series
(now I have to find that Notebook), but - knowing the seeker's nature
, I was waiting (in vain
?) for the minimal effort