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

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

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 上一篇学习的UITableView的创建和基础使用,当然这只是单机而已,下面我们来学习联网,额!貌似学习的有点跳,...
    繁华乱世沧桑了谁的容颜阅读 1,071评论 0 2
  • Scrapy,Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化...
    Evtion阅读 5,891评论 12 18
  • https://github.com/izzyleung/ZhihuDailyPurify/wiki/%E7%9F...
    白如白牙阅读 2,883评论 0 5
  • 1. 如果你想衡量一个女生与你的关系有多要好,一定要看她到达你们约定的地点时有没有洗头。我们的关系大概可以用“不洗...
    张作作阅读 15,953评论 22 37
  • 我知道终有一天,当时光轮转、岁月积淀,我会把那个完整的真实的我说给你听。我会走上写作的道路,是纯粹意义上的写作,不...
    千畅阅读 394评论 0 0