绘制 pandas 数据框的两列

12 浏览
0 Comments

绘制 pandas 数据框的两列

我有一个pandas的数据框,其中日期是索引,还有一些列:

我想要绘制一张折线图,有两条线(假设是'ISP.MI'和'Ctrv');在x轴上我需要使用'Date'。

Ticker       ISP.MI  Daily returns        Ctrv  Inv_Am  Giac_Media
Date                                                                 
2016-01-01  2.90117            NaN  100.000000     100       100.0   
2016-01-04  2.80159      -0.034927  196.507301     200       150.0   
2016-01-05  2.85608       0.019263  300.292610     300       200.0   
2016-01-06  2.77904      -0.027345  392.081255     400       250.0   
2016-01-07  2.73206      -0.017050  485.396411     500       300.0   
2016-01-08  2.72267      -0.003443  583.725246     600       350.0   

0
0 Comments

问题出现的原因是在使用plot函数时,指定了要绘制的x轴列名为'x',而y轴列名为['y_one','y_two']。然而,根据pandas的plot函数文档,y参数需要传入一个标量或者一个列名的列表。因此,传入列表['y_one','y_two']会导致报错。

解决方法是将y参数传入一个单独的列名,然后通过在DataFrame中选择相应的列来绘制。以下是修改后的代码:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
d = {'x': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
     'y_one': np.random.rand(10),
     'y_two': np.random.rand(10)}
df = pd.DataFrame(d)
# 选择要绘制的y轴列
df.plot('x', y='y_one')
df.plot('x', y='y_two')
plt.show()

通过分别调用plot函数,传入正确的y轴列名,可以成功绘制两个列的折线图。

0
0 Comments

问题出现的原因是在使用DataFrame.plot()方法时,想要为每列添加样式和颜色的线条,例如g-、ro等。然而,通过上述代码无法实现这一目标。解决该问题的方法有多种,可以参考stackoverflow上的回答。

当使用DataFrame.plot()方法创建的图表无法保存时,可以尝试使用plt.savefig("path/pic1.png")进行保存,但可能会保存一张空白图片。

如果在图表中无法看到多列线条/点,那么需要检查数据帧的dtypes,并将其从object类型转换为数值列。这个问题对我来说至少浪费了几个小时的时间。

0
0 Comments

问题的出现原因:这个问题出现的原因是因为在绘制pandas dataframe中的两列数据时,有些人可能不关心轴的刻度(scale),只是简单地将两列数据绘制到同一个图表中。而另一些人可能希望关注轴的刻度(scale),以便更好地理解数据之间的趋势和关系。

解决方法:根据不同的需求,可以采用两种不同的解决方法。

如果不关心轴的刻度(scale),可以使用以下代码:

plt.figure()
x = df['Date']
y1 = df['ISP.MI']
y2 = df['Ctrv']
plt.plot(x, y1)
plt.plot(x, y2)

这样就可以将两列数据绘制在同一个图表中,轴的刻度(scale)将会自动调整。

如果关心轴的刻度(scale),可以使用以下代码:

fig, ax1 = plt.subplots()
x = df['Date']
y1 = df['ISP.MI']
y2 = df['Ctrv']
ax2 = ax1.twinx()
ax1.plot(x, y1, 'g-')
ax2.plot(x, y2, 'b-')

这样就可以将两列数据绘制在同一个图表中,同时轴的刻度(scale)会根据数据的范围自动调整,使得两列数据的趋势和关系更加清晰可见。

通过以上的两种解决方法,我们可以根据自己的需求选择合适的方式绘制pandas dataframe中的两列数据,并根据需要关注或不关注轴的刻度(scale)。这样可以更好地展示数据的趋势和关系,帮助我们更好地理解和分析数据。

0