Python:从数据集中收集数据

时间:2017-10-10 07:48:56

标签: python database dataset

我是一个非常新的Python,我正在尝试分析数据集中的数据。

假设我有一个特定食品品尝的数据集。例如:

{'review/appearance': 2.5, 'food/style': 'Cook', 'review/taste': 1.5, 'food/type': 'Vegetable' .... }
{'review/appearance': 5.0, 'food/style': 'Instant', 'review/taste': 4.5, 'food/type': 'Noodle' ....}

我有50,000个这样的条目,我试图通过输入以下代码找到有多少种不同类型的食物:

data = list(parseData("/Path/to/my/dataset/file"))

def feature(datum):
  feat = [datum['food/type']]
  return feat

#making a separate list of food style
foodStyle = [feature(d) for d in data]

newFoodStyle = list()

#converting the foodStyle list to just one list
for sublist in foodStyle:
  for item in sublist:
     newFoodStyle.append(item)

uniqueFood = Counter(newFoodStyle) #using counter variable to count how many unique food type there are

a = "There are %s types of food" % (len(uniqueFood))
print a

#print uniqueFood gives me 'Counter({'Noodle': 4352, 'Vegetable': 3412 and etc})

现在我得到了多少不同的食物类型, 我需要很多帮助来计算数据集中每种独特食物的“评论/品味”的平均值。

我知道有50个条目,所以我只想分析最受评论的食物前10名。

我是否需要循环每个条目并查找每个uniqueFood变量并为每个uniqueFood创建一个单独的列表,例如Noodle = list []并附加以下“review / taste”号码?

非常感谢任何有关如何解决此问题的提示或想法。

2 个答案:

答案 0 :(得分:0)

您还可以使用dict类型:

data = list(parseData("/Path/to/my/dataset/file"))

food_items = dict()
for datum in data:
    food_style = datum['food/type']
    if food_style in food_items:
        food_items[food_style].append(datum)
    else:
        food_items[food_style] = [datum]

# unique food list
unique_food = food_items.keys()


a = "There are %s types of food" % (len(unique_food))
print a

# avg 'review/taste'
avg = {
    key: sum(map(lambda i: i.get('review/taste', 0), values)) / float(len(values))
    for key, values in food_items.items()
    if values
}

答案 1 :(得分:0)

我建议将您的数据转换为pandas数据帧,然后您可以非常轻松地进行排序和平均 - 例如:

import pandas as pd

datalist = []

dict1 = {'review/appearance': 2.5, 'food/style': 'Cook', 'review/taste': 1.5, 'food/type': 'Vegetable'}
dict2 = {'review/appearance': 5.0, 'food/style': 'Instant', 'review/taste': 4.5, 'food/type': 'Noodle'}
dict2 = {'review/appearance': 3.0, 'food/style': 'Instant', 'review/taste': 3.5, 'food/type': 'Noodle'}

datalist.append(dict1)
datalist.append(dict2)

resultsDF = pd.DataFrame(datalist)

print(resultsDF.head())

AverageResults = resultsDF.groupby(["food/style","food/type"])["review/taste"].mean().reset_index()
print(AverageResults)

结果:

  food/style  food/type  review/taste
0       Cook  Vegetable           1.5
1    Instant     Noodle           3.5