【问题标题】:How to plot multiple pandas columns如何绘制多个熊猫列
【发布时间】:2018-05-26 07:00:30
【问题描述】:

我有数据框total_year,其中包含三列(yearactioncomedy)。

total_year

我想在 x 轴上绘制 year 列,在 y 轴上绘制 actioncomedy

如何在 y 轴上绘制两列(actioncomedy)?

我的代码仅在 y 轴上绘制一列。

total_year[-15:].plot(x='year', y='action', figsize=(10,5), grid=True)

【问题讨论】:

    标签: python pandas matplotlib plot data-science


    【解决方案1】:
    • 使用pandas.DataFrame.plot 时,只需为x 参数指定一列。
      • 需要注意的是,具有numeric 值的其余列将用于y
      • 以下代码包含要演示的额外列。请注意,'date' 保留为 string。但是,如果将 'date' 转换为 datetime dtype,则绘图 API 还将在 y 轴上绘制 'date' 列。
    • 如果数据框包含许多列,其中一些不应被绘制,则指定y 参数,如此answer 所示,但如果数据框仅包含要绘制的列,则仅指定@987654336 @参数。
    • 如果要将索引用作 x 轴,则无需指定 x=
    import pandas as pd
    
    # test data
    data = {'year': [1914, 1915, 1916, 1919, 1920],
            'action': [2.67, 3.43, 3.26, 2.82, 1.75],
            'comedy': [2.53, 2.93, 3.02, 3.37, 3.45],
            'test1': ['a', 'b', 'c', 'd', 'e'],
            'date': ['1914-01-01', '1915-01-01', '1916-01-01', '1919-01-01', '1920-01-01']}
    
    # create the dataframe
    df = pd.DataFrame(data)
    
    # display(df)
       year  action  comedy test1        date
    0  1914    2.67    2.53     a  1914-01-01
    1  1915    3.43    2.93     b  1915-01-01
    2  1916    3.26    3.02     c  1916-01-01
    3  1919    2.82    3.37     d  1919-01-01
    4  1920    1.75    3.45     e  1920-01-01
    
    # plot the dataframe
    df.plot(x='year', figsize=(10, 5), grid=True)
    

    【讨论】:

      【解决方案2】:

      可以为 pandas 绘图函数的 y 参数提供多个列名。这些应在list 中指定,如下所示。

      df.plot(x="year", y=["action", "comedy"])
      

      完整示例:

      import matplotlib.pyplot as plt
      import pandas as pd
      
      df = pd.DataFrame({"year": [1914,1915,1916,1919,1920],
                         "action" : [2.6,3.4,3.25,2.8,1.75],
                         "comedy" : [2.5,2.9,3.0,3.3,3.4] })
      df.plot(x="year", y=["action", "comedy"])
      plt.show()
      

      【讨论】:

        【解决方案3】:

        Pandas.DataFrame.plot() 默认使用索引绘制X 轴,所有其他数字 列将用作Y 值。

        所以将year 列设置为索引就可以了:

        total_year.set_index('year').plot(figsize=(10,5), grid=True)
        

        【讨论】:

          猜你喜欢
          • 2020-10-10
          • 2020-07-28
          • 2020-08-27
          • 2014-10-22
          • 1970-01-01
          • 2022-01-22
          • 2018-09-26
          • 2019-05-26
          相关资源
          最近更新 更多