6
6
7
7
import pandas as pd
8
8
9
- __version__ = "0.3 .0"
10
- __version_date__ = "2025-03 -17"
9
+ __version__ = "0.4 .0"
10
+ __version_date__ = "2025-07 -17"
11
11
__plugin_name__ = "Number of occurences of behaviors by subject by independent_variable"
12
12
__author__ = "Olivier Friard - University of Torino - Italy"
13
13
@@ -19,16 +19,36 @@ def run(df: pd.DataFrame):
19
19
This plugin returns a Pandas dataframe
20
20
"""
21
21
22
- df_results : df .DataFrame = (
23
- df .groupby (
24
- [
25
- "independent variable 'Weather'" ,
26
- "Subject" ,
27
- "Behavior" ,
28
- ]
29
- )["Behavior" ]
30
- .count ()
31
- .reset_index (name = "number of occurences" )
32
- )
33
-
34
- return df_results
22
+ df_results_list : list = []
23
+
24
+ flag_variable_found = False
25
+
26
+ for column in df .columns :
27
+ if isinstance (column , tuple ) or (isinstance (column , str ) and not column .startswith ("independent variable '" )):
28
+ continue
29
+
30
+ flag_variable_found = True
31
+ grouped_df : df .DataFrame = (
32
+ df .groupby (
33
+ [
34
+ column ,
35
+ "Subject" ,
36
+ "Behavior" ,
37
+ ]
38
+ )["Behavior" ]
39
+ .count ()
40
+ .reset_index (name = "number of occurences" )
41
+ )
42
+
43
+ grouped_df .rename (columns = {column : "Value" }, inplace = True )
44
+
45
+ grouped_df .insert (0 , "independent variable name" , column )
46
+
47
+ df_results_list .append (grouped_df )
48
+
49
+ df_results = pd .concat (df_results_list , ignore_index = True ) if df_results_list else pd .DataFrame ([])
50
+
51
+ if not flag_variable_found :
52
+ return "No independent variable found"
53
+ else :
54
+ return df_results
0 commit comments