美文网首页我爱编程
Python Beginners(6) -- Pandas &

Python Beginners(6) -- Pandas &

作者: 西瓜三茶 | 来源:发表于2017-06-18 22:57 被阅读0次

    1.pd.to_datetime

    import pandas as pd
    unrate = pd.read_csv("unrate.csv")
    unrate['DATE'] = pd.to_datetime(unrate['DATE'])
    print (unrate.head(12))
    

    2.DataViz Intro

    plt.plot
    The default plot for plt.plot

    import matplotlib.pyplot as plt
    plt.plot()
    plt.show()
    

    Add x_value and y_value

    xvalue = unrate['DATE'].iloc[0:12]
    yvalue = unrate['VALUE'].iloc[0:12]
    plt.xticks(rotation = 90) # rotate the label
    plt.xlabel("Month")  # add x_label
    plt.ylabel("Unemployment Rate")  # add y_label
    plt.suptitle("Monthly Unemployment Trends, 1948")  # add title
    plt.plot(xvalue, yvalue)
    

    Create multiple subplots in a figure

    import matplotlib.pyplot as plt
    fig = plt.figure(figsize = (12,6))
    ax1 = fig.add_subplot(2,1,1) #2rows 1column, row 1st
    ax2 = fig.add_subplot(2,1,2) #2rows 1column, row 2nd
    x1 = unrate["DATE"].iloc[0:12]
    y1 = unrate["VALUE"].iloc[0:12]
    x2 = unrate["DATE"].iloc[12:24]
    y2 = unrate["VALUE"].iloc[12:24]
    ax1.plot(x1, y1)
    ax2.plot(x2, y2)
    plt.show()
    

    Get year from datetime and plot multiple figures

    import matplotlib.pyplot as plt
    fig = plt.figure(figsize = (12,12))
    xvalue = []
    yvalue = []
    for i in range(1948, 1953):
        x = unrate['DATE'].loc[unrate['DATE'].dt.year == i]  # get year
        y = unrate['VALUE'].loc[unrate['DATE'].dt.year == i] # get year
        xvalue.append(x)
        yvalue.append(y)
    for i in range(0, 5):
        ax = fig.add_subplot(5, 1, i+1)
        ax.plot(xvalue[i], yvalue[i])
    plt.show()
    

    Plot several lines in the same figure

    unrate['MONTH'] = unrate['DATE'].dt.month
    fig = plt.figure(figsize=(6,3))
    plt.plot(unrate[0:12]['MONTH'], unrate[0:12]['VALUE'], c='red')
    plt.plot(unrate[12:24]['MONTH'], unrate[12:24]['VALUE'], c='blue')
    plt.show()
    

    Set range for different index, set legend

    fig = plt.figure(figsize=(10,6))
    colors = ['red', 'blue', 'green', 'orange', 'black']
    for i in range(5):
        start_index = i*12
        end_index = (i+1)*12
        subset = unrate[start_index:end_index]
        label = str(1948 + i)
        plt.plot(subset['MONTH'], subset['VALUE'], c=colors[i], label=label)
    plt.legend(loc='upper left')
    plt.xlabel("Month, Integer")
    plt.ylabel("Unemployment Rate, Percent")
    plt.title("Monthly Unemployment Trends, 1948-1952")
    plt.show()
    

    Select certain columns from a dataframe

    import pandas as pd
    reviews = pd.read_csv("fandango_scores.csv")
    norm_reviews = reviews[['FILM', 'RT_user_norm', 'Metacritic_user_nom', 'IMDB_norm', 'Fandango_Ratingvalue', 'Fandango_Stars']]
    print (norm_reviews[:1]) # get the first row
    

    Draw a bar chart

    import matplotlib.pyplot as plt
    from numpy import arange
    fig, ax = plt.subplots()
    num_cols = ['RT_user_norm', 'Metacritic_user_nom', 'IMDB_norm', 'Fandango_Ratingvalue', 'Fandango_Stars']
    bar_heights = norm_reviews[num_cols].iloc[0].values
    # arange returns to [0, 1, 2, 3, 4] + 0.75 for each of it
    bar_positions = arange(5) + 0.75
    ax.bar(bar_positions, bar_heights, 0.5)
    plt.show()
    

    set_xtick

    import matplotlib.pyplot as plt
    from numpy import arange
    fig, ax = plt.subplots()
    num_cols = ['RT_user_norm', 'Metacritic_user_nom', 'IMDB_norm', 'Fandango_Ratingvalue', 'Fandango_Stars']
    bar_heights = norm_reviews[num_cols].iloc[0].values
    bar_positions = arange(5) + 0.75
    ax.bar(bar_positions, bar_heights, 0.5)
    tick_positions = range(1,6)
    ax.set_xticks(tick_positions)
    ax.set_xticklabels(num_cols, rotation = 90)
    ax.set_xlabel("Rating Source")
    ax.set_ylabel("Average Rating")
    ax.set_title("Average User Rating For Avengers: Age of Ultron (2015)")
    plt.show()
    

    Set barh chart

    import matplotlib.pyplot as plt
    from numpy import arange
    num_cols = ['RT_user_norm', 'Metacritic_user_nom', 'IMDB_norm', 'Fandango_Ratingvalue', 'Fandango_Stars']
    # set fig, ax and draw barh
    fig, ax = plt.subplots()
    bar_widths = norm_reviews[num_cols].iloc[0].values
    bar_positions = arange(5) + 0.75
    ax.barh(bar_positions, bar_widths, 0.5)
    # set tick_positions
    tick_positions = range(1,6)
    ax.set_yticks(tick_positions)
    ax.set_yticklabels(num_cols)
    ax.set_xlabel("Average Rating")
    ax.set_ylabel("Rating Source")
    ax.set_title("Average User Rating For Avengers: Age of Ultron (2015)")
    plt.show()
    

    Set scatter plot

    fig, ax = plt.subplots()
    ax.scatter(norm_reviews['Fandango_Ratingvalue'], norm_reviews['RT_user_norm'])
    ax.set_xlabel("Fandango")
    ax.set_ylabel("Rotten Tomatoes")
    plt.show()
    

    Frequency Distribution

    fr_counts = norm_reviews["Fandango_Ratingvalue"].value_counts()
    fandango_distribution = fr_counts.sort_index()
    

    Histogram

    fig, ax = plt.subplots()
    # here range() sets the range for xaxis
    ax.hist(norm_reviews['Fandango_Ratingvalue'], range = (0, 5))
    plt.show()
    

    Multiple histogram

    fig = plt.figure(figsize=(5,20))
    cname = ["Fandango_Ratingvalue", "RT_user_norm", "Metacritic_user_nom", "IMDB_norm"]
    ctitle = ["Distributino of Fandango Ratings", "Distribution of Rotten Tomatoes Ratings", "Distribution of Metacritic Ratings", "Distribution of IMDB Ratings"]
    for i in range(0, 4):
        ax = fig.add_subplot(4, 1, i+1)
        ax.hist(norm_reviews[cname[0]], bins = 20, range = (0, 5))
        ax.set_ylim(0, 50)
        ax.set_ylabel("Frequency")
        ax.set_title(ctitle[i])
    plt.show()
    

    Boxplot

    fig, ax = plt.subplots()
    ax.boxplot(norm_reviews["RT_user_norm"])
    ax.set_ylim(0, 5)
    ax.set_xticklabels(["Rotten Tomatoes"]) # it has to be iterable
    plt.show()
    

    Several boxplot in one figure

    fig, ax = plt.subplots()
    num_cols = ['RT_user_norm', 'Metacritic_user_nom', 'IMDB_norm', 'Fandango_Ratingvalue']
    ax.boxplot(norm_reviews[num_cols].values)
    ax.set_xticklabels(num_cols, rotation = 90)
    ax.set_ylim(0,5)
    plt.show()
    

    相关文章

      网友评论

        本文标题:Python Beginners(6) -- Pandas &

        本文链接:https://www.haomeiwen.com/subject/kkgmqxtx.html