小编dra*_*ake的帖子

从bash终端运行文件时,不显示Matplotlib图

当我从ipython shell或ipython笔记本运行文件时,通常会显示绘图,但是当我从bash终端运行文件时它们不显示 - 从bash终端运行时其他一切正常.

示例python脚本(trial.py):

import matplotlib.pyplot as plt

print 'please, show my graph'

plt.plot([1,2,3], [1,2,3])

plt.show()
Run Code Online (Sandbox Code Playgroud)

这就是我得到的(情节没有显示):

[~/Desktop]$ python trial.py
please, show my graph
[~/Desktop]$
Run Code Online (Sandbox Code Playgroud)

如果我做

import matplotlib
matplotlib.use('TkAgg')
Run Code Online (Sandbox Code Playgroud)

在导入pyplot之前,当我从终端运行它时,会立即打开和关闭一个窗口.

我尝试过不同的方法导入模块但没有成功:

import matplotlib.pyplot as plt
import matplotlib.pylab as plt
from matplotlib import pyplot as plt
from matplotlib import pylab as plt
Run Code Online (Sandbox Code Playgroud)

我的文件中有plt.show()函数.

你知道我怎么解决它吗?

有关版本和安装的一些信息:

我在Mac OSX 10.11.3上.

In [61]: print matplotlib.__file__
/usr/local/lib/python2.7/site-packages/matplotlib/__init__.pyc

In [62]: print matplotlib.__version__
1.4.2

In [64]: print sys.version
2.7.9 (default, Apr  7 2015, 07:58:25)
[GCC 4.2.1 …
Run Code Online (Sandbox Code Playgroud)

python bash terminal matplotlib

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

python中二进制单热(一K)编码的问题

二进制单热(也称为一个K)编码在于为分类变量的每个不同值创建一个二进制列.例如,如果有一个颜色列(分类变量)采用值"红色","蓝色","黄色"和"未知",则二进制单热编码用二进制列替换颜色列'color =红色','颜色=蓝色'和'颜色=黄色'.我从pandas数据框架中的数据开始,我想使用这些数据来训练带有scikit-learn的模型.我知道有两种方法可以进行二进制单热编码,但这些方法对我来说都不令人满意.

  1. Pandas和get_dummies在数据框的分类列中.只要原始数据框包含所有内容,此方法看起来就很好数据可用.也就是说,在训练,验证和测试集中分割数据之前,您需要执行单热编码.但是,如果数据已经分成不同的集合,则此方法不能很好地工作.为什么?因为其中一个数据集(例如,测试集)可以包含给定变量的较少值.例如,可能会发生这样的情况:虽然训练集包含变量颜色的红色,蓝色,黄色和未知值,但测试集仅包含红色和蓝色.因此,测试集的最终列数将少于训练集.(我不知道新列是如何排序的,如果甚至具有相同的列,则每个列的顺序可能不同).

  2. Sklearn和DictVectorizer这解决了上一个问题,因为我们可以确保将相同的转换应用于测试集.但是,转换的结果是一个numpy数组而不是pandas数据框.如果我们想要将输出恢复为pandas数据帧,我们需要(或者至少这是我的方式):1)pandas.DataFrame(data = DictVectorizer转换的结果,index =原始pandas数据的索引frame,columns = DictVectorizer().get_features_names)和2)沿索引连接结果数据框,原始数据框包含数字列.这有效,但有点麻烦.

如果我们在训练和测试集中分割数据,是否有更好的方法在pandas数据帧中进行二进制单热编码?

python pandas scikit-learn categorical-data

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

相当于 pandas 'transform' 的 SQL 是什么?

假设您有以下 SQL 表:

  A  B  C  
  2  1  4       
  3  4  5     
  3  1  1    
  1  4  0       
  5  0  1 
Run Code Online (Sandbox Code Playgroud)

并且您想要添加/显示一个列,其中包含 A 列对于 B 列的每个不同值的平均值(或任何其他聚合函数)。您想要保留所有列。所以结果会是这样的:

  A  B  C    avg(A)|B
  2  1  4       2.5
  3  4  5       2.0
  3  1  1       2.5
  1  4  0       2.0
  5  0  1       5.0
Run Code Online (Sandbox Code Playgroud)

据我所知,在 pandas 中执行此操作的最佳方法是:

>>> df['avg(A)|B'] = df.groupby('B')['A'].transform('mean')
>>> df
   A  B  C  avg(A)|B
0  2  1  4       2.5
1  3  4  5       2.0
2  3  1  1       2.5
3  1 …
Run Code Online (Sandbox Code Playgroud)

mysql sql pandas psql

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