python小项目一:NBA比赛数据分析 标签: python数据分析csv 2017-06-10 20:18 29人阅读 评论(0)
该项目来源于实验楼,我这里只是记录下自己做完项目的笔记和总结(实验楼是py2的代码,我则是用的py3)。
项目目的:通过分析之前的比赛数据,得到每个队伍的状态的特征表达,利用机器学习训练回归模型,从而对新的比赛进行预测。
为了掌握并实现这个项目,需了解一下几个问题:
1. 如何读取文件夹中的数据?
答:这个项目的数据存储在.csv文件中,因此使用pandas库中的read_csv函数进行读取操作。在读取时给出文件名的路径即可(可用+运算符连接不同的字符串)。读入的数据为Dataframe类型的数据,这是pandas中特有的数据类型,近似理解为可用字符串作为索引的二维数据。
2. 如何对Dataframe类型的数据进行操作?
我们需要把读入的数据转化为训练模型(回归模型)所需要的特征。因此需要把三个不同文件中读入的数据进行裁剪(对应pandas.DataFrame.drop方法)、合并(对应pandas.merge)及其按照team作为索引(pandas.DataFrame.set_index)。
drop方法:删除行:df.drop('列标', axis=1)
删除列:df.drop('行标')
merge方法:这个方法让我产生了“还能有这种操作”的感慨。
新数据 = pd.merge(数据1,数据2,how=' ' ,on=' ')
参数how指出合并后的数据keys是数据1还是数据2说了算,可取值为left、right、outer、inner;而on指出keys,即按哪个键值合并。
set_index方法:set_index(keys, drop= True, append = False)
指出用于索引的keys。
3. 处理Dataframe数据,需要遍历,如何做?访问这个数据中的某一个元素,如何做?
Pandas.DataFrame.iterrows()方法可以返回生成器,以(index,series)对dataframe类型进行循环。
注意DataFrame数据[键值]这样来访问数据是不行的。正确方法是df.loc[索引]可以取出这一索引index对应的series。(注意是.loc[])。而取出的series可以用iteritems来做迭代,从而取出每一个元素。
4.建立好特征后,通过使用回归模型来得到训练的预测模型?
使用skleran,三步走:实例化一个回归模型model = ... , model.fit(X, y),model.predict()。
这个项目预测得到概率,因此用logistic模型,预测时使用predict_proba()方法即可得到概率。
5.文章写入时遇到TypeError: a bytes-like object is required, not str错误。
该错误往往是open()打开文件是,使用二进制模式,之后如果是使用了str()函数,就会出现该错误。这里改为用'w'模式打开就好。
我编写的相关代码可以在http://download.csdn.net/detail/u010103202/9866840处下载。