【问题标题】:Plotting from panda frame从熊猫框架绘图
【发布时间】:2019-02-04 06:39:00
【问题描述】:

这似乎是一件非常简单的事情,但我做不到。我有像 http://prntscr.com/ko8lyd 这样的熊猫框架,我现在想在 X 轴上绘制一列,在 Y 轴上绘制另一列。这是我尝试的方法

import matplotlib.pyplot as plt
x = ATR_7
y = Vysledek
plt.scatter(x,y)
plt.show()

这是我得到的错误

<ipython-input-116-5ead5868ec87> in <module>()
      1 import matplotlib.pyplot as plt
----> 2 x = ATR_7
  3 y = Vysledek
  4 plt.scatter(x,y)
  5 plt.show()

我哪里错了?

【问题讨论】:

标签: python pandas matplotlib


【解决方案1】:

你只需要:

df.plot.scatter('ATR_7','Vysledek')

其中 df 是数据框的名称。不需要使用 matplotlib。

【讨论】:

    【解决方案2】:

    您正在尝试使用未定义的变量。 ATR_7 是您的数据框中的列的名称,它不为世界其他地方所知。

    尝试类似:

    df.plot.scatter(x='ATR_7', y='Vysledek')
    

    假设您的数据框名称是 df

    【讨论】:

      【解决方案3】:

      如果你想使用 matplotlib,那么你需要将你的 x 和 y 值设为一个列表,然后传递给plt.scatter

      import pandas as pd
      import matplotlib.pyplot as plt
      from matplotlib import style
      style.use('ggplot')
      %matplotlib inline
      
      x = list(df['ATR_7']) # set x axis by creating a list
      y = list(df['Vysledek']) # set y axis by creating a list
      plt.scatter(x,y)
      

      【讨论】:

      • 好吧,这看起来很有希望,但它对我不起作用。我一定很笨,但我仍然收到未定义名称的错误。不知道怎么把代码放在这里,不过这里还是挺清楚的prntscr.com/ko96jl
      • @NirvikalpaSamadhi 看起来您连接数据帧的单元格在 103 处运行,而绘图在 11 处运行。只需按顺序重新运行单元格,它应该可以工作。我猜内核被重置并且不再定义结果变量
      【解决方案4】:

      您的代码中似乎存在两个问题。首先,列的名称不在引号中,因此 python 无法知道这些是字符串(列名是字符串)。其次,使用 pandas 绘制变量的最简单方法是使用 pandas 函数。您正在尝试使用 matplotlib 绘制散点图(将数组作为输入,而不仅仅是列名)。

      首先,让我们加载模块并创建数据

      import pandas as pd
      import matplotlib.pyplot as plt
      %matplotlib inline
      
      d = {'ATR_7' : pd.Series([1., 2., 3.], index=['a', 'b', 'c']), 
           'Vysledek' : pd.Series([1., 2., 3., 4.], index=['a', 'b', 'c', 'd'])}
      
      df = pd.DataFrame(d)
      

      然后,您可以像在

      中那样使用 pandas 绘图
      x = 'ATR_7'
      y = 'Vysledek'
      df.plot.scatter(x,y)
      

      或普通的 matplotlib 绘图

      x = df['ATR_7']
      y = df['Vysledek']    
      plt.scatter(x,y)
      

      【讨论】:

        【解决方案5】:

        Scatter 不知道要使用哪些数据。您需要向其提供数据。

        x = "ATR_7"
        y = "Vysledek"
        plt.scatter(x,y, data=df)
        

        假设df 是您的数据框并且具有名为"ATR_7""Vysledek" 的列。

        【讨论】:

          猜你喜欢
          • 2018-04-06
          • 2013-08-16
          • 1970-01-01
          • 1970-01-01
          • 2021-09-26
          • 1970-01-01
          • 2018-03-19
          • 2013-08-21
          相关资源
          最近更新 更多