图书馆的数据是一年的数据,一年以来,每个学生的借书情况就可以清洗的展示出来,不同学生对于图书的需求也是不同的,那么学生借书的热度如何呢?这里就可以通过计算每个学生的借书数量,来分析一年以来学生的借书情况。
# -*-coding:utf-8-*-
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
""" 图形化展示借书数量的多少 """
data = pd.read_csv('new_data.csv', encoding='gbk') # 读取数据集
print data # 数据集
""" 删除book列 """
# del data['book']
# print data
""" copy()某些列 """
data = data[['read_num', 'read_name', 'num_y']] # num_y 每个学生的借书数量,提取新的数据集,保存到data中
print data
data = data.drop_duplicates() # 去除重复行
data = data.sort_values(by='num_y', ascending=True) # 按照借书数量进行排序,递增排序
# data.sort_index(num_y)
print data
print type(data)
data['num_num'] = 1 # 增加一列num_num,全部赋值为1,用于临时计算不同借书数量的人数
print '---------------------------'
""" 计算不同借书数量的人数,就是指借一年来借了50本书的有多少人,借了100本书的有多少人 """
book = data[['num_y', 'num_num']]
print book
print type(book)
# book['num_num'] = 1
# book = data['num_y']
# print book # 不同学生的借书数量
book = book.groupby('num_y').agg('sum')
book = book.reset_index() # 索引转换为列表
print book
print '------------------------------------'
""" 作图 """
x = list(book['num_y']) # 横轴表示:一年来,借书数量
y = list(book['num_num']) # 纵轴表示,借同数量的书的人数
print 'x=', x
print type(x)
print len(x)
print 'y=', y
print type(y)
print len(y)
print '-------------------------------'
""" X轴 借书数量,Y轴 借书人数,图中展示了借书数量小于50的时候,借书人数的多少 """
""" 直方图 """
import seaborn as sns
sns.set_style('darkgrid')
bar_plot = sns.barplot(x=book['num_y'][:50], y=book['num_num'][:50], palette="muted", order=book["num_y"][:50].tolist())
plt.xticks(rotation=0) # rotation=90 是将X轴垂直化,rotation=0 水平化
plt.show()
图形展示的是借书数量大于50的学生数量分布情况: