小编alk*_*mid的帖子

连接pandas中相同索引的行值

我的初始DataFrame如下所示:

   A    B  quantity
0  1  foo         1
1  1  baz         2
2  1  bar         2
3  1  faz         1
4  2  foo         2
5  2  bar         1
6  3  foo         3
Run Code Online (Sandbox Code Playgroud)

我需要用'A'对它进行分组,然后列出'B'乘以'quantity':

   A                               B
0  1  [foo, baz, baz, bar, bar, faz]
1  2                 [foo, foo, bar]
2  3                 [foo, foo, foo]
Run Code Online (Sandbox Code Playgroud)

目前我正在使用groupby()然后apply():

def itemsToList(tdf, column):

    collist = []
    for row in tdf[column].iteritems():
        collist = collist + tdf['quantity'][row[0]]*[row[1]]

    return pd.Series({column: collist})

gb = df.groupby('A').apply(itemsToList, 'B')
Run Code Online (Sandbox Code Playgroud)

我怀疑这是一种有效的方式,所以我正在寻找一种好的"熊猫"方法来实现这一目标.

python pandas

7
推荐指数
1
解决办法
4984
查看次数

pandas statsmodels中的多元线性回归:ValueError

数据:https://courses.edx.org/c4x/MITx/15.071x_2/asset/NBA_train.csv

我知道如何使用以下方法将这些数据拟合到多元线性回归模型statsmodels.formula.api:

import pandas as pd
NBA = pd.read_csv("NBA_train.csv")
import statsmodels.formula.api as smf
model = smf.ols(formula="W ~ PTS + oppPTS", data=NBA).fit()
model.summary()
Run Code Online (Sandbox Code Playgroud)

但是,我发现这个类似R的公式表示法很尴尬,我想使用通常的pandas语法:

import pandas as pd
NBA = pd.read_csv("NBA_train.csv")    
import statsmodels.api as sm
X = NBA['W']
y = NBA[['PTS', 'oppPTS']]
X = sm.add_constant(X)
model11 = sm.OLS(y, X).fit()
model11.summary()
Run Code Online (Sandbox Code Playgroud)

使用第二种方法,我收到以下错误:

ValueError: shapes (835,2) and (835,2) not aligned: 2 (dim 1) != 835 (dim 0)
Run Code Online (Sandbox Code Playgroud)

为什么会发生以及如何解决?

python pandas

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

如何使用matplotlib的set_cmap()?

import numpy as np
import matplotlib.pyplot as plt

x=np.linspace(-np.pi,np.pi,101)
y=np.sin(x)+np.sin(3*x)/3
y1=np.sin(x)+np.sin(2*x)/3
y2=np.sin(x)+np.sin(3*x)/2

plt.set_cmap('hot')

plt.plot(x,y)
plt.plot(x,y1)
plt.plot(x,y2)
plt.show()
Run Code Online (Sandbox Code Playgroud)

我想在我的绘图中尝试不同plt.set_cmap('hot')的色彩映射,但命令不起作用,即颜色与标准调色板中的颜色相同(http://i.stack.imgur.com/FjXoO.png)

我在Debian Linux下使用WXAgg后端,在Enthought的Canopy中使用matplotlib.我尝试了Qt4Agg后端,结果是一样的.如何正确改变颜色?

python matplotlib

5
推荐指数
1
解决办法
3587
查看次数

在 plotly 中,如何创建链接的 X 轴?

import matplotlib.pyplot as plt
import numpy as np
import plotly.plotly as py
from plotly.graph_objs import *

py.sign_in('uname', 'pass')


trace1 = Scatter(
    x=[1,2,3,4,5,6,7,8],
    y=[24,25,30,21,33,31,30,29],
    mode='lines',
    xaxis='x1',
    )

layout = Layout(
    title="My first plot",
    yaxis=YAxis(
        title = "y1"
        ),
    xaxis=XAxis(
        title= 'x1',
        anchor = 'x2'
        ),
    xaxis2=XAxis(
        title= 'x2',
        side = 'top',
        overlaying = 'y'
        ),
    )

data = [trace1]

fig = Figure(data=data, layout=layout)

plot_url = py.plot(fig)
Run Code Online (Sandbox Code Playgroud)

我正在尝试在图的顶部创建第二个 X 轴(我们称之为 x2)。我希望它使用公式 x2=x1*0.3 链接到 x1 值。在 matplotlib 中,我会简单地定义另一个轴并重新定义它的范围,即使我放大/缩小比例也会保持不变:

ax2 = ax1.twiny()
start, end …
Run Code Online (Sandbox Code Playgroud)

python plotly

5
推荐指数
1
解决办法
4447
查看次数

R在大熊猫的线性回归中的相关()和因子变量

数据:

a,b,c,d
1,5,9,red
2,6,10,blue
3,7,11,green
4,8,12,red
3,4,3,orange
3,4,3,blue
3,4,3,red
Run Code Online (Sandbox Code Playgroud)

在R中,如果我想构建一个考虑分类数据的线性回归模型(我认为它们在R中称为因子变量),我可以简单地做:

df$d = relevel(df$d, 'green')
Run Code Online (Sandbox Code Playgroud)

在此之后,为了构建模型,R将为每种颜色添加列,例如:

dblue
0
1
0
0
0
1
0
Run Code Online (Sandbox Code Playgroud)

绿色没有列,因为如果所有其他颜色值都为0,则表示绿色= 1(这是我们的参考级别).现在,创建一个回归模型:

mod = lm(a ~ b + c + d, data=df)
summary(mod)

Call:
lm(formula = a ~ b + c + d, data = rel)

Residuals:
         1          2          3          4          5          6          7 
 4.708e-16 -7.061e-16  2.219e-31  2.354e-16 -1.233e-31  7.061e-16 -7.061e-16 

Coefficients:
              Estimate Std. Error    t value Pr(>|t|)    
(Intercept) -1.600e+00  3.622e-15 -4.418e+14 1.44e-15 ***
b            1.600e+00  9.403e-16 …
Run Code Online (Sandbox Code Playgroud)

python r pandas statsmodels

5
推荐指数
1
解决办法
1666
查看次数

将数据分成测试和训练,在熊猫中制作逻辑回归模型

我正在尝试运行此代码:(功劳归于Greg)

import pandas as pd
from sklearn.cross_validation import train_test_split
import statsmodels.api as sm

quality = pd.read_csv("https://courses.edx.org/c4x/MITx/15.071x/asset/quality.csv")
train, test = train_test_split(quality, train_size=0.75, random_state=1)

qualityTrain = pd.DataFrame(train, columns=quality.columns)
qualityTest = pd.DataFrame(test, columns=quality.columns)

qualityTrain['PoorCare'] = qualityTrain['PoorCare'].astype(int)

cols = ['OfficeVisits', 'Narcotics']
x = qualityTrain[cols]
x = sm.add_constant(x)
y = qualityTrain['PoorCare']

model = sm.Logit(y, x).fit()
model.summary()
Run Code Online (Sandbox Code Playgroud)

但是我得到了:

AttributeError: 'int' object has no attribute 'exp'
Run Code Online (Sandbox Code Playgroud)

在倒数第二行.通过对数据进行采样(train_test_split)可以清楚地了解这一点,因为该模型适用于整个未修改的数据集.

如何解决这个问题?

python pandas scikit-learn statsmodels logistic-regression

5
推荐指数
1
解决办法
3524
查看次数

在matplotlib中的极坐标图上移动径向刻度标签

来自matplotlib的例子:

import numpy as np
import seaborn as sbs
import matplotlib.pyplot as plt

r = np.arange(0, 3.0, 0.01)
theta = 2 * np.pi * r

ax = plt.subplot(111, polar=True)
ax.plot(theta, r, color='r', linewidth=3)
ax.set_rmax(2.0)
ax.grid(True)

ax.set_title("A line plot on a polar axis", va='bottom')
plt.show()
Run Code Online (Sandbox Code Playgroud)

极地情节

如何将径向刻度标签(0.5,1.0,1.5,2.0)移动到不同的角度,比如120度?

python matplotlib polar-coordinates

5
推荐指数
1
解决办法
8982
查看次数

“重置原始视图”不显示整个情节

我正在绘制一条线并循环更新它。当我在执行过程中的某个时刻平移绘图,然后在交互式 matplotlib 窗口中单击“重置原始视图”时,从我开始缩放/平移它的那一刻起,我就会回到绘图状态。有没有办法看到情节的全部范围?更好的是,有没有办法告诉 matplotlib 在此操作后继续更新视图?

python 3.4.3, matplotlib 1.4.3

import matplotlib
matplotlib.use('Qt4Agg')
import matplotlib.pyplot as plt
import numpy as np

fig, ax1 = plt.subplots()
ax2 = ax1.twinx()
values_v = []
values_i = []
ln1, = ax1.plot(values_i, values_v, color='green')
plt.ion()
plt.show()

for i in range(40):
    scopevals = [i, i+2+np.random.rand()]

    values_v.append(scopevals[0])
    values_i.append(scopevals[1])

    ln1.set_data([values_i, values_v])

    ax1.relim()
    ax1.autoscale_view(True,True,True)

    plt.pause(1)
Run Code Online (Sandbox Code Playgroud)

python matplotlib

5
推荐指数
1
解决办法
1238
查看次数

mypy 可以处理列表推导式吗?

from typing import Tuple
def test_1(inp1: Tuple[int, int, int]) -> None:
    pass

def test_2(inp2: Tuple[int, int, int]) -> None:
    test_tuple = tuple(e for e in inp2)
    reveal_type(test_tuple)
    test_1(test_tuple)
Run Code Online (Sandbox Code Playgroud)

mypy上面的代码上运行时,我得到:

error: Argument 1 to "test_1" has incompatible type "Tuple[int, ...]"; expected "Tuple[int, int, int]"
Run Code Online (Sandbox Code Playgroud)

test_tuple不能保证有3个int要素是什么?难道mypy没有处理此类列表理解或有此定义类型的另一种方式?

python type-hinting python-3.x mypy

5
推荐指数
1
解决办法
2179
查看次数

图例对matplotlib中的水平网格透明

我正在使用以下课程:

import numpy as np
import matplotlib
matplotlib.use('Qt4Agg')
import matplotlib.pyplot as plt
import matplotlib.ticker as plticker

class matplotLIV():

    def __init__(self, BaseFilename, temperatures, length=None, width=None, area=None, title = '', ylim=None):
        self.BaseFilename = BaseFilename
        self.temperatures = temperatures
        if length and width:
            self.length = length
            self.width = width
            self.area = length*width*1e-5
        else:
            self.area = area
        self.title = title
        self.ylim = ylim

        filenames = [("%s_%sK.txt" % (self.BaseFilename, str(temp)), temp) for temp in self.temperatures]
        self.rawData = [(np.loadtxt(fname), temp) for fname, temp in filenames]
        self.colors = …
Run Code Online (Sandbox Code Playgroud)

python matplotlib

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

SimpleITK - 如何在图像中获得最大和最小强度?

我有一些 DICOM 图像。我想使用 重新调整它们IntensityWindowingImageFilter,但首先,我需要知道最大和最小强度的初始值。

现在,我正在构建 WPF UI,我想要一些滑块来允许用户为此操作交互输入参数。但是,为了获得最佳的用户体验,我需要限制滑块的比例以具有最大和最小图像强度的最大值和最小值。在 ITK 中,我可以使用MinimumMaximumImageCalculator,但我似乎无法在 SimpleITK 中找到它。

当然,我可以简单地使用Image.GetBufferAsXXX()并简单地迭代每个像素来找到这些值,但我几乎可以肯定这不是正确的方法。

c# itk simpleitk

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