小编Grr*_*Grr的帖子

Python:Pandas pd.read_excel给出ImportError:安装xlrd> = 0.9.0以支持Excel

我正在尝试.xlsx用熊猫阅读,但得到以下错误:

data = pd.read_excel(low_memory=False, io="DataAnalysis1/temp1.xlsx").fillna(value=0) 

Traceback (most recent call last):
  File "/Users/Vineeth/PycharmProjects/DataAnalysis1/try1.py", line 9, in <module>
    data = pd.read_excel(low_memory=False, io="DataAnalysis1/temp1.xlsx").fillna(value=0)
  File "/Users/Vineeth/venv/lib/python2.7/site-packages/pandas/util/_decorators.py", line 118, in wrapper
    return func(*args, **kwargs)
  File "/Users/Vineeth/venv/lib/python2.7/site-packages/pandas/io/excel.py", line 230, in read_excel
    io = ExcelFile(io, engine=engine)
  File "/Users/Vineeth/venv/lib/python2.7/site-packages/pandas/io/excel.py", line 263, in __init__
    raise ImportError(err_msg)
ImportError: Install xlrd >= 0.9.0 for Excel support
Run Code Online (Sandbox Code Playgroud)

我也试过了

data = pd.read_excel("DataAnalysis1/temp1.xlsx", low_memory=False).fillna(value=0)
Run Code Online (Sandbox Code Playgroud)

我仍然得到同样的错误.

背景:我正在尝试提取带有多个工作表的excel文件作为数据帧的字典.我安装了xlrd版本0.9.0和最新版本(1.1.0),但我仍然得到相同的错误.谢谢!

python excel python-2.7 pandas

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

从ubuntu卸载mongoDB

我在我的ubuntu 14.04 64位系统上按照Ubuntu安装MongoDB Community Edition中的命令安装了MongoDB 3.0.1 ,我安装了Robomongo接口来使用它.

当我尝试使用Robomongo连接MongoDB时,我收到授权失败的错误.我发现添加对SCRAM-SHA-1身份验证(MongoDB 3.0+)的支持,这解释了Robomongo 0.8.5不完全支持MongoDB 3.0.X.

作为回应,我想删除MongoDB 3.0.1并安装MongoDB 2.2.

我尝试了以下命令:

 apt-get remove --purge mongodb
Run Code Online (Sandbox Code Playgroud)

并且

apt-get autoremove --purge mongodb
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,我都收到以下错误:

"无法打开锁定文件/ var/lib/dpkg/lock - open(13:权限被拒绝)E:无法锁定管理目录(/ var/lib/dpkg /),你是root用户吗?"

任何帮助,将不胜感激.

ubuntu mongodb robo3t

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

Sklearn train_test_split; 保留训练集中列的唯一值

有没有办法用于sklearn.model_selection.train_test_split保留训练集中特定列的所有唯一值.

让我举一个例子.我所知道的最常见的矩阵分解问题是在Netflix ChallengeMovielens数据集中预测用户的电影评级.现在这个问题并不是真正围绕任何单一的矩阵分解方法,但在可能性范围内,有一个组只能对已知的用户和项目组合进行预测.

因此,在Movielens 100k中,我们有943个独特用户和1682个独特电影.如果我们train_test_split甚至使用高train_size比率(比如0.9),那么独特用户和电影的数量就不一样了.这提出了一个问题,因为我提到的一组方法无法为电影或未经过培训的用户预测0.这是我的意思的一个例子.

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split

ml = pd.read_csv('ml-100k/u.data', sep='\t', names=['User_id', 'Item_id', 'Rating', 'ts'])
ml.head()   
   User_id  Item_id Rating         ts
0      196      242      3  881250949
1      186      302      3  891717742
2       22      377      1  878887116
3      244       51      2  880606923
4      166      346      1  886397596
ml.User_id.unique().size
943
ml.Item_id.unique().size
1682
utrain, utest, itrain, itest, rtrain, rtest = train_test_split(ml, train_size=0.9)
np.unique(utrain).size
943 …
Run Code Online (Sandbox Code Playgroud)

python numpy pandas scikit-learn matrix-factorization

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

用它的完整路径激活conda环境

通常,我们使用命令激活conda环境:

source activate env_name
Run Code Online (Sandbox Code Playgroud)

但是,有可能用它的完整路径激活conda环境吗?例如:

source (fullpath)/bin/activate
Run Code Online (Sandbox Code Playgroud)

当我这样做时,它会激活anaconda的默认环境,即根环境.

python python-3.x anaconda conda

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

使用pandas返回hdf文件中所有数据集的列表

这可能是一个愚蠢的问题,但我还没有在熊猫文档或其他地方找到答案.在之前已经提出了同样的问题.但唯一的答案是看看大熊猫文档,正如我所说的那样,没有提供这个问题的答案.

我希望能够构建一个包含多个数据集的hdf文件.一旦关闭了这个hdf,我希望能够列出其中包含的每个数据集.例如:

import pandas as pd
import numpy as np

store = pd.HDFStore('test.h5')
df1 = pd.DataFrame(np.random.randn(10,2), columns=list('AB')
df2 = pd.DataFrame(np.random.randn(10,2), columns=list('AB')
store['df1'] = df1
store['df2'] = df2
print(store)
Run Code Online (Sandbox Code Playgroud)

返回:

<class 'pandas.io.pytables.HDFStore'>
File path: test.h5
/df1           frame          (shape->[10,2])
/df2           frame          (shape->[10,2])
Run Code Online (Sandbox Code Playgroud)

但是,如果您关闭hdf store.close()然后尝试使用pd.read_hdf()以下错误返回它:

ValueError: key must be provided when HDF contains multiple datasets.
Run Code Online (Sandbox Code Playgroud)

有没有办法返回所有这些数据集的列表?

在此先感谢您的帮助!

python pandas hdf

10
推荐指数
1
解决办法
2541
查看次数

这个月的第一个日期的日期如何?

我有一个带有索引列=的pandas DataFrame date.

输入:

            value
date    
1986-01-31  22.93
1986-02-28  15.46
Run Code Online (Sandbox Code Playgroud)

我想把日期定在那个月的第一天

输出:

            value
date    
1986-01-01  22.93
1986-02-01  15.46
Run Code Online (Sandbox Code Playgroud)

我尝试了什么:

df.index.floor('M')
ValueError: <MonthEnd> is a non-fixed frequency
Run Code Online (Sandbox Code Playgroud)

这可能是因为df是由 df = df.resample("M").sum()(此代码的输出是问题开头的输入)生成的

我也试过了df = df.resample("M", convention='start').sum().但是,它不起作用.

我知道在R中,很容易打电话floor(date, 'M').

python numpy date pandas

9
推荐指数
5
解决办法
5357
查看次数

PySpark:具有多个输出的功能

我正在尝试使用"链接时"功能.换句话说,我想获得两个以上的输出.

我尝试在Excel中使用连接IF函数的相同逻辑:

  df.withColumn("device_id", when(col("device")=="desktop",1)).otherwise(when(col("device")=="mobile",2)).otherwise(null))
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为我无法将元组放入"其他"功能.

python apache-spark pyspark pyspark-sql

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

os.getenv 的 Python typehint 导致下游不兼容类型错误

当用于os.getenv检索环境变量时,默认行为返回Optional[str]. 这是有问题的,因为使用这些变量的任何下游方法/函数都可能被定义为str显式接受类型。是否有可接受的用法来解决此问题或强制执行str返回类型?

getenv在in typeshed的存根文件定义中,您可以发现它的getenv返回类型可以为Optional[str]或 ,Union[str, T_]具体取决于 kwarg 的使用default

目前我能看到的四个选项是:

  1. 定义任何下游操作以接受Optional[str]类型作为参数。这感觉不太正确,因为函数/方法的结构可能不符合类型的Optional意义。即该操作没有理由将特定参数设为None
  2. 使用defaultkwarg forgetenv并提供str默认值。这似乎更正确,但要求为每次使用设置一个默认值getenv。我能看到的唯一问题是这样做可能会混淆不同环境中的测试或使用。
  3. 定义某种变量检查函数。这可能是一个函数,它接受要加载的环境变量的名称,显式返回一个字符串,并在环境变量不存在时引发错误。
  4. 显式设置返回值的类型为getenvstr。我真的不喜欢这个,因为它期望环境始终被正确配置,根据我的经验,这不是一个好的假设。

下面是一个引发 mypy 错误的示例。

import os

SOME_VAR = os.getenv("SOME_VAR")


def some_func(val: str) -> None:
    print(f"Loaded env var: {val}")


some_func(SOME_VAR)
Run Code Online (Sandbox Code Playgroud)

上面引发了 mypy 错误:

错误:“some_func”的参数 1 具有不兼容的类型“Optional[str]”;预期“str”

python mypy python-typing

9
推荐指数
1
解决办法
3859
查看次数

在重新训练的例子中使用初始v4

我正在尝试调整示例重新训练脚本(https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/image_retraining/retrain.py)以使用Inception V4模型.

该脚本已经支持重新启动Inception V3(2015)以及不同版本的Mobilenet.

到目前为止我做了什么:由于脚本使用protobuf(.pb)文件而不是检查点(.ckpt),我inception_v4.pb从这里下载了:https://deepdetect.com/models/tf/inception_v4.pb .据我所知,还可以加载检查点并使用冻结图工具获取相同的文件.

然后,我使用tensorflow python工具查看了tensorboard中的图形,该工具import_pb_to_tensorboard.py可以在tensorflow github存储库中找到.从那里(纠正我,如果我没看错),我发现,resized_input_tensor_name被称为InputImage,而bottleneck_tensor_nameInceptionV4/Logits/Logits/MatMulbottleneck_tensor_size1001.

有了这些信息,我尝试create_model_info(architecture)通过添加以下内容来调整重新训练脚本的功能:

    elif architecture == 'inception_v4':
        data_url = 'http://download.tensorflow.org/models/image/imagenet/inception-2015-12-05.tgz' #this won't make any difference
        bottleneck_tensor_name = 'InceptionV4/Logits/Logits/MatMul'
        bottleneck_tensor_size = 1001
        input_width = 299
        input_height = 299
        input_depth = 3
        resized_input_tensor_name = 'InputImage'
        model_file_name = 'inception_v4.pb'
        input_mean = 128
        input_std = 128

我使用以下命令运行脚本:

python retrain.py --architecture=inception_v4 --bottleneck_dir=test2/bottlenecks --model_dir=inception_v4 --summaries_dir=test2/summaries/basic --output_graph=test2/graph_flowers.pb --output_labels=test2/labels_flowers.txt …

python tensorflow

8
推荐指数
1
解决办法
3810
查看次数

在烧瓶登录当前用户中设置属性以供以后访问

我试图找出一种方法来为网站上的每个用户存储推荐,以便在用户登录时可以收集一次推荐,并且在用户对新内容进行评分之前不需要更新。

我认为这样做的一个好方法是将推荐存储在 User 类中,但是当我稍后尝试访问此属性时,这些值似乎不再存在。为了使这个问题更加复杂,我发现从查看current_user地址更改。

示例用户类:

class User(UserMixin):
    def __init__(self, user_doc):
        self.username = user_doc['Username']
        self.userid = user_doc['User Id']
        self.recommendations = []

    def get_recs(self):
        self.recommendations = app.config['MODEL'].predict_all(self.userid)
Run Code Online (Sandbox Code Playgroud)

示例views.py:

@APP.route('/', methods=['GET'])
def index():
    """Render the homepage."""
    if current_user.is_authenticated:
        if current_user.recommendations == []:
            current_user.get_recs()
    return render_template('index.html')

@APP.route('/recommend', methods=['POST', 'GET'])
@login_required
def recommend():
    recs = get_recommendations(current_user)
    return render_template('recommend.html', recs=recs[:10])
Run Code Online (Sandbox Code Playgroud)

如果我登录并浏览主页,current_user.recommendations就会按预期填写。但是,如果我然后导航到/recommend并放置一个断点,然后recs = get_recommendations(current_user)我发现它又current_user.recommendations是一个空列表。这是预期的行为current_user吗?如果是这样,存储用户属性以防止重复计算的正确方法是什么。

在此先感谢您的帮助。

编辑

显然我没有足够彻底地解释我的问题,它似乎类似于How to user g user global in flask …

python flask flask-login

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