1.工具和环境
语言: python3.6
系统:win7 64位
数据库:MongoDB
IDE:IPython notebook
2.用pandas进行计数
这里用的数据是一小部分知乎用户数据。
import pymongo
client = pymongo.MongoClient('localhost') #连接数据库
db = client.zhihu_follows #指定数据库'zhihu_follows'
collection = db.follows #指定集合'follows'
results = collection.find().sort('follower_count',pymongo.DESCENDING)
#将集合中的数据以'follower_count'键对应的值进行降序排序,
#如果要升序排行,第二个参数改为pymongo.ASCENDING
records = [result for result in results[:10]] #列表推导式,取出前10项
上面的代码用于读取数据,运行后,records对象是一组字典组成的列表。
数据比较长,我就贴出来两条,形式如下:
[{'_id': 'zhang-jia-wei',
'answer_count': 3060,
'articles_count': 732,
'avatar_url': 'https://pic2.zhimg.com/424c70919_is.jpg',
'avatar_url_template': 'https://pic2.zhimg.com/424c70919_{size}.jpg',
'badge': [{'description': '优秀回答者',
'topics': [{'avatar_url': 'https://pic3.zhimg.com/cf0156d3a_is.jpg',
'excerpt': '文学是语言的艺术,包括戏剧、诗歌、小说、散文等,是文化的重要组成部分。',
'id': '19556423',
'introduction': '文学是语言的艺术,包括戏剧、诗歌、小说、散文等,是文化的重要组成分。',
'name': '文学',
'type': 'topic',
'url': 'http://www.zhihu.com/api/v4/topics/19556423'}],
'type': 'best_answerer'}],
'follower_count': 1430376,
'gender': 1,
'headline': '公众号:张佳玮写字的地方',
'id': 'f9de84865e3e8455a09af78bfe4d1da5',
'is_advertiser': False,
'is_followed': False,
'is_following': False,
'is_org': False,
'name': '张佳玮',
'offset': 4220,
'type': 'people',
'updateTime': datetime.datetime(2017, 9, 16, 10, 56, 13, 941000),
'url': 'http://www.zhihu.com/api/v4/people/f9de84865e3e8455a09af78bfe4d1da5',
'url_token': 'zhang-jia-wei',
'user_type': 'people'},
{'_id': 'kaifulee',
'answer_count': 107,
'articles_count': 2,
'avatar_url': 'https://pic1.zhimg.com/c104d6f24_is.jpg',
'avatar_url_template': 'https://pic1.zhimg.com/c104d6f24_{size}.jpg',
'badge': [{'description': '创新工场 董事长', 'type': 'identity'}],
'follower_count': 1015169,
'gender': -1,
'headline': '',
'id': '043ff01e5d03c529c268d50f388012c2',
'is_advertiser': False,
'is_followed': False,
'is_following': False,
'is_org': False,
'name': '李开复',
'offset': 4300,
'type': 'people',
'updateTime': datetime.datetime(2017, 9, 16, 10, 16, 39, 447000),
'url': 'http://www.zhihu.com/api/v4/people/043ff01e5d03c529c268d50f388012c2',
'url_token': 'kaifulee',
'user_type': 'people'}]
framefrom pandas import DataFrame, Series
frame = DataFrame(records, columns =['name','follower_count','answer_count','articles_count','headline'] )
#使用columns关键字指定数据中的一部分键,只传入这一部分的数据
表格看起来就比字典形式的清晰多了,但是我还是不满意,我想把列索引换成中文的。
frame_1frame_1 = frame.rename(columns = {'name':'用户', 'follower_count':'粉丝', 'answer_count':'答题', 'articles_count':'专栏文章', 'headline':'个人简介'})
很好,列索引符合我的要求了。但是行索引是从0开始的,试着改一下,从1开始。花了不少功夫,没找到能简洁的解决问题的方案,只有类似于刚才改列索引的办法。
于是我尝试着增加一个列,并将这一列指定为行索引。
frame_2frame_1['序号'] = range(1,11)
frame_2 = frame_1.set_index('序号')
不行,序号自起一行,太丑了
没找到方案,暂时只能是这样吧。
网友评论