Python 熊猫和线性回归:单个x的多个y值

Python 熊猫和线性回归:单个x的多个y值,python,pandas,scikit-learn,Python,Pandas,Scikit Learn,我有一个csv,包含一段时间内每晚的租赁单价。如果该单元是租来的,则价格在当天列出。如果未出租,价格显示为N/A。数据结构如下: bedrooms day1 day2 day3... day(n) 2 75 N/A 70 50 2 60 60 60 60 4 100 110 N/A N/A 3 75 80 80

我有一个csv,包含一段时间内每晚的租赁单价。如果该单元是租来的,则价格在当天列出。如果未出租,价格显示为N/A。数据结构如下:

bedrooms  day1   day2   day3...   day(n)
2          75    N/A     70       50
2          60    60      60       60
4          100   110     N/A      N/A
3          75    80      80       N/A
from StringIO import StringIO
import pandas

datafile = StringIO("""\
bedrooms  day1   day2   day3     day(n)
2          75    N/A     70       50
2          60    60      60       60
4          100   110     N/A      N/A
3          75    80      80       N/A
""")

df = pandas.read_table(datafile, sep='\s+', index_col='bedrooms')
df.columns.names = ['days rented']
prices = df.stack()
prices.name = 'dollars'
prices.reset_index()
……等等

我正在把这个csv读成熊猫。我希望能够使用scikit的线性回归来预测给定卧室数量的价格。你是这样做的:

from sklearn.linear_model import LinearRegression
model = LinearRegression()
# X is numpy array or sparse matrix of shape [n_samples,n_features]
# y is numpy array of shape [n_samples, n_targets]
model.fit(X, y)
如何使用pandas以正确的格式获取数据

编辑以澄清:

正确的格式将每个价格与卧室关联,如下所示:

bedrooms  price
2          75    
2          70       
2          50
2          60 
2          60 
2          60 
2          60 
4          100
4          110
3          80
3          80

您可以向
卧室
列添加索引并堆叠数据帧

为了确保每样东西都有一个名字,整个事情看起来是这样的:

bedrooms  day1   day2   day3...   day(n)
2          75    N/A     70       50
2          60    60      60       60
4          100   110     N/A      N/A
3          75    80      80       N/A
from StringIO import StringIO
import pandas

datafile = StringIO("""\
bedrooms  day1   day2   day3     day(n)
2          75    N/A     70       50
2          60    60      60       60
4          100   110     N/A      N/A
3          75    80      80       N/A
""")

df = pandas.read_table(datafile, sep='\s+', index_col='bedrooms')
df.columns.names = ['days rented']
prices = df.stack()
prices.name = 'dollars'
prices.reset_index()
打印出:

    bedrooms days rented  dollars
0          2        day1       75
1          2        day3       70
2          2      day(n)       50
3          2        day1       60
4          2        day2       60
5          2        day3       60
6          2      day(n)       60
7          4        day1      100
8          4        day2      110
9          3        day1       75
10         3        day2       80
11         3        day3       80

DataFrame
中的每一列都是
Series
Series
对象1)与
array
API基本兼容(因此它们应该自己工作),2)可以转换为带有
numpy.array(df['column\u name'])
Ok的数组。然后我有n个定价数据数组(仍然需要清理)。然后呢?洗干净了吗?这是什么意思?提供简单有效的测试用例示例。我没有任何测试用例,但如果在拟合数据时包含值“N/A”,则会出现错误。数据帧有一个
dropna
methodAh,df.stack()似乎是缺少的部分。谢谢!