簡體   English   中英

使用python進行數據管理和繪圖

[英]Data management and graphing with python

因此,我需要瀏覽一個包含某些視頻游戲信息的csv文件,並根據游戲的用戶得分創建一個新變量,這是我的代碼:

#Imports
import pandas
import numpy as np
import matplotlib.pyplot as plt

data = pandas.read_csv("Data Collections/metacritic_games_2016_11.csv",     encoding='latin-1')
data['year'] = pandas.DatetimeIndex(data['release']).year
data = data[data["year"] >= 2000]

rating = []
for index, row in data.iterrows():
if row['user_score'] >= 7.5:
    rating.append("Good")
elif row['user_score'] >= 6.5:
    rating.append("Average")
elif row['user_score'] >= 0:
    rating.append("Bad")

data["new_rating"] = pandas.Series(rating)

year = 2000
index = 0
while year != 2016:
vals = data[data["year"] == year]["new_rating"].value_counts()
plt.bar(index, vals["Bad"], color='#494953')
plt.bar(index, vals["Average"], color='#6A7EFC', bottom=vals["Bad"])
plt.bar(index, vals["Good"], color='#FF5656', bottom=vals["Average"] + vals["Bad"])
index += 1
year += 1

plt.show()

但是我不斷收到錯誤消息:

if row['user_score'] >= 7.5:
TypeError: '>=' not supported between instances of 'str' and 'float'

我不確定在這里做什么。 任何幫助表示贊賞

由於某種原因, user_score列中的數字之一被視為字符串。 假設它不是像"seventeen"這樣的值,則可以使用

data['user_score'] = data['user_score'].astype(float)

我還建議您替換用於創建rating列的代碼。 代替這個:

rating = []
for index, row in data.iterrows():
if row['user_score'] >= 7.5:
    rating.append("Good")
elif row['user_score'] >= 6.5:
    rating.append("Average")
elif row['user_score'] >= 0:
    rating.append("Bad")

data["new_rating"] = pandas.Series(rating)

您應該執行以下操作:

group_boundaries = [0, 6.5, 7.5, inf]
group_labels = ['bad', 'average', 'good']

data['rating'] = pd.cut(data['user_score'], 
                        bins = group_boundaries, 
                        labels=group_labels)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM