《利用Python进行数据分析学习笔记》学习笔记(二)

2017-09-16  本文已影响0人  卜地锦

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'}]

from pandas import DataFrame, Series

frame = DataFrame(records, columns =['name','follower_count','answer_count','articles_count','headline'] )

#使用columns关键字指定数据中的一部分键,只传入这一部分的数据

frame

表格看起来就比字典形式的清晰多了,但是我还是不满意,我想把列索引换成中文的。

frame_1 = frame.rename(columns = {'name':'用户', 'follower_count':'粉丝', 'answer_count':'答题', 'articles_count':'专栏文章', 'headline':'个人简介'})

frame_1

很好,列索引符合我的要求了。但是行索引是从0开始的,试着改一下,从1开始。花了不少功夫,没找到能简洁的解决问题的方案,只有类似于刚才改列索引的办法。

于是我尝试着增加一个列,并将这一列指定为行索引。

frame_1['序号'] = range(1,11)

frame_2 = frame_1.set_index('序号')

frame_2

不行,序号自起一行,太丑了

没找到方案,暂时只能是这样吧。

上一篇下一篇

猜你喜欢

热点阅读