我的初始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)
我怀疑这是一种有效的方式,所以我正在寻找一种好的"熊猫"方法来实现这一目标.
数据: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)
为什么会发生以及如何解决?
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后端,结果是一样的.如何正确改变颜色?
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) 数据:
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) 我正在尝试运行此代码:(功劳归于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)可以清楚地了解这一点,因为该模型适用于整个未修改的数据集.
如何解决这个问题?
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度?
我正在绘制一条线并循环更新它。当我在执行过程中的某个时刻平移绘图,然后在交互式 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) 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没有处理此类列表理解或有此定义类型的另一种方式?
我正在使用以下课程:
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) 我有一些 DICOM 图像。我想使用 重新调整它们IntensityWindowingImageFilter,但首先,我需要知道最大和最小强度的初始值。
现在,我正在构建 WPF UI,我想要一些滑块来允许用户为此操作交互输入参数。但是,为了获得最佳的用户体验,我需要限制滑块的比例以具有最大和最小图像强度的最大值和最小值。在 ITK 中,我可以使用MinimumMaximumImageCalculator,但我似乎无法在 SimpleITK 中找到它。
当然,我可以简单地使用Image.GetBufferAsXXX()并简单地迭代每个像素来找到这些值,但我几乎可以肯定这不是正确的方法。
python ×10
matplotlib ×4
pandas ×4
statsmodels ×2
c# ×1
itk ×1
mypy ×1
plotly ×1
python-3.x ×1
r ×1
scikit-learn ×1
simpleitk ×1
type-hinting ×1