小编Cle*_*leb的帖子

将pandas dataframe可视化为热图时键入错误

我正在尝试将pandas数据帧可视化为热图,并且我尝试使用所有绘图函数时出现了奇怪的错误(我尝试使用DataFrame对象和DataFrame.values数组,并且没有任何更改).我不明白它可能是什么原因.这是数据帧:

       1     2     3     4     5     6     7     8     9    10    11    12  \
1      0  1163   986  1105  1315  1472   844   560  1033   867   610   703   
2   1163     0  1774   803  1091   899   704   806   891   648  1082  1199   
3    986  1774     0   679   880   798  1268   931   560  1128   774   481   
4   1105   803   679     0   742   654   887   765  1113  1079   605   928   
5   1315  1091   880   742     0   924   580   658  1073  1008   719 …
Run Code Online (Sandbox Code Playgroud)

python matplotlib pandas seaborn

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

Pandas Dataframe:用行平均值替换NaN

我正在努力学习大熊猫,但我对以下内容感到困惑.我想替换NaNs是一个具有行平均值的数据帧.因此,类似的东西df.fillna(df.mean(axis=1))应该工作,但由于某种原因,它失败了.我错过了什么,我做错了什么?是因为它没有实施; 看到这里的链接

import pandas as pd
import numpy as np
?
pd.__version__
Out[44]:
'0.15.2'

In [45]:
df = pd.DataFrame()
df['c1'] = [1, 2, 3]
df['c2'] = [4, 5, 6]
df['c3'] = [7, np.nan, 9]
df

Out[45]:
    c1  c2  c3
0   1   4   7
1   2   5   NaN
2   3   6   9

In [46]:  
df.fillna(df.mean(axis=1)) 

Out[46]:
    c1  c2  c3
0   1   4   7
1   2   5   NaN
2   3   6   9
Run Code Online (Sandbox Code Playgroud)

但是这样的事情看起来很好

df.fillna(df.mean(axis=0)) 

Out[47]:
    c1  c2  c3
0 …
Run Code Online (Sandbox Code Playgroud)

python missing-data dataframe pandas

14
推荐指数
3
解决办法
8499
查看次数

如何在python中计算列表的方差?

如果我有这样的列表:

results=[-14.82381293, -0.29423447, -13.56067979, -1.6288903, -0.31632439,
          0.53459687, -1.34069996, -1.61042692, -4.03220519, -0.24332097]
Run Code Online (Sandbox Code Playgroud)

我想在Python中计算这个列表的方差,这是与平均值的平方差的平均值.

我怎么能这样做?访问列表中的元素进行计算让我感到困惑,因为我得到了方差.

python statistics list variance

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

Python和lmfit:如何使用共享参数拟合多个数据集?

我想使用lmfit模块将函数拟合到可变数量的数据集,包括一些共享和一些单独的参数.

以下是生成高斯数据并分别拟合每个数据集的示例:

import numpy as np
import matplotlib.pyplot as plt
from lmfit import minimize, Parameters, report_fit

def func_gauss(params, x, data=[]):
    A = params['A'].value
    mu = params['mu'].value
    sigma = params['sigma'].value
    model = A*np.exp(-(x-mu)**2/(2.*sigma**2))

    if data == []:
        return model
    return data-model

x  = np.linspace( -1, 2, 100 )
data = []
for i in np.arange(5):
    params = Parameters()
    params.add( 'A'    , value=np.random.rand() )
    params.add( 'mu'   , value=np.random.rand()+0.1 )
    params.add( 'sigma', value=0.2+np.random.rand()*0.1 )
    data.append(func_gauss(params,x))

plt.figure()
for y in data:
    fit_params …
Run Code Online (Sandbox Code Playgroud)

python parameters curve-fitting lmfit

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

Scipy.sparse.csr_matrix:如何获得十大价值和指数?

我有一个很大的csr_matrix,我对前十个值及其每一行的指数感兴趣.但我没有找到一种操纵矩阵的好方法.

这是我目前的解决方案,主要思想是逐行处理它们:

row = csr_matrix.getrow(row_number).toarray()[0].ravel()
top_ten_indicies = row.argsort()[-10:]
top_ten_values = row[row.argsort()[-10:]]
Run Code Online (Sandbox Code Playgroud)

通过这样做,csr_matrix没有充分利用其优点.它更像是一个强力解决方案.

python scipy sparse-matrix

13
推荐指数
3
解决办法
9874
查看次数

为列表中的每个唯一值分配一个数字

我有一个字符串列表.我想为每个字符串分配一个唯一的编号(确切的数字并不重要),并按顺序使用这些编号创建一个相同长度的列表.以下是我最好的尝试,但我不满意有两个原因:

  1. 它假设相同的值彼此相邻

  2. 我必须用a开始列表0,否则输出将是不正确的

我的代码:

names = ['ll', 'll', 'll', 'hl', 'hl', 'hl', 'LL', 'LL', 'LL', 'HL', 'HL', 'HL']
numbers = [0]
num = 0
for item in range(len(names)):
    if item == len(names) - 1:
      break
    elif names[item] == names[item+1]:
        numbers.append(num)
    else:
        num = num + 1
        numbers.append(num)
print(numbers)
Run Code Online (Sandbox Code Playgroud)

我想使代码更通用,因此它将使用未知列表.有任何想法吗?

python list

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

SciPy curve_fit运行时错误,停止迭代

我正在scipy.optimize.curve_fit()以迭代的方式使用.

我的问题是,当它无法适应参数时,整个程序(以及迭代)停止,这就是它给出的错误:

RuntimeError: Optimal parameters not found: Number of calls to function has reached maxfev = 800.

我明白为什么它无法适应.我的问题是,有什么办法可以在Python 3.2.2中编写程序来忽略这种情况而只是继续吗?

python curve-fitting scipy

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

Python Pandas:DataFrame过滤负值

我想知道如何删除列中包含负值的所有索引.我正在使用熊猫DataFrames.

文档Pandas DataFrame

格式:

Myid - valuecol1 - valuecol2 - valuecol3 -... valuecol30

所以我DataFrame被称为data

我知道如何为1列做到这一点:

data2 = data.index[data['valuecol1'] > 0]
data3 = data.ix[data3]
Run Code Online (Sandbox Code Playgroud)

所以我只得到ids在哪里valuecol1 > 0,我怎么能做某种and陈述?

valuecol1 && valuecol2 && valuecol3 && ... && valuecol30 > 0

python python-2.7 pandas

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

如何只替换numpy数组中大于某个值的前n个元素?

我有这样一个数组myA:

array([ 7,  4,  5,  8,  3, 10])
Run Code Online (Sandbox Code Playgroud)

如果我想将大于值的所有值替换val为0,我可以简单地执行:

myA[myA > val] = 0
Run Code Online (Sandbox Code Playgroud)

这给了我想要的输出(for val = 5):

 array([0, 4, 5, 0, 3, 0])
Run Code Online (Sandbox Code Playgroud)

但是,我的目标是替换不仅仅是n这个数组中大于值的第一个元素val.

所以,如果n = 2我想要的结果看起来像这样(10是第三个元素,因此不应该被替换):

array([ 0,  4,  5,  0,  3, 10])
Run Code Online (Sandbox Code Playgroud)

一个简单的实现是:

import numpy as np

myA = np.array([7, 4, 5, 8, 3, 10])
n = 2
val = 5

# track the number of replacements
repl = 0

for ind, vali in …
Run Code Online (Sandbox Code Playgroud)

python arrays performance numpy

12
推荐指数
1
解决办法
1735
查看次数

如何将共享的x-label和y-label添加到用pandas的情节创建的图中?

可以使用pandas从数据框中轻松创建子图:

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({'A': [0.3, 0.2, 0.5, 0.2], 'B': [0.1, 0.0, 0.3, 0.1], 'C': [0.2, 0.5, 0.0, 0.7], 'D': [0.6, 0.3, 0.4, 0.6]}, index=list('abcd'))

ax = df.plot(kind="bar", subplots=True, layout=(2, 2), sharey=True, sharex=True, rot=0, fontsize=20)
Run Code Online (Sandbox Code Playgroud)

现在如何将x和y标签添加到结果图中?这里解释了一个单一的情节.因此,如果我想为特定的子图添加标签,我可以这样做:

ax[1][0].set_xlabel('my_general_xlabel')
ax[0][0].set_ylabel('my_general_ylabel')
plt.show()
Run Code Online (Sandbox Code Playgroud)

这给了:

在此输入图像描述

如何添加标签以使它们居中并且不仅仅引用一行/列?

python matplotlib pandas

12
推荐指数
4
解决办法
6110
查看次数