图书馆数据预处理:
1、由于表的字段都是中文,为了后续处理的方便性,首先将表的字段全部重命名为英文。 2、对于索书号而言,图书的类型主要由索书号的首字母来决定,因此这里将对索书号进行字符串分割,只保留索书号的首字符。 3、分组获取不同学生借书数量的多少,便于对学生借书行为进行分析。
字段重命名:
df = pd.read_csv('data.csv') print df.head() # ----------------- # 字段重命名,重命名为英文名 # ----------------- df.columns = ['', 'read_num', 'read_name', 'read_sex', 'book', 'book_id', 'read_unit', 'read_class'] # 重命名 print df.head()划分索书号:
import pandas as pd """ 划分索书号,获取索书号前两位,分组,获取每个学生的借书数量 """ pf = pd.read_csv('data_english.csv', encoding='gbk') print pf.head() print '---------------------------------' """ 获取书目索引号的首位 """ book_id = pf.pop('book_id') # 使用pop()函数获取这一列,由于这一列需要修改,所以需要进行删除 # book_id = pf['book_id'].copy() book_id = book_id.str[:1] print book_id print type(book_id) print '----------------------------------' """ 重新插入书目列 """ pf.insert(5, 'book_id', book_id) print pf.head() print '----------------------------------'分组统计借书数量:
""" 插入一列num全为1 """ pf['num'] = 1 print pf.head() print '----------------------------------' # for row in len(book_id): # print """ 按学号分组操作 """ book = pf[['read_num', 'num']].copy() print book # book_counts = book.groupby('read_num').aggregate(sum) book_counts = book.groupby('read_num').agg('sum') # print book_counts # 获得每个学生借书数量的多少 book_counts = book_counts.reset_index() # 索引转换为列表 print book_counts print '----------------------------------' data = pd.merge(pf, book_counts, on=['read_num'], how='left') # pandas csv表左连接 # print data对业务上的数据分析,也是首次开始学习,如果分析的不对,也请提点一下,想法很重要,所以这也是基于自己现有的想法进行分析处理,在这个数据分析的流程上,在业务逻辑上,有任何建议都希望给予提点,谢谢!