小编Ste*_*fan的帖子

更有效的方法来表示在熊猫数据框中将列子集居中并保留列名

我有一个大约有 370 列的数据框。我正在测试一系列假设,这些假设要求我使用模型的子集来拟合三次回归模型。我计划使用 statsmodels 对这些数据进行建模。

多项式回归过程的一部分涉及均值中心变量(从特定特征的每个案例中减去均值)。

我可以用 3 行代码做到这一点,但它似乎效率低下,因为我需要为六个假设复制这个过程。请记住,我需要从 statsmodel 输出中获取系数级别的数据,因此我需要保留列名。

这是数据的一瞥。这是我的假设检验之一所需的列子集。

      i  we  you  shehe  they  ipron
0  0.51   0    0   0.26  0.00   1.02
1  1.24   0    0   0.00  0.00   1.66
2  0.00   0    0   0.00  0.72   1.45
3  0.00   0    0   0.00  0.00   0.53
Run Code Online (Sandbox Code Playgroud)

这是表示居中并保留列名称的代码。

from sklearn import preprocessing
#create df of features for hypothesis, from full dataframe
h2 = df[['i', 'we', 'you', 'shehe', 'they', 'ipron']]

#center the variables
x_centered = preprocessing.scale(h2, with_mean='True', with_std='False')

#convert back into a …
Run Code Online (Sandbox Code Playgroud)

python machine-learning pandas scikit-learn statsmodels

4
推荐指数
1
解决办法
1万
查看次数

将pandas DataFrame列中括号之间的文本复制到另一列

我试图将pandas DataFrame列中括号中出现的文本复制到另一列.我遇到过这个解决方案来解析字符串:正则表达式在括号之间返回文本

我想将结果逐元素分配给新列中的同一行.但是,这并没有直接延续到熊猫系列.我似乎map/apply/lambda似乎是要走的路.我已经到达这段代码,但是语法错误无效.

dataSources.dataUnits = dataSources.dataDescription.map(str.find("(")+1:str.find(")"))
Run Code Online (Sandbox Code Playgroud)

显然,我还不够流利 - 非常感谢.

python string dataframe pandas

3
推荐指数
1
解决办法
4497
查看次数

如何按列拆分DataFrame

我有一个Pandas DataFrame它有11列,但我想将DataFrame从第1列而不是第0列拆分到第10列.我可以通过更复杂的方法实现它,而不是Pandas自己提供的方法.如何使用DataFrame支持的方法来完成Pandas

数据是595行乘11列,我想得到:

>>> import numpy as np
>>> import pandas as pd
>>> train_data = pd.DataFrame(my_data, columns=my_columns)
>>> train_data
       stockid           prich_m1        prich_m3         prich_m6  \
1    000002.SZ      1.55755700445  0.861009772647    5.42726384781   
2    000009.SZ  3.00223270244e-07    4.8010096027    4.46164511978       
..         ...                ...             ...              ...    
..         ...                ...             ...              ...          
594  603699.SH    0.0491892903353  0.934596516371  0.0196757161342   
595  603993.SH      0.83105321611  0.771692272102    2.02816558693   

                rsi            mkt_cap    held_by_ins        found_own  \
1    0.650879566982     153108876954.0  42.6353598479    14.9550575226   
2    0.462085308057      19492802690.5  25.8866394448    5.31468116104   
..         ... …
Run Code Online (Sandbox Code Playgroud)

python pandas

3
推荐指数
1
解决办法
3765
查看次数

使用Python进行线性回归(Pandas和Numpy)

我正在尝试使用python实现线性回归.

我做了以下步骤:

import pandas as p
import numpy as n
data = p.read_csv("...path\Housing.csv", usecols=[1]) # I want the first col
data1 = p.read_csv("...path\Housing.csv", usecols=[3]) # I want the 3rd col
x = data
y = data1
Run Code Online (Sandbox Code Playgroud)

然后我尝试获得系数,并使用以下内容:

regression_coeff = n.polyfit(x,y,1)
Run Code Online (Sandbox Code Playgroud)

然后我收到以下错误:

raise TypeError("expected 1D vector for x")
TypeError: expected 1D vector for x
Run Code Online (Sandbox Code Playgroud)

我不能让我的解决这个头,因为当我打印xy,我可以很清楚的看到,他们是一维向量.

有人可以帮忙吗?

数据集可以在这里找到:DataSet

原始代码是:

import pandas as p
import numpy as n

data = pd.read_csv('...\housing.csv', usecols = [1])
data1 = pd.read_csv('...\housing.csv', usecols …
Run Code Online (Sandbox Code Playgroud)

python csv numpy machine-learning pandas

3
推荐指数
1
解决办法
7167
查看次数

检查组中的值是否在Pandas中相等

我有类似下面的'DataFrame`:

>>> df=pd.DataFrame(index=['A','A','A','B','B','C','C','C'])
>>> df['Value1']=[1,1,1,2,1,4,4,4]
>>> df['Value2']=[1,2,3,4,5,6,7,8]
>>> df
   Value1  Value2
A       1       1
A       1       2
A       1       3
B       2       4
B       1       5
C       4       6
C       4       7
C       4       8
>>> 
Run Code Online (Sandbox Code Playgroud)

该索引DataFrame代表3个不同的组.我想检查组中的列值是否都相等.我目前的方法和所需的输出如下:

>>> result_list=[]
>>> for Col in df.columns:
...     result=df.groupby(level=0)[Col].apply(lambda x: len(set(x))==1)
...     result_list.append(result)
... 
>>> 
>>> final=pd.concat(result_list,1)
>>> final
  Value1 Value2
A   True  False
B  False  False
C   True  False
>>> 
Run Code Online (Sandbox Code Playgroud)

这是最好的方法吗?我想知道是否可以这样做而不必循环遍历我的列DataFrame.

另外是使用len(set(x)==1)最好的方法来确定组中的所有项目是否相等?

python pandas

3
推荐指数
1
解决办法
3960
查看次数

使用Seaborn条形图绘制宽格式的数据框

我正在尝试生成一个条形图DataFrame,其中包含所有观察值,如下所示:数据(行=年,列=对象,值=违反对象的年份)

使用默认熊猫时,我得到的图形类型正确plot

cluster_yearly_results_df.plot.bar()
Run Code Online (Sandbox Code Playgroud)

正确的条形图

但是,我想使用seaborn,并且在使用以下命令输入宽格式数据帧时遇到问题:

sns.barplot(data=cluster_yearly_results_df)
Run Code Online (Sandbox Code Playgroud)

我可以用seaborn做我想做的事吗?

python pandas seaborn

3
推荐指数
1
解决办法
1916
查看次数

Pandas从列表中创建数据框列

鉴于以下列表:

list=['a','b','c']
Run Code Online (Sandbox Code Playgroud)

我想创建一个数据框,其中列表是值列.我希望标题是"标题".

像这样:

header
a
b
c
Run Code Online (Sandbox Code Playgroud)

提前致谢!

python dataframe python-3.x pandas

3
推荐指数
1
解决办法
6064
查看次数

Pandas Dataframe - RemoteDataError - Python

我正试图从雅虎财经中提取数据.

这是我得到的错误:

File "banana.py", line 35, in <module>
    data = web.DataReader(ticker, "yahoo", datetime(2011,1,1), datetime(2015,12,31))
  File "C:\Users\ll\Anaconda2\lib\site-packages\pandas_datareader\data.py", line 94, in DataReader
    session=session).read()
  File "C:\Users\ll\Anaconda2\lib\site-packages\pandas_datareader\yahoo\daily.py", line 77, in read
    df = super(YahooDailyReader, self).read()
  File "C:\Users\ll\Anaconda2\lib\site-packages\pandas_datareader\base.py", line 173, in read
    df = self._read_one_data(self.url, params=self._get_params(self.symbols))
  File "C:\Users\ll\Anaconda2\lib\site-packages\pandas_datareader\base.py", line 80, in _read_one_data
    out = self._read_url_as_StringIO(url, params=params)
  File "C:\Users\ll\Anaconda2\lib\site-packages\pandas_datareader\base.py", line 91, in _read_url_as_StringIO
    response = self._get_response(url, params=params)
  File "C:\Users\ll\Anaconda2\lib\site-packages\pandas_datareader\base.py", line 117, in _get_response
    raise RemoteDataError('Unable to read URL: {0}'.format(url))
pandas_datareader._utils.RemoteDataError: Unable to read URL: http://ichart.finance.yahoo.com/table.csv
Run Code Online (Sandbox Code Playgroud)

当我从.csv文件而不是代码列表中读取时出现错误: …

python csv dataframe pandas

3
推荐指数
1
解决办法
7399
查看次数

如何在熊猫中制作非数值数据的条形图

假设我有这些数据:

>>> df = pd.DataFrame(data={"age": [11, 12, 11, 11, 13, 11, 12, 11],
                        "response": ["Yes", "No", "Yes", "Yes", "Yes", "No", "Yes", "Yes"]})
>>> df
    age response
0   11  Yes
1   12  No
2   11  Yes
3   11  Yes
4   13  Yes
5   11  No
6   12  Yes
7   11  Yes
Run Code Online (Sandbox Code Playgroud)

我想制作一个条形图,显示按年龄汇总的是或否答案.有可能吗?我曾尝试histkind=bar,但也能按年龄排序,而不是绘图年龄和响应分开.

它看起来像这样:

  ^
4 |   o
3 |   o
2 |   o
1 |   ox      ox      o
0 .----------------------->
      11      12      13  
Run Code Online (Sandbox Code Playgroud)

o"是" 在哪里,x …

python matplotlib pandas seaborn

2
推荐指数
2
解决办法
9795
查看次数

StratifiedKfold在异构DataFrame上

我有一个pandas DataFrame,它包含字符串和浮点数,需要拆分成平衡切片才能训练sklearn管道.

理想情况下,我会在DataFrame上使用StratifiedKFold来获取较小的数据块以进行交叉验证.但它抱怨我有无法解决的类型,如下所示:

import pandas as pd
from sklearn.cross_validation import StratifiedKFold

dataset = pd.DataFrame(
    [
        {'title': 'Dábale arroz a la zorra el abad', 'size':1.2, 'target': 1},
        {'title': 'Ana lleva al oso la avellana', 'size':1.0, 'target': 1},
        {'title': 'No te enrollé yornetón', 'size':1.4, 'target': 0},
        {'title': 'Acá sólo tito lo saca', 'size':1.4, 'target': 0},
    ])
skfs = StratifiedKFold(dataset, n_folds=2)

>>>  TypeError: unorderable types: str() > float()
Run Code Online (Sandbox Code Playgroud)

有一些方法可以获得折叠索引并对DataFrame进行切片,但我认为这并不能保证我的类会得到平衡.

拆分DataFrame的最佳方法是什么?

python machine-learning pandas scikit-learn cross-validation

2
推荐指数
2
解决办法
2019
查看次数