I have the following dataset:
SessionId Query
1 a
1 b
2 a
3 b
3 b
3 c
crosstab should do the job if I understand your question correctly:
import pandas as pd
data = pd.DataFrame({'SessionId': [1, 1, 2, 3, 3, 3, 3],
'Query': ['a', 'b', 'a', 'b', 'b', 'c', 'a']})
pd.crosstab(data.SessionId, data.Query).plot.barh(stacked=True)
Pandas stacked bar chart relies on plotting different columns, so you'd need to pivot your data table to get the queries as columns holding the number of queries in rows.
Try this:
df = pd.DataFrame({"session":[1,1,2,2,3,3],
"query":list("ababab"), "count":[5,7,32,5,8,1]})
df.pivot("session","query").plot(kind="bar", stacked=True)
Output: