从一个数据集开始,开启学pandas之旅。
推荐大家一个网站:http://blog.csdn.net/u010945683/article/details/45344121。
我下载的是一个有关书籍的数据集,包含三个文件:(1)BX-Users.csv;(2)BX-Books.csv;(3)BX-Book-Ratings.csv
代码编辑器是jupyter notebook(很好的ipyhon的编辑器)
分析数据步骤如下:
(1)读取数据及合并数据:
#读取数据
book_rate=pd.read_csv('BX-Book-Ratings.csv', usecols=[0,1,2],sep=';', encoding='latin-1' )
users=pd.read_csv('BX-Users.csv' , sep=';', encoding='latin-1')
book_detail=pd.read_csv('BX-Books.csv',sep=';',usecols=[0,1,2,3,4],encoding='latin-1')
#合并数据
book_detail_rate=pd.merge(book_detail,book_rate)
book=pd.merge(book_detail_rate,users)
结果是:
(2)选取前几行数据,用head()函数:
book.head(5)
结果是:
(3)选取数据的尾几行数据:用tail()函数:
book.tail(5)
结果是:
(4)计算计数,均值,标准方差等,用describe()函数:
book.describe()
结果是:
(5)选出评价最高的前10本书:
book_rate_10=book.groupby('Book-Title').agg({'Book-Rating':[np.size,np.mean]})
select_book=book_rate_10['Book-Rating']['size']>500
book_rate=book_rate_10[select_book].sort_values([('Book-Rating','mean')],ascending=False)[:10]
结果是:
(6)选出在2002年出版的书名,出版人,时间的前1列:
df=pd.DataFrame(book)
group=df.groupby('Year-Of-Publication')
book2002=group.get_group("2002")
book_2002=book2002[['Book-Title','Year-Of-Publication','Publisher']]
结果是:
(7)选择在2002年出版的评分在前5名的书名:
book_5=book.groupby('ISBN').agg({'Book-Rating':[np.size,np.mean]})
book5=book_5.sort_values([('Book-Rating','mean')],ascending=False)[:5]
book.set_index('ISBN',inplace=True)
book_new=pd.DataFrame(book)
book5_1=book_new.loc[book5.index].groupby(['Book-Title','Year-Of-Publication']).size()
结果是:
(8)保存结果:
book.to_csv('index2.csv')