小编Opt*_*esh的帖子

在matplotlib条形图上添加值标签

我被困在一些感觉应该相对容易的事情上.我下面的代码是基于我正在研究的更大项目的示例.我没有理由发布所有细节,所以请接受我带来的数据结构.

基本上,我正在创建一个条形图,我只是想弄清楚如何在条形图上添加值标签(在条形图的中心,或者在它上面).一直在寻找网络上的样本,但没有成功实现我自己的代码.我相信解决方案要么是'text',要么是'annotate',但是我:a)不知道使用哪一个(一般来说,还没弄清楚何时使用哪个).b)无法看到要么呈现价值标签.非常感谢您的帮助,我的代码如下.提前致谢!

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
pd.set_option('display.mpl_style', 'default') 
%matplotlib inline

# Bring some raw data.
frequencies = [6, 16, 75, 160, 244, 260, 145, 73, 16, 4, 1]

# In my original code I create a series and run on that, 
# so for consistency I create a series from the list.
freq_series = pd.Series.from_array(frequencies)

x_labels = [108300.0, 110540.0, 112780.0, 115020.0, 117260.0, 119500.0, 
            121740.0, 123980.0, 126220.0, 128460.0, 130700.0]

# Plot the figure. …
Run Code Online (Sandbox Code Playgroud)

python data-visualization matplotlib python-2.7 pandas

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

ExcelFile与 pandas中的read_excel

我正潜入大熊猫并进行实验.至于从Excel文件中读取数据.我想知道使用ExcelFile和read_excel有什么区别.两者似乎都有效(尽管语法略有不同,正如预期的那样),文档同时支持这两种语法.在这两种情况下,文档都描述了相同的方法:"将Excel表读入DataFrame"和"将Excel表读入pandas DataFrame".(read_excelexcel_file的文档)

我在这里看到的答案是,使用其中任何一个,没有解决差异.此外,谷歌搜索没有产生讨论此问题的结果.

WRT我的测试,这看起来相当:

path = "test/dummydata.xlsx"
xl = pd.ExcelFile(path)
df = xl.parse("dummydata")  # sheet name
Run Code Online (Sandbox Code Playgroud)

path = "test/dummydata.xlsx" 
df = pd.io.excel.read_excel(path, sheetname=0)
Run Code Online (Sandbox Code Playgroud)

除了后者为我节省一条线的事实,两者之间是否存在差异,是否有理由使用其中任何一个?

谢谢!

python excel pandas

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

活动单元作为公式的输入

我想知道我是否可以使用活动单元格,我的意思是在给定时间用鼠标点击后,在给定时间"突出显示"的单元格作为函数中的参数.

例如,我创建了一个加权平均值为3个权重的表:列标题中给出了w1(请参阅下面的文件),行标题中给出了w2,w3对w1和w2进行了补充.

我想要做的是让表格外的单元格显示当选择表格中的单元格时平均得到的权重.

例如:截图:http://imgur.com/emmBH5S/

文件可以在这里找到:https://drive.google.com/file/d/0B_7-00fdslR7Tm11ODRVS296ckk/

这里我们看到单元格K12是活动的,并且对于K12 w1 = 0.2,w2 = 0.15,因此,上面权重表(第3-4行)中的单元格根据活动单元格中的权重得到适当的值.(当然我手动创建这个用于说明目的)

有没有办法做到这一点?如果可能,最好没有VBA找不到任何非常有用的东西......

提前致谢!一个

excel vba excel-vba excel-formula excel-2010

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

使用for循环从字典中删除项目

如果密钥的值低于某个阈值,我正试图从字典中删除项目.举个简单的例子我的意思是:

my_dict = {'blue': 1, 'red': 2, 'yellow': 3, 'green': 4}

for color in my_dict:
    threshold_value = 3
    if my_dict[color] < threshold_value:
        del my_dict[color]

print(my_dict)
Run Code Online (Sandbox Code Playgroud)

现在,我收到一个RuntimeError: dictionary changed size during iteration错误.没有什么大惊喜.我发布这个问题的原因是:

  1. 找出是否有一个优雅的解决方案,不需要创建一个新的字典(只包含值> =阈值的键).

  2. 试着理解Python的基本原理.我给自己读的方法是:"转到第一个键.该键的值是<x?如果是 - del这个键:值项目并继续字典中的下一个键,如果没有 - 继续下一个键没有做任何事情".换句话说,历史上发生在以前的键上的事情不应该影响我下一步的去向.无论过去如何,我都期待着接下来的项目.我知道这很有趣(有些人可能会说愚蠢,我会给你这个)但是Python对这个循环的"思考方式"是什么?为什么不起作用?Python如何大声读出它?只是想更好地理解语言......

python iteration dictionary python-2.7

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

对列表进行排序不会产生正确的结果

这里的python问题:

我正在运行一个排序函数来按日期排序一些数据,并得到不正确的输出.我准备了我的代码的简短版本,其中包含一些示例数据以显示错误(完整代码无趣,完整的实际数据是专有的).

这是代码:

import operator

mylist = [['CustomerID_12345', 'TransactionID_1001', '12/31/2012'],
['CustomerID_12345', 'TransactionID_1002', '3/12/2013'],
['CustomerID_12345', 'TransactionID_1003', '1/7/2013'],
['CustomerID_12345', 'TransactionID_1004', '12/31/2012']]


sorted_list = sorted(mylist, key=operator.itemgetter(2))


print type(mylist)
print len(mylist)

for i in mylist:
    print i

print ""        # just for a line break for convenience

for i in sorted_list:
    print i
Run Code Online (Sandbox Code Playgroud)

输出是:

<type 'list'>
4
['CustomerID_12345', 'TransactionID_1001', '12/31/2012']
['CustomerID_12345', 'TransactionID_1002', '3/12/2013']
['CustomerID_12345', 'TransactionID_1003', '1/7/2013']
['CustomerID_12345', 'TransactionID_1004', '12/31/2012']

['CustomerID_12345', 'TransactionID_1003', '1/7/2013']
['CustomerID_12345', 'TransactionID_1001', '12/31/2012']
['CustomerID_12345', 'TransactionID_1004', '12/31/2012']
['CustomerID_12345', 'TransactionID_1002', '3/12/2013']
Run Code Online (Sandbox Code Playgroud)

第一个块是原始数据,第二个块是输出.由于我尝试按日期排序,因此很容易看出排序无法正常工作.

有人可以帮助解释错误并建议如何纠正它吗?提前致谢 :)

python sorting operator-keyword

3
推荐指数
2
解决办法
143
查看次数

将元组作为值附加到字典中的现有键

我有一个列表列表,每个列表中有 3 个项目(为了示例):产品类型、产品颜色、产品数量。

我想做的是创建一个字典,其中每种产品类型都是键,颜色和数量是值。也就是说,我正在寻找的是这样的结构:

键1:(元组1),(元组2),...

或者

key1:[(元组1),(元组2),...]

正如您所知,问题是您无法真正将元组作为值附加到字典中的键。

这是一个简单的例子:

my_list = [["ball","red",2],["ball","blue",5],["ball","green",7],["shirt","large",5],["shirt","medium",9],["shirt","small",11]]

inventory_dict = {}

for item in my_list:
    if item[0] not in inventory_dict:
        inventory_dict[item[0]] = (item[1],item[2])
    else:
        inventory_dict[item[0]].append((item[1],item[2]))
Run Code Online (Sandbox Code Playgroud)

当我尝试做类似的事情时:

my_list = [["ball","red",2],["ball","blue",5],["ball","green",7],["shirt","large",5],["shirt","medium",9],["shirt","small",11]]

inventory_dict = {}

for item in my_list:
    my_tuple = (item[1],) + tuple(item[2])
    if item[0] not in inventory_dict:
        inventory_dict[item[0]] = my_tuple
    else:
        inventory_dict[item[0]].append(my_tuple)
Run Code Online (Sandbox Code Playgroud)

这个答案的启发,我收到了“TypeError:'int'对象不可迭代”错误。

当我尝试将 my_tuple 替换为:

my_tuple = list((item[1],item[2]))
Run Code Online (Sandbox Code Playgroud)

受这个答案的启发,我得到了一个我无法使用的结果,其形式为:

{'ball': ['red', 2, ['blue', 5], ['green', 7]],
 'shirt': ['large', 5, ['medium', 9], ['small', 11]]} …
Run Code Online (Sandbox Code Playgroud)

python dictionary tuples list python-2.7

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

为什么这里的循环不会更快结束1次迭代?

我一直在使用Codecademy进入python,现在正在使用LearnStreet进行审阅和练习.这让我退缩了 - 以下代码:

def run():
    count = 1
    while count <= 10:
        print count        
        count += 1
    return count
print run()
Run Code Online (Sandbox Code Playgroud)

返回从1到11的所有数字.我认为它应该返回从1到10的所有数字.为什么循环打印时count == 11?while表示只有在计数不大于10时执行块.

python loops while-loop

0
推荐指数
1
解决办法
75
查看次数

写了一个函数来确定一个数字是否为正整数,并为负数返回True

我定义了以下函数来测试输入是否为正int.我打算使用eval(raw_input("...")),这就是为什么try-except部分在那里:

def is_ok(x):           # checks if x is a positive integer
    is_int = False
    is_pos = False
    try:
        if type(eval(x)) == int:
            is_int = True
            if x > 0:
                is_pos = True
            else:
                pass
        else:
            pass

    except NameError:
        is_int = False
        print "not even a number!"

    return is_int, is_pos 
Run Code Online (Sandbox Code Playgroud)

如果我尝试传递一个正整数,它将返回True,如预期的那样.它返回False,False和非数字的错误消息.

但是,对于负数,它仍然返回True以检查它是否为正数.例如,在函数后添加:

is_int, is_pos = is_ok("-9")

print is_int, is_pos
Run Code Online (Sandbox Code Playgroud)

正在运行的打印:真实

无法理解为什么会这样,并且会爱你的帮助.即使有更有效的方法来实现这一点,我仍然想了解为什么它产生True True.谢谢!

(这有点跟进:Python:我如何分配2个值,我从一个带有1个输入的函数返回作为函数外部的值?)

python exception-handling return function

0
推荐指数
1
解决办法
3832
查看次数

有没有办法使用逗号为数千格式化数字,而不将int转换为字符串?

当打印长整数时,我想添加逗号来"分离成千上万".问题是,我不想将int转换为字符串.在SO中有一些问题表明:

a = 1234567
print "The number is %s but it's converted to a string" %'{:,d}'.format(a)
Run Code Online (Sandbox Code Playgroud)

====>数字是1,342,424,242,但它被转换为字符串

我一直在寻找一种不需要转换为字符串的解决方案.例如,当我想以百分比显示数字时:

b = 0.1234
print "The Norwegian Blue prefers kippin' on it's back! %0.2f%%" % (b*100)
Run Code Online (Sandbox Code Playgroud)

====>挪威蓝更喜欢kippin'!12.34%

无论如何要做类似的事情,只能用逗号分隔?谢谢!

编辑:为了更好地解释自己,我的意思是用逗号表示数字,类似于你用%标记表示百分比的方式,在点之后只有2位小数.您不会更改数字,也不会将其转换为字符串,只会操纵显示/显示的方式.这就是我想要达到的目标.

编辑2:我不明白这里的负面情绪.我提出了一种方法来讨论某些问题并询问是否可以用不同的方式完成,这与我给出的一个例子更相似.在搜索了相当多的东西之后,我到达了这两个例子.这可能是一个菜鸟问题,但至少我是单独去做,并在向社区发表讲话之前寻找解决方案.除了不知道答案之外,不确定我做错了什么.Tnx用于阅读.

python int formatting number-formatting python-2.7

0
推荐指数
1
解决办法
7532
查看次数

如何仅按小数排序列表?

我想用十进制数对数字列表进行排序,而不管小数点左边的数字.例如,如果:

some_list = [5.43, 12.01, 10.23, 3.33]
Run Code Online (Sandbox Code Playgroud)

然后排序列表应该是:

some_list_sorted = [12.01, 10.23, 3.33, 5.43]
Run Code Online (Sandbox Code Playgroud)

可以这样做吗?

python sorting floating-point list python-2.7

-2
推荐指数
1
解决办法
590
查看次数