2 added 103 characters in body
source | link

Wrap each data point with Labeled and add the option ChartLegends -> {"Group A", "Group B"}

BarChart[Labeled[#, Style[#, 14], Center] & /@ # & /@ Thread @ data, 
 ChartLabels -> {Placed[Range[1, 9], Below], None}, Frame -> True, 
 FrameTicks -> {False, True}, 
 BaseStyle -> {Large, FontFamily -> "Arial", Black}, 
 BarSpacing -> {0, 0.8}, PlotRange -> {All, {-0.3, 2}}, 
 PlotRangePadding -> {0.8, {0, 0}}, AspectRatio -> 0.4, 
 ImageSize -> 800, 
 FrameStyle -> Directive[Black, AbsoluteThickness[3]]]AbsoluteThickness[3]],
 ChartLegends -> {"Group A", "Group B"}]

enter image description hereenter image description here

Or, keep Thread@dataThread @ data as the first argument and add the option

LabelingFunction -> (Placed[Style[#, 14], Center] &)

to get the same picture.

Wrap each data point with Labeled

BarChart[Labeled[#, Style[#, 14], Center] & /@ # & /@ Thread @ data, 
 ChartLabels -> {Placed[Range[1, 9], Below], None}, Frame -> True, 
 FrameTicks -> {False, True}, 
 BaseStyle -> {Large, FontFamily -> "Arial", Black}, 
 BarSpacing -> {0, 0.8}, PlotRange -> {All, {-0.3, 2}}, 
 PlotRangePadding -> {0.8, {0, 0}}, AspectRatio -> 0.4, 
 ImageSize -> 800, 
 FrameStyle -> Directive[Black, AbsoluteThickness[3]]]

enter image description here

Or, keep Thread@data as the first argument and add the option

LabelingFunction -> (Placed[Style[#, 14], Center] &)

to get the same picture.

Wrap each data point with Labeled and add the option ChartLegends -> {"Group A", "Group B"}

BarChart[Labeled[#, Style[#, 14], Center] & /@ # & /@ Thread @ data, 
 ChartLabels -> {Placed[Range[1, 9], Below], None}, Frame -> True, 
 FrameTicks -> {False, True}, 
 BaseStyle -> {Large, FontFamily -> "Arial", Black}, 
 BarSpacing -> {0, 0.8}, PlotRange -> {All, {-0.3, 2}}, 
 PlotRangePadding -> {0.8, {0, 0}}, AspectRatio -> 0.4, 
 ImageSize -> 800, 
 FrameStyle -> Directive[Black, AbsoluteThickness[3]],
 ChartLegends -> {"Group A", "Group B"}]

enter image description here

Or, keep Thread @ data as the first argument and add the option

LabelingFunction -> (Placed[Style[#, 14], Center] &)

to get the same picture.

1
source | link

Wrap each data point with Labeled

BarChart[Labeled[#, Style[#, 14], Center] & /@ # & /@ Thread @ data, 
 ChartLabels -> {Placed[Range[1, 9], Below], None}, Frame -> True, 
 FrameTicks -> {False, True}, 
 BaseStyle -> {Large, FontFamily -> "Arial", Black}, 
 BarSpacing -> {0, 0.8}, PlotRange -> {All, {-0.3, 2}}, 
 PlotRangePadding -> {0.8, {0, 0}}, AspectRatio -> 0.4, 
 ImageSize -> 800, 
 FrameStyle -> Directive[Black, AbsoluteThickness[3]]]

enter image description here

Or, keep Thread@data as the first argument and add the option

LabelingFunction -> (Placed[Style[#, 14], Center] &)

to get the same picture.