Python 熊猫按索引绘制数据帧,它是如何工作的?
鉴于数据:Python 熊猫按索引绘制数据帧,它是如何工作的?,python,python-2.7,pandas,matplotlib,dataframe,Python,Python 2.7,Pandas,Matplotlib,Dataframe,鉴于数据: Column1; Column2; Column3 1; 4; 6 2; 2; 6 3; 3; 8 4; 1; 1 5; 4; 2 通过以下代码,我得到以下图形: import pandas as pd import matplotlib.pyplot as plt df = pd.read_csv('test0.csv',delimiter='; ', engine='python') df.plot(0,0) plt.savefig('fig0.png') import pa
Column1; Column2; Column3
1; 4; 6
2; 2; 6
3; 3; 8
4; 1; 1
5; 4; 2
通过以下代码,我得到以下图形:
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('test0.csv',delimiter='; ', engine='python')
df.plot(0,0)
plt.savefig('fig0.png')
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('test0.csv',delimiter='; ', engine='python')
df.plot(0,1)
plt.savefig('fig1.png')
通过以下代码,我得到了以下图形:
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('test0.csv',delimiter='; ', engine='python')
df.plot(0,0)
plt.savefig('fig0.png')
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('test0.csv',delimiter='; ', engine='python')
df.plot(0,1)
plt.savefig('fig1.png')
df.plot(m,n)中的逻辑是什么?假设我想绘制
Column2 X Column3
什么是m
和n
(df.plot(2,3)
) 当您按顺序位置指定x
和y
时,您将在调用df.plot(x,y)
时到达:
这将x
从序数值(例如0)转换为列标签名称(例如'Column1'
)。
请注意,data.set\u index(x)
被调用。因此,如果x
等于0,则将第一列设置为索引。接下来,当y
类似地转换为列标签时,
第0列现在是'Column2'
。因此,df.plot(0,0)
plots Column2 vs Column1
因此,为了绘制第3列与第2列的对比,您可以使用df.plot(1,1)
,因为data.columns[1]
是'Column2'
,一旦设置为索引,data.columns[1]
就是'Column3'
在注释中,指定列的一种不太容易出错的方法是按标签名。 或者,如果确实要使用序数值,请将它们显式传递给
df.columns
:
df.plot(x=df.columns[x], y=df.columns[y])
由于
df.columns[x]
和df.columns[y]
都是列标签名称,它们的含义不受set_index
的影响,因此混淆较少。当您按顺序位置指定x
和y
时,调用df.plot(x,y)
:
这将x
从序数值(例如0)转换为列标签名称(例如'Column1'
)。
请注意,data.set\u index(x)
被调用。因此,如果x
等于0,则将第一列设置为索引。接下来,当y
类似地转换为列标签时,
第0列现在是'Column2'
。因此,df.plot(0,0)
plots Column2 vs Column1
因此,为了绘制第3列与第2列的对比,您可以使用df.plot(1,1)
,因为data.columns[1]
是'Column2'
,一旦设置为索引,data.columns[1]
就是'Column3'
在注释中,指定列的一种不太容易出错的方法是按标签名。 或者,如果确实要使用序数值,请将它们显式传递给
df.columns
:
df.plot(x=df.columns[x], y=df.columns[y])
由于
df.columns[x]
和df.columns[y]
是列标签名称,它们的含义不受set\u index
的影响,因此混淆较少。在查找y
之前,从数据框中删除用作x
的任何列。(或者,更严格地说,x
被设置为索引,这意味着它不再可用作列。)因此,如果您使用.plot(x=0,y=0)
,则x=0
意味着“使用第一个位置列,y=0
意味着“在删除x列后使用第一个位置列”
不用说,这可能会让人感到困惑,因为
y
位置的移动取决于它是在x
之前还是之后。因此,如果你做.plot(x=3,y=1)
,那么y实际上是列1,但是如果你做.plot(x=0,y=1)
,那么y实际上是列2(在列0被删除后它成为数字1)。在y
被查找之前,作为x
的任何列都会从数据框中删除。(或者,更严格地说,x
被设置为索引,这意味着它不再可用作列。)因此,如果您使用.plot(x=0,y=0)
,则x=0
意味着“使用第一个位置列,y=0
意味着“在删除x列后使用第一个位置列”
不用说,这可能会让人感到困惑,因为y
位置的移动取决于它是在x
之前还是之后。因此,如果你做.plot(x=3,y=1)
,那么y实际上是第1列,但是如果你做.plot(x=0,y=1)
,那么y实际上是第2列(在第0列被移除后它变成了第1列)。根据,你可以像这样定义m和n(在文档中的x和y):
df.plot(df.columns[1],df.columns[2])
- “m”应该是->
,即位置1的列名df.columns[1]
- “n”应该是->
,即位置2的列名df.columns[2]
df.plot(1,1)
使用position的逻辑是:当我们将1放入横轴时,该列将从纵轴的选项中删除,因此只有两个选项可用(具有新索引)。这就是为什么df.plot(0,0)
实际上将第一列和下一列设置为数据,而df.plot(1,1)
使用第二列和最后一列。我没有在文档中找到它,而是在测试中发现的
我认为这个想法是:在x轴和y轴上绘制相同的列没有意义,因此给出的第一列对于另一个轴不可用。我希望它能有所帮助!=)
PS:它将以奇怪的缩放和位置进行打印,但是如果您缩小并在打印中移动,您将确认值与每列的数据匹配,根据,您可以定义m和n(文档中的x和y),如下所示:
df.plot(df.columns[1],df.columns[2])
- “m”应该是->
,即位置1的列名df.columns[1]
- “n”应该是->
,即位置2的列名df.columns[2]
df.plot(1,1)
使用position的逻辑是:当我们将1放入横轴时,该列将从纵轴的选项中删除,因此只有两个选项可用(具有新索引)。这就是为什么df.plo