How to generate BAR plot using pandas DataFrame?
0

How to generate BAR plot using pandas DataFrame?

This recipe helps you generate BAR plot using pandas DataFrame
In [2]:
## How to generate BAR plot using pandas DataFrame
def Snippet_113():
    print()
    print(format('How to use timeseries using pandas DataFrame','*^82'))
    import warnings
    warnings.filterwarnings("ignore")

    # load libraries
    import pandas as pd
    import matplotlib.pyplot as plt
    import numpy as np

    # Create dataframe
    raw_data = {'first_name': ['Jason', 'Molly', 'Tina', 'Jake', 'Amy'],
                'pre_score': [4, 24, 31, 2, 3],
                'mid_score': [25, 94, 57, 62, 70],
                'post_score': [5, 43, 23, 23, 51]}
    df = pd.DataFrame(raw_data, columns = ['first_name', 'pre_score', 'mid_score',
                                           'post_score'])
    print(); print(df)

    # input data, specifically the second and third rows, skipping the first column
    Molly = df.ix[1, 1:]
    Tina = df.ix[2, 1:]

    # Create the bar labels
    bar_labels = ['Pre Score', 'Mid Score', 'Post Score']

    # Create a figure
    plt.figure(figsize=(8,6))

    # Set the y position
    y_pos = np.arange(len(Molly))
    y_pos = [x for x in y_pos]
    plt.yticks(y_pos, bar_labels, fontsize=10)

    # Create a horizontal bar in the position y_pos
    plt.barh(y_pos, Molly, align='center', alpha=0.4, color='#263F13')
    plt.barh(y_pos, -Tina, align='center', alpha=0.4, color='#77A61D')

    # annotation and labels
    plt.xlabel('Tina\'s Score: Light Green. Molly\'s Score: Dark Green')
    plt.title('Comparison of Molly and Tina\'s Score')
    plt.ylim([-1,len(Molly)+0.1])
    plt.xlim([-max(Tina)-10, max(Tina)+10])
    plt.grid(); plt.show()

Snippet_113()
*******************How to use timeseries using pandas DataFrame*******************

  first_name  pre_score  mid_score  post_score
0      Jason          4         25           5
1      Molly         24         94          43
2       Tina         31         57          23
3       Jake          2         62          23
4        Amy          3         70          51