【问题标题】:Importing and analysing text data using Python 2.7使用 Python 2.7 导入和分析文本数据
【发布时间】:2015-01-09 14:37:29
【问题描述】:

我在 Python 2.7 中创建了代码,它使用 write() 方法将各种产品的销售数据保存到文本文件中。我有限的 Python 技能在下一步中遇到了困难——我需要可以从文本文件中读取这些数据的代码,然后计算并显示每个项目的平均销售数量。数据存储在文本文件中,如下所示(但如果有帮助,我可以对其进行不同的格式化)。

产品 A,30

产品 B,26

产品 C,4

产品 A,40

产品 B,18

产品 A,31

产品 B,13

产品 C,3

在谷歌搜索太久无济于事后,任何有关管理此问题的最佳方法的指针将不胜感激。提前致谢。

【问题讨论】:

  • 你谷歌了什么?这很简单。如果你想要直接使用 Python,你可以使用 csv 模块,但如果你经常处理这样的数据,pandas 是一个不错的选择。

标签: python-2.7


【解决方案1】:

您可以从文件中read,然后用空格分隔每一行(' ')。然后,只需创建一个字典,并将每个新项目附加到一个列表中,该列表是每个字母键的值,然后使用 sumlen 得到平均值。

示例

products = {}
with open("myfile.txt") as product_info:
    data = product_info.read().split('\n') #Split by line
    for item in data:
        _temp = item.split(' ')[1].split(',')
        if _temp[0] not in products.keys():
            products[_temp[0]] = [_temp[1]]
        else:
            products[_temp[0]] = products[_temp[0]]+[_temp[1]]

product_list = [[item, float(sum(key))/len(key)] for item, key in d.items()]
product_list.sort(key=lambda x:x[0])

for item in product_list:
    print 'The average of {} is {}'.format(item[0], item[1])

【讨论】:

    【解决方案2】:
    from __future__ import division
    dict1 = {}
    dict2 = {}
    file1 = open("input.txt",'r') 
    for line in file1:
        if len(line)>2:
            data = line.split(",")      
            a,b = data[0].strip(),data[1].strip()
            if a in dict1:      
               dict1[a] = dict1[a] + int(b)
            else:
               dict1[a] = int(b) 
    
                if a in dict2:      
               dict2[a] = dict2[a] + 1
            else:
               dict2[a] = 1  
    
    
    for k,v in dict1.items():
       for m,n in dict2.items():
          if k == m:
              avg = float(v/n)       
              print "%s Average is: %0.6f"%(k,float(avg))
    

    输出:

    Product A Average is: 33.666667
    Product B Average is: 19.000000
    Product C Average is: 3.500000
    

    【讨论】:

      猜你喜欢
      • 2015-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-13
      • 2019-03-01
      • 2016-06-01
      • 2016-09-05
      相关资源
      最近更新 更多