【发布时间】:2013-10-23 03:26:52
【问题描述】:
我在 pandas 中有一个用于生成散点图的数据框,并希望为该图添加一条回归线。现在我正在尝试用 polyfit 做到这一点。
这是我的代码:
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt
from numpy import *
table1 = pd.DataFrame.from_csv('upregulated_genes.txt', sep='\t', header=0, index_col=0)
table2 = pd.DataFrame.from_csv('misson_genes.txt', sep='\t', header=0, index_col=0)
table1 = table1.join(table2, how='outer')
table1 = table1.dropna(how='any')
table1 = table1.replace('#DIV/0!', 0)
# scatterplot
plt.scatter(table1['log2 fold change misson'], table1['log2 fold change'])
plt.ylabel('log2 expression fold change')
plt.xlabel('log2 expression fold change Misson et al. 2005')
plt.title('Root Early Upregulated Genes')
plt.axis([0,12,-5,12])
# this is the part I'm unsure about
regres = polyfit(table1['log2 fold change misson'], table1['log2 fold change'], 1)
plt.show()
但我收到以下错误:
TypeError: cannot concatenate 'str' and 'float' objects
有人知道我在哪里出错了吗?我也不确定如何将回归线添加到我的情节中。我的代码中的任何其他通用 cmets 也将不胜感激,我仍然是初学者。
【问题讨论】:
-
你在哪一行得到错误?
-
@usethedeathstar
regres = polyfit(table1['log2 fold change misson'], table1['log2 fold change'], 1) -
确定表中没有 NaN 值?因为 pylab.scatter 只是不绘制 x 或 y 为 NaN 的 x,y 点(这意味着它也不会给出错误),但也许 polyfit 不知道? (只是猜测问题可能出在哪里 - 非数字值如何存储在您的 csv 文件中?)
-
不,没有 NaN 值。唯一的非数字值是“#DIV/0!”,我将其删除
-
table1['log2 fold change misson'] 和 table1['log2 fold change'] 的类型是什么? (据我所知,它们应该是 numpy.array,float 作为 dtype(并且两者都应该具有相同的形状))
标签: python numpy matplotlib pandas regression