plotting stacked bar graph on column values
up vote
1
down vote
favorite
I have a Pandas data frame that looks like this:
ID Management Administrative
1 1 2
3 2 1
4 3 3
10 1 3
essentially the 1-3 is a grade of low medium or high. I want a stacked bar chart that has Management and Administrative on x-axis and the stacked composition of 1,2,3 of each column in percentages.
e.g. if there were only 4 entries as above, 1 would compose 50% of the height, 2 would compose 25% and 3 would compose 25% of the height of the management bar. The y axis would go up to 100%.
Hope this makes sense. Hard to explain but if unclear willing to clarify further!
python pandas bar-chart
add a comment |
up vote
1
down vote
favorite
I have a Pandas data frame that looks like this:
ID Management Administrative
1 1 2
3 2 1
4 3 3
10 1 3
essentially the 1-3 is a grade of low medium or high. I want a stacked bar chart that has Management and Administrative on x-axis and the stacked composition of 1,2,3 of each column in percentages.
e.g. if there were only 4 entries as above, 1 would compose 50% of the height, 2 would compose 25% and 3 would compose 25% of the height of the management bar. The y axis would go up to 100%.
Hope this makes sense. Hard to explain but if unclear willing to clarify further!
python pandas bar-chart
It is very unclear to me as I can't see the relation of your explanation to your dataframe. To me, for index 1, Management would compose for 33% and Administrative 66% for instance.
– IMCoins
Nov 21 at 17:55
add a comment |
up vote
1
down vote
favorite
up vote
1
down vote
favorite
I have a Pandas data frame that looks like this:
ID Management Administrative
1 1 2
3 2 1
4 3 3
10 1 3
essentially the 1-3 is a grade of low medium or high. I want a stacked bar chart that has Management and Administrative on x-axis and the stacked composition of 1,2,3 of each column in percentages.
e.g. if there were only 4 entries as above, 1 would compose 50% of the height, 2 would compose 25% and 3 would compose 25% of the height of the management bar. The y axis would go up to 100%.
Hope this makes sense. Hard to explain but if unclear willing to clarify further!
python pandas bar-chart
I have a Pandas data frame that looks like this:
ID Management Administrative
1 1 2
3 2 1
4 3 3
10 1 3
essentially the 1-3 is a grade of low medium or high. I want a stacked bar chart that has Management and Administrative on x-axis and the stacked composition of 1,2,3 of each column in percentages.
e.g. if there were only 4 entries as above, 1 would compose 50% of the height, 2 would compose 25% and 3 would compose 25% of the height of the management bar. The y axis would go up to 100%.
Hope this makes sense. Hard to explain but if unclear willing to clarify further!
python pandas bar-chart
python pandas bar-chart
asked Nov 21 at 16:41
user8322222
408
408
It is very unclear to me as I can't see the relation of your explanation to your dataframe. To me, for index 1, Management would compose for 33% and Administrative 66% for instance.
– IMCoins
Nov 21 at 17:55
add a comment |
It is very unclear to me as I can't see the relation of your explanation to your dataframe. To me, for index 1, Management would compose for 33% and Administrative 66% for instance.
– IMCoins
Nov 21 at 17:55
It is very unclear to me as I can't see the relation of your explanation to your dataframe. To me, for index 1, Management would compose for 33% and Administrative 66% for instance.
– IMCoins
Nov 21 at 17:55
It is very unclear to me as I can't see the relation of your explanation to your dataframe. To me, for index 1, Management would compose for 33% and Administrative 66% for instance.
– IMCoins
Nov 21 at 17:55
add a comment |
1 Answer
1
active
oldest
votes
up vote
0
down vote
You will need to chain several operations: First melt
your dataset to move the Department
as a new variable, after that you can groupby
the Department
and the Rating
to count
the number of IDs that fall into that bucket, then you groupby
again by Department
to calculate the percentages. Lastly you can plot
your stacked bar graph:
df4.melt().rename(columns={'variable':'Dept', 'value':'Rating'}
).query('Dept!="ID"'
).groupby(['Dept','Rating']).size(
).rename('Count'
).groupby(level=0).apply(lambda x: x/sum(x)
).unstack().plot(kind='bar', stacked=True)
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
0
down vote
You will need to chain several operations: First melt
your dataset to move the Department
as a new variable, after that you can groupby
the Department
and the Rating
to count
the number of IDs that fall into that bucket, then you groupby
again by Department
to calculate the percentages. Lastly you can plot
your stacked bar graph:
df4.melt().rename(columns={'variable':'Dept', 'value':'Rating'}
).query('Dept!="ID"'
).groupby(['Dept','Rating']).size(
).rename('Count'
).groupby(level=0).apply(lambda x: x/sum(x)
).unstack().plot(kind='bar', stacked=True)
add a comment |
up vote
0
down vote
You will need to chain several operations: First melt
your dataset to move the Department
as a new variable, after that you can groupby
the Department
and the Rating
to count
the number of IDs that fall into that bucket, then you groupby
again by Department
to calculate the percentages. Lastly you can plot
your stacked bar graph:
df4.melt().rename(columns={'variable':'Dept', 'value':'Rating'}
).query('Dept!="ID"'
).groupby(['Dept','Rating']).size(
).rename('Count'
).groupby(level=0).apply(lambda x: x/sum(x)
).unstack().plot(kind='bar', stacked=True)
add a comment |
up vote
0
down vote
up vote
0
down vote
You will need to chain several operations: First melt
your dataset to move the Department
as a new variable, after that you can groupby
the Department
and the Rating
to count
the number of IDs that fall into that bucket, then you groupby
again by Department
to calculate the percentages. Lastly you can plot
your stacked bar graph:
df4.melt().rename(columns={'variable':'Dept', 'value':'Rating'}
).query('Dept!="ID"'
).groupby(['Dept','Rating']).size(
).rename('Count'
).groupby(level=0).apply(lambda x: x/sum(x)
).unstack().plot(kind='bar', stacked=True)
You will need to chain several operations: First melt
your dataset to move the Department
as a new variable, after that you can groupby
the Department
and the Rating
to count
the number of IDs that fall into that bucket, then you groupby
again by Department
to calculate the percentages. Lastly you can plot
your stacked bar graph:
df4.melt().rename(columns={'variable':'Dept', 'value':'Rating'}
).query('Dept!="ID"'
).groupby(['Dept','Rating']).size(
).rename('Count'
).groupby(level=0).apply(lambda x: x/sum(x)
).unstack().plot(kind='bar', stacked=True)
answered Nov 21 at 18:26
Franco Piccolo
1,335611
1,335611
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53416772%2fplotting-stacked-bar-graph-on-column-values%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
It is very unclear to me as I can't see the relation of your explanation to your dataframe. To me, for index 1, Management would compose for 33% and Administrative 66% for instance.
– IMCoins
Nov 21 at 17:55